({\n // @fb-only: ...restOptions,\n // @fb-only: default: optionsDefault,\n // @fb-only: scopeRules_APPEND_ONLY_READ_THE_DOCS,\n // @fb-only: });\n } else {\n return baseAtom(_objectSpread(_objectSpread({}, restOptions), {}, {\n default: optionsDefault\n }));\n }\n}\n\nfunction atomWithFallback(options) {\n var base = atom(_objectSpread(_objectSpread({}, options), {}, {\n default: DEFAULT_VALUE$7,\n persistence_UNSTABLE: options.persistence_UNSTABLE === undefined ? undefined : _objectSpread(_objectSpread({}, options.persistence_UNSTABLE), {}, {\n validator: function validator(storedValue) {\n return storedValue instanceof DefaultValue$2 ? storedValue : Recoil_nullthrows(options.persistence_UNSTABLE).validator(storedValue, DEFAULT_VALUE$7);\n }\n }),\n // TODO Hack for now.\n // flowlint-next-line unclear-type: off\n effects_UNSTABLE: options.effects_UNSTABLE\n }));\n var sel = Recoil_selector({\n key: \"\".concat(options.key, \"__withFallback\"),\n get: function get(_ref64) {\n var _get = _ref64.get;\n\n var baseValue = _get(base);\n\n return baseValue instanceof DefaultValue$2 ? options.default : baseValue;\n },\n set: function set(_ref65, newValue) {\n var _set = _ref65.set;\n return _set(base, newValue);\n },\n dangerouslyAllowMutability: options.dangerouslyAllowMutability\n });\n setConfigDeletionHandler$1(sel.key, getConfigDeletionHandler$2(options.key));\n return sel;\n}\n\nvar Recoil_atom = atom;\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @emails oncall+recoil\n * \n * @format\n */\n\nvar MapCache = /*#__PURE__*/function () {\n function MapCache(options) {\n _classCallCheck(this, MapCache);\n\n var _options$mapKey;\n\n _defineProperty(this, \"_map\", void 0);\n\n _defineProperty(this, \"_keyMapper\", void 0);\n\n this._map = new Map();\n this._keyMapper = (_options$mapKey = options === null || options === void 0 ? void 0 : options.mapKey) !== null && _options$mapKey !== void 0 ? _options$mapKey : function (v) {\n return v;\n };\n }\n\n _createClass(MapCache, [{\n key: \"size\",\n value: function size() {\n return this._map.size;\n }\n }, {\n key: \"has\",\n value: function has(key) {\n return this._map.has(this._keyMapper(key));\n }\n }, {\n key: \"get\",\n value: function get(key) {\n return this._map.get(this._keyMapper(key));\n }\n }, {\n key: \"set\",\n value: function set(key, val) {\n this._map.set(this._keyMapper(key), val);\n }\n }, {\n key: \"delete\",\n value: function _delete(key) {\n this._map.delete(this._keyMapper(key));\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this._map.clear();\n }\n }]);\n\n return MapCache;\n}();\n\nvar Recoil_MapCache = {\n MapCache: MapCache\n};\nvar Recoil_MapCache_1 = Recoil_MapCache.MapCache;\nvar Recoil_MapCache$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n MapCache: Recoil_MapCache_1\n});\nvar LRUCache$2 = Recoil_LRUCache$1.LRUCache;\nvar MapCache$1 = Recoil_MapCache$1.MapCache;\nvar defaultPolicy$1 = {\n equality: 'reference',\n eviction: 'none',\n maxSize: Infinity\n};\n\nfunction cacheFromPolicy() {\n var _ref66 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultPolicy$1,\n _ref66$equality = _ref66.equality,\n equality = _ref66$equality === void 0 ? defaultPolicy$1.equality : _ref66$equality,\n _ref66$eviction = _ref66.eviction,\n eviction = _ref66$eviction === void 0 ? defaultPolicy$1.eviction : _ref66$eviction,\n _ref66$maxSize = _ref66.maxSize,\n maxSize = _ref66$maxSize === void 0 ? defaultPolicy$1.maxSize : _ref66$maxSize;\n\n var valueMapper = getValueMapper$1(equality);\n var cache = getCache(eviction, maxSize, valueMapper);\n return cache;\n}\n\nfunction getValueMapper$1(equality) {\n switch (equality) {\n case 'reference':\n return function (val) {\n return val;\n };\n\n case 'value':\n return function (val) {\n return Recoil_stableStringify(val);\n };\n }\n\n throw Recoil_err(\"Unrecognized equality policy \".concat(equality));\n}\n\nfunction getCache(eviction, maxSize, mapKey) {\n switch (eviction) {\n case 'keep-all':\n // $FlowFixMe[method-unbinding]\n return new MapCache$1({\n mapKey: mapKey\n });\n\n case 'lru':\n // $FlowFixMe[method-unbinding]\n return new LRUCache$2({\n mapKey: mapKey,\n maxSize: Recoil_nullthrows(maxSize)\n });\n\n case 'most-recent':\n // $FlowFixMe[method-unbinding]\n return new LRUCache$2({\n mapKey: mapKey,\n maxSize: 1\n });\n }\n\n throw Recoil_err(\"Unrecognized eviction policy \".concat(eviction));\n}\n\nvar Recoil_cacheFromPolicy = cacheFromPolicy;\nvar setConfigDeletionHandler$2 = Recoil_Node.setConfigDeletionHandler; // Process scopeRules to handle any entries which are functions taking parameters\n// prettier-ignore\n// @fb-only: function mapScopeRules(\n// @fb-only: scopeRules?: ParameterizedScopeRules
,\n// @fb-only: param: P,\n// @fb-only: ): ScopeRules | void {\n// @fb-only: return scopeRules?.map(rule =>\n// @fb-only: Array.isArray(rule)\n// @fb-only: ? rule.map(entry => (typeof entry === 'function' ? entry(param) : entry))\n// @fb-only: : rule,\n// @fb-only: );\n// @fb-only: }\n\n/*\nA function which returns an atom based on the input parameter.\n\nEach unique parameter returns a unique atom. E.g.,\n\n const f = atomFamily(...);\n f({a: 1}) => an atom\n f({a: 2}) => a different atom\n\nThis allows components to persist local, private state using atoms. Each\ninstance of the component may have a different key, which it uses as the\nparameter for a family of atoms; in this way, each component will have\nits own atom not shared by other instances. These state keys may be composed\ninto children's state keys as well.\n*/\n\nfunction atomFamily(options) {\n var _options$cachePolicyF, _options$cachePolicyF2;\n\n var atomCache = Recoil_cacheFromPolicy({\n equality: (_options$cachePolicyF = (_options$cachePolicyF2 = options.cachePolicyForParams_UNSTABLE) === null || _options$cachePolicyF2 === void 0 ? void 0 : _options$cachePolicyF2.equality) !== null && _options$cachePolicyF !== void 0 ? _options$cachePolicyF : 'value',\n eviction: 'keep-all'\n }); // Simple atomFamily implementation to cache individual atoms based\n // on the parameter value equality.\n\n return function (params) {\n var _stableStringify;\n\n var cachedAtom = atomCache.get(params);\n\n if (cachedAtom != null) {\n return cachedAtom;\n }\n\n var cachePolicyForParams_UNSTABLE = options.cachePolicyForParams_UNSTABLE,\n atomOptions = _objectWithoutProperties(options, _excluded3);\n\n var newAtom = Recoil_atom(_objectSpread(_objectSpread({}, atomOptions), {}, {\n key: \"\".concat(options.key, \"__\").concat((_stableStringify = Recoil_stableStringify(params)) !== null && _stableStringify !== void 0 ? _stableStringify : 'void'),\n default: typeof options.default === 'function' ? // The default was parameterized\n // Flow doesn't know that T isn't a function, so we need to case to any\n options.default(params) // flowlint-line unclear-type:off\n : // Default may be a static value, promise, or RecoilValue\n options.default,\n retainedBy_UNSTABLE: typeof options.retainedBy_UNSTABLE === 'function' ? options.retainedBy_UNSTABLE(params) : options.retainedBy_UNSTABLE,\n effects_UNSTABLE: typeof options.effects_UNSTABLE === 'function' ? options.effects_UNSTABLE(params) : options.effects_UNSTABLE // prettier-ignore\n // @fb-only: scopeRules_APPEND_ONLY_READ_THE_DOCS: mapScopeRules(\n // @fb-only: options.scopeRules_APPEND_ONLY_READ_THE_DOCS,\n // @fb-only: params,\n // @fb-only: ),\n\n }));\n atomCache.set(params, newAtom);\n setConfigDeletionHandler$2(newAtom.key, function () {\n atomCache.delete(params);\n });\n return newAtom;\n };\n}\n\nvar Recoil_atomFamily = atomFamily;\nvar setConfigDeletionHandler$3 = Recoil_Node.setConfigDeletionHandler; // Keep in mind the parameter needs to be serializable as a cahche key\n// using Recoil_stableStringify\n// Add a unique index to each selector in case the cache implementation allows\n// duplicate keys based on equivalent stringified parameters\n\nvar nextIndex = 0;\n/* eslint-disable no-redeclare */\n// Return a function that returns members of a family of selectors of the same type\n// E.g.,\n//\n// const s = selectorFamily(...);\n// s({a: 1}) => a selector\n// s({a: 2}) => a different selector\n//\n// By default, the selectors are distinguished by distinct values of the\n// parameter based on value equality, not reference equality. This allows using\n// object literals or other equivalent objects at callsites to not create\n// duplicate cache entries. This behavior may be overridden with the\n// cacheImplementationForParams option.\n\nfunction selectorFamily(options) {\n var _options$cachePolicyF, _options$cachePolicyF2;\n\n var selectorCache = Recoil_cacheFromPolicy({\n equality: (_options$cachePolicyF = (_options$cachePolicyF2 = options.cachePolicyForParams_UNSTABLE) === null || _options$cachePolicyF2 === void 0 ? void 0 : _options$cachePolicyF2.equality) !== null && _options$cachePolicyF !== void 0 ? _options$cachePolicyF : 'value',\n eviction: 'keep-all'\n });\n return function (params) {\n var _stableStringify;\n\n var cachedSelector = selectorCache.get(params);\n\n if (cachedSelector != null) {\n return cachedSelector;\n }\n\n var myKey = \"\".concat(options.key, \"__selectorFamily/\").concat((_stableStringify = Recoil_stableStringify(params, {\n // It is possible to use functions in parameters if the user uses\n // a cache with reference equality thanks to the incrementing index.\n allowFunctions: true\n })) !== null && _stableStringify !== void 0 ? _stableStringify : 'void', \"/\").concat(nextIndex++); // Append index in case values serialize to the same key string\n\n var myGet = function myGet(callbacks) {\n return options.get(params)(callbacks);\n };\n\n var myCachePolicy = options.cachePolicy_UNSTABLE;\n var retainedBy = typeof options.retainedBy_UNSTABLE === 'function' ? options.retainedBy_UNSTABLE(params) : options.retainedBy_UNSTABLE;\n var newSelector;\n\n if (options.set != null) {\n var set = options.set;\n\n var mySet = function mySet(callbacks, newValue) {\n return set(params)(callbacks, newValue);\n };\n\n newSelector = Recoil_selector({\n key: myKey,\n get: myGet,\n set: mySet,\n cachePolicy_UNSTABLE: myCachePolicy,\n dangerouslyAllowMutability: options.dangerouslyAllowMutability,\n retainedBy_UNSTABLE: retainedBy\n });\n } else {\n newSelector = Recoil_selector({\n key: myKey,\n get: myGet,\n cachePolicy_UNSTABLE: myCachePolicy,\n dangerouslyAllowMutability: options.dangerouslyAllowMutability,\n retainedBy_UNSTABLE: retainedBy\n });\n }\n\n selectorCache.set(params, newSelector);\n setConfigDeletionHandler$3(newSelector.key, function () {\n selectorCache.delete(params);\n });\n return newSelector;\n };\n}\n/* eslint-enable no-redeclare */\n\n\nvar Recoil_selectorFamily = selectorFamily; // flowlint-next-line unclear-type:off\n\nvar constantSelector = Recoil_selectorFamily({\n key: '__constant',\n get: function get(constant) {\n return function () {\n return constant;\n };\n },\n cachePolicyForParams_UNSTABLE: {\n equality: 'reference'\n }\n}); // Function that returns a selector which always produces the\n// same constant value. It may be called multiple times with the\n// same value, based on reference equality, and will provide the\n// same selector.\n\nfunction constSelector(constant) {\n return constantSelector(constant);\n}\n\nvar Recoil_constSelector = constSelector; // flowlint-next-line unclear-type:off\n\nvar throwingSelector = Recoil_selectorFamily({\n key: '__error',\n get: function get(message) {\n return function () {\n throw Recoil_err(message);\n };\n },\n // TODO Why?\n cachePolicyForParams_UNSTABLE: {\n equality: 'reference'\n }\n}); // Function that returns a selector which always throws an error\n// with the provided message.\n\nfunction errorSelector(message) {\n return throwingSelector(message);\n}\n\nvar Recoil_errorSelector = errorSelector;\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * Wraps another recoil value and prevents writing to it.\n *\n * @emails oncall+recoil\n * \n * @format\n */\n\nfunction readOnlySelector(atom) {\n // flowlint-next-line unclear-type: off\n return atom;\n}\n\nvar Recoil_readOnlySelector = readOnlySelector;\nvar loadableWithError$3 = Recoil_Loadable$1.loadableWithError,\n loadableWithPromise$3 = Recoil_Loadable$1.loadableWithPromise,\n loadableWithValue$4 = Recoil_Loadable$1.loadableWithValue; /////////////////\n// TRUTH TABLE\n/////////////////\n// Dependencies waitForNone waitForAny waitForAll waitForAllSettled\n// [loading, loading] [Promise, Promise] Promise Promise Promise\n// [value, loading] [value, Promise] [value, Promise] Promise Promise\n// [value, value] [value, value] [value, value] [value, value] [value, value]\n//\n// [error, loading] [Error, Promise] [Error, Promise] Error Promise\n// [error, error] [Error, Error] [Error, Error] Error [error, error]\n// [value, error] [value, Error] [value, Error] Error [value, error]\n// Issue parallel requests for all dependencies and return the current\n// status if they have results, have some error, or are still pending.\n\nfunction concurrentRequests(getRecoilValue, deps) {\n var results = Array(deps.length).fill(undefined);\n var exceptions = Array(deps.length).fill(undefined);\n\n var _iterator48 = _createForOfIteratorHelper(deps.entries()),\n _step48;\n\n try {\n for (_iterator48.s(); !(_step48 = _iterator48.n()).done;) {\n var _ref69 = _step48.value;\n\n var _ref68 = _slicedToArray(_ref69, 2);\n\n var i = _ref68[0];\n var dep = _ref68[1];\n\n try {\n results[i] = getRecoilValue(dep);\n } catch (e) {\n // exceptions can either be Promises of pending results or real errors\n exceptions[i] = e;\n }\n }\n } catch (err) {\n _iterator48.e(err);\n } finally {\n _iterator48.f();\n }\n\n return [results, exceptions];\n}\n\nfunction isError(exp) {\n return exp != null && !Recoil_isPromise(exp);\n}\n\nfunction unwrapDependencies(dependencies) {\n return Array.isArray(dependencies) ? dependencies : Object.getOwnPropertyNames(dependencies).map(function (key) {\n return dependencies[key];\n });\n}\n\nfunction wrapResults(dependencies, results) {\n return Array.isArray(dependencies) ? results : // Object.getOwnPropertyNames() has consistent key ordering with ES6\n Object.getOwnPropertyNames(dependencies).reduce(function (out, key, idx) {\n return _objectSpread(_objectSpread({}, out), {}, _defineProperty2({}, key, results[idx]));\n }, {});\n}\n\nfunction wrapLoadables(dependencies, results, exceptions) {\n var output = exceptions.map(function (exception, idx) {\n return exception == null ? loadableWithValue$4(results[idx]) : Recoil_isPromise(exception) ? loadableWithPromise$3(exception) : loadableWithError$3(exception);\n });\n return wrapResults(dependencies, output);\n}\n\nfunction combineAsyncResultsWithSyncResults(syncResults, asyncResults) {\n return asyncResults.map(function (result, idx) {\n return (\n /**\n * it's important we use === undefined as opposed to == null, because the\n * resolved value of the async promise could be `null`, in which case we\n * don't want to use syncResults[idx], which would be undefined. If async\n * promise resolves to `undefined`, that's ok because `syncResults[idx]`\n * will also be `undefined`. That's a little hacky, but it works.\n */\n result === undefined ? syncResults[idx] : result\n );\n });\n} // Selector that requests all dependencies in parallel and immediately returns\n// current results without waiting.\n\n\nvar waitForNone = Recoil_selectorFamily({\n key: '__waitForNone',\n get: function get(dependencies) {\n return function (_ref70) {\n var get = _ref70.get;\n // Issue requests for all dependencies in parallel.\n var deps = unwrapDependencies(dependencies);\n\n var _concurrentRequests = concurrentRequests(get, deps),\n _concurrentRequests2 = _slicedToArray(_concurrentRequests, 2),\n results = _concurrentRequests2[0],\n exceptions = _concurrentRequests2[1]; // Always return the current status of the results; never block.\n\n\n return wrapLoadables(dependencies, results, exceptions);\n };\n },\n dangerouslyAllowMutability: true\n}); // Selector that requests all dependencies in parallel and waits for at least\n// one to be available before returning results. It will only error if all\n// dependencies have errors.\n\nvar waitForAny = Recoil_selectorFamily({\n key: '__waitForAny',\n get: function get(dependencies) {\n return function (_ref71) {\n var get = _ref71.get;\n // Issue requests for all dependencies in parallel.\n // Exceptions can either be Promises of pending results or real errors\n var deps = unwrapDependencies(dependencies);\n\n var _concurrentRequests3 = concurrentRequests(get, deps),\n _concurrentRequests4 = _slicedToArray(_concurrentRequests3, 2),\n results = _concurrentRequests4[0],\n exceptions = _concurrentRequests4[1]; // If any results are available, value or error, return the current status\n\n\n if (exceptions.some(function (exp) {\n return !Recoil_isPromise(exp);\n })) {\n return wrapLoadables(dependencies, results, exceptions);\n } // Otherwise, return a promise that will resolve when the next result is\n // available, whichever one happens to be next. But, if all pending\n // dependencies end up with errors, then reject the promise.\n\n\n return new Promise(function (resolve) {\n var _iterator49 = _createForOfIteratorHelper(exceptions.entries()),\n _step49;\n\n try {\n var _loop = function _loop() {\n var _ref72 = _step49.value;\n _ref73 = _slicedToArray(_ref72, 2);\n var i = _ref73[0];\n var exp = _ref73[1];\n\n if (Recoil_isPromise(exp)) {\n exp.then(function (result) {\n results[i] = result;\n exceptions[i] = undefined;\n resolve(wrapLoadables(dependencies, results, exceptions));\n }).catch(function (error) {\n exceptions[i] = error;\n resolve(wrapLoadables(dependencies, results, exceptions));\n });\n }\n };\n\n for (_iterator49.s(); !(_step49 = _iterator49.n()).done;) {\n var _ref73;\n\n _loop();\n }\n } catch (err) {\n _iterator49.e(err);\n } finally {\n _iterator49.f();\n }\n });\n };\n },\n dangerouslyAllowMutability: true\n}); // Selector that requests all dependencies in parallel and waits for all to be\n// available before returning a value. It will error if any dependencies error.\n\nvar waitForAll = Recoil_selectorFamily({\n key: '__waitForAll',\n get: function get(dependencies) {\n return function (_ref74) {\n var get = _ref74.get;\n // Issue requests for all dependencies in parallel.\n // Exceptions can either be Promises of pending results or real errors\n var deps = unwrapDependencies(dependencies);\n\n var _concurrentRequests5 = concurrentRequests(get, deps),\n _concurrentRequests6 = _slicedToArray(_concurrentRequests5, 2),\n results = _concurrentRequests6[0],\n exceptions = _concurrentRequests6[1]; // If all results are available, return the results\n\n\n if (exceptions.every(function (exp) {\n return exp == null;\n })) {\n return wrapResults(dependencies, results);\n } // If we have any errors, throw the first error\n\n\n var error = exceptions.find(isError);\n\n if (error != null) {\n throw error;\n } // Otherwise, return a promise that will resolve when all results are available\n\n\n return Promise.all(exceptions).then(function (exceptionResults) {\n return wrapResults(dependencies, combineAsyncResultsWithSyncResults(results, exceptionResults));\n });\n };\n },\n dangerouslyAllowMutability: true\n});\nvar waitForAllSettled = Recoil_selectorFamily({\n key: '__waitForAllSettled',\n get: function get(dependencies) {\n return function (_ref75) {\n var get = _ref75.get;\n // Issue requests for all dependencies in parallel.\n // Exceptions can either be Promises of pending results or real errors\n var deps = unwrapDependencies(dependencies);\n\n var _concurrentRequests7 = concurrentRequests(get, deps),\n _concurrentRequests8 = _slicedToArray(_concurrentRequests7, 2),\n results = _concurrentRequests8[0],\n exceptions = _concurrentRequests8[1]; // If all results are available, return the results\n\n\n if (exceptions.every(function (exp) {\n return !Recoil_isPromise(exp);\n })) {\n return wrapLoadables(dependencies, results, exceptions);\n } // Wait for all results to settle\n\n\n return Promise.all(exceptions.map(function (exp, i) {\n return Recoil_isPromise(exp) ? exp.then(function (result) {\n results[i] = result;\n exceptions[i] = undefined;\n }).catch(function (error) {\n results[i] = undefined;\n exceptions[i] = error;\n }) : null;\n })) // Then wrap them as loadables\n .then(function () {\n return wrapLoadables(dependencies, results, exceptions);\n });\n };\n },\n dangerouslyAllowMutability: true\n});\nvar noWait = Recoil_selectorFamily({\n key: '__noWait',\n get: function get(dependency) {\n return function (_ref76) {\n var get = _ref76.get;\n\n try {\n return loadableWithValue$4(get(dependency));\n } catch (exception) {\n return Recoil_isPromise(exception) ? loadableWithPromise$3(exception) : loadableWithError$3(exception);\n }\n };\n },\n dangerouslyAllowMutability: true\n});\nvar Recoil_WaitFor = {\n waitForNone: waitForNone,\n waitForAny: waitForAny,\n waitForAll: waitForAll,\n waitForAllSettled: waitForAllSettled,\n noWait: noWait\n};\nvar RecoilLoadable = Recoil_Loadable$1.RecoilLoadable;\nvar DefaultValue$3 = Recoil_Node.DefaultValue;\nvar RecoilRoot$2 = Recoil_RecoilRoot_react.RecoilRoot;\nvar isRecoilValue$5 = Recoil_RecoilValue$1.isRecoilValue;\nvar retentionZone$1 = Recoil_RetentionZone.retentionZone;\nvar freshSnapshot$2 = Recoil_Snapshot$1.freshSnapshot;\nvar useRecoilState$1 = Recoil_Hooks.useRecoilState,\n useRecoilStateLoadable$1 = Recoil_Hooks.useRecoilStateLoadable,\n useRecoilValue$1 = Recoil_Hooks.useRecoilValue,\n useRecoilValueLoadable$1 = Recoil_Hooks.useRecoilValueLoadable,\n useResetRecoilState$1 = Recoil_Hooks.useResetRecoilState,\n useSetRecoilState$1 = Recoil_Hooks.useSetRecoilState,\n useSetUnvalidatedAtomValues$1 = Recoil_Hooks.useSetUnvalidatedAtomValues;\nvar useGotoRecoilSnapshot$2 = Recoil_SnapshotHooks.useGotoRecoilSnapshot,\n useRecoilSnapshot$1 = Recoil_SnapshotHooks.useRecoilSnapshot,\n useRecoilTransactionObserver$1 = Recoil_SnapshotHooks.useRecoilTransactionObserver,\n useTransactionObservation_DEPRECATED$1 = Recoil_SnapshotHooks.useTransactionObservation_DEPRECATED;\nvar noWait$1 = Recoil_WaitFor.noWait,\n waitForAll$1 = Recoil_WaitFor.waitForAll,\n waitForAllSettled$1 = Recoil_WaitFor.waitForAllSettled,\n waitForAny$1 = Recoil_WaitFor.waitForAny,\n waitForNone$1 = Recoil_WaitFor.waitForNone;\nvar Recoil_index = {\n // Types\n DefaultValue: DefaultValue$3,\n isRecoilValue: isRecoilValue$5,\n RecoilLoadable: RecoilLoadable,\n // Recoil Root\n RecoilRoot: RecoilRoot$2,\n useRecoilBridgeAcrossReactRoots_UNSTABLE: Recoil_useRecoilBridgeAcrossReactRoots,\n // Atoms/Selectors\n atom: Recoil_atom,\n selector: Recoil_selector,\n // Convenience Atoms/Selectors\n atomFamily: Recoil_atomFamily,\n selectorFamily: Recoil_selectorFamily,\n constSelector: Recoil_constSelector,\n errorSelector: Recoil_errorSelector,\n readOnlySelector: Recoil_readOnlySelector,\n // Concurrency Helpers for Atoms/Selectors\n noWait: noWait$1,\n waitForNone: waitForNone$1,\n waitForAny: waitForAny$1,\n waitForAll: waitForAll$1,\n waitForAllSettled: waitForAllSettled$1,\n // Hooks for Atoms/Selectors\n useRecoilValue: useRecoilValue$1,\n useRecoilValueLoadable: useRecoilValueLoadable$1,\n useRecoilState: useRecoilState$1,\n useRecoilStateLoadable: useRecoilStateLoadable$1,\n useSetRecoilState: useSetRecoilState$1,\n useResetRecoilState: useResetRecoilState$1,\n useGetRecoilValueInfo_UNSTABLE: Recoil_useGetRecoilValueInfo,\n useRecoilRefresher_UNSTABLE: Recoil_useRecoilRefresher,\n // Hooks for complex operations\n useRecoilCallback: Recoil_useRecoilCallback,\n useRecoilTransaction_UNSTABLE: Recoil_useRecoilTransaction,\n // Snapshots\n useGotoRecoilSnapshot: useGotoRecoilSnapshot$2,\n useRecoilSnapshot: useRecoilSnapshot$1,\n useRecoilTransactionObserver_UNSTABLE: useRecoilTransactionObserver$1,\n useTransactionObservation_UNSTABLE: useTransactionObservation_DEPRECATED$1,\n useSetUnvalidatedAtomValues_UNSTABLE: useSetUnvalidatedAtomValues$1,\n snapshot_UNSTABLE: freshSnapshot$2,\n // Memory Management\n useRetain: Recoil_useRetain,\n retentionZone: retentionZone$1\n};\nvar Recoil_index_1 = Recoil_index.DefaultValue;\nvar Recoil_index_2 = Recoil_index.isRecoilValue;\nvar Recoil_index_3 = Recoil_index.RecoilLoadable;\nvar Recoil_index_4 = Recoil_index.RecoilRoot;\nvar Recoil_index_5 = Recoil_index.useRecoilBridgeAcrossReactRoots_UNSTABLE;\nvar Recoil_index_6 = Recoil_index.atom;\nvar Recoil_index_7 = Recoil_index.selector;\nvar Recoil_index_8 = Recoil_index.atomFamily;\nvar Recoil_index_9 = Recoil_index.selectorFamily;\nvar Recoil_index_10 = Recoil_index.constSelector;\nvar Recoil_index_11 = Recoil_index.errorSelector;\nvar Recoil_index_12 = Recoil_index.readOnlySelector;\nvar Recoil_index_13 = Recoil_index.noWait;\nvar Recoil_index_14 = Recoil_index.waitForNone;\nvar Recoil_index_15 = Recoil_index.waitForAny;\nvar Recoil_index_16 = Recoil_index.waitForAll;\nvar Recoil_index_17 = Recoil_index.waitForAllSettled;\nvar Recoil_index_18 = Recoil_index.useRecoilValue;\nvar Recoil_index_19 = Recoil_index.useRecoilValueLoadable;\nvar Recoil_index_20 = Recoil_index.useRecoilState;\nvar Recoil_index_21 = Recoil_index.useRecoilStateLoadable;\nvar Recoil_index_22 = Recoil_index.useSetRecoilState;\nvar Recoil_index_23 = Recoil_index.useResetRecoilState;\nvar Recoil_index_24 = Recoil_index.useGetRecoilValueInfo_UNSTABLE;\nvar Recoil_index_25 = Recoil_index.useRecoilRefresher_UNSTABLE;\nvar Recoil_index_26 = Recoil_index.useRecoilCallback;\nvar Recoil_index_27 = Recoil_index.useRecoilTransaction_UNSTABLE;\nvar Recoil_index_28 = Recoil_index.useGotoRecoilSnapshot;\nvar Recoil_index_29 = Recoil_index.useRecoilSnapshot;\nvar Recoil_index_30 = Recoil_index.useRecoilTransactionObserver_UNSTABLE;\nvar Recoil_index_31 = Recoil_index.useTransactionObservation_UNSTABLE;\nvar Recoil_index_32 = Recoil_index.useSetUnvalidatedAtomValues_UNSTABLE;\nvar Recoil_index_33 = Recoil_index.snapshot_UNSTABLE;\nvar Recoil_index_34 = Recoil_index.useRetain;\nvar Recoil_index_35 = Recoil_index.retentionZone;\nexport default Recoil_index;\nexport { Recoil_index_1 as DefaultValue, Recoil_index_3 as RecoilLoadable, Recoil_index_4 as RecoilRoot, Recoil_index_6 as atom, Recoil_index_8 as atomFamily, Recoil_index_10 as constSelector, Recoil_index_11 as errorSelector, Recoil_index_2 as isRecoilValue, Recoil_index_13 as noWait, Recoil_index_12 as readOnlySelector, Recoil_index_35 as retentionZone, Recoil_index_7 as selector, Recoil_index_9 as selectorFamily, Recoil_index_33 as snapshot_UNSTABLE, Recoil_index_24 as useGetRecoilValueInfo_UNSTABLE, Recoil_index_28 as useGotoRecoilSnapshot, Recoil_index_5 as useRecoilBridgeAcrossReactRoots_UNSTABLE, Recoil_index_26 as useRecoilCallback, Recoil_index_25 as useRecoilRefresher_UNSTABLE, Recoil_index_29 as useRecoilSnapshot, Recoil_index_20 as useRecoilState, Recoil_index_21 as useRecoilStateLoadable, Recoil_index_30 as useRecoilTransactionObserver_UNSTABLE, Recoil_index_27 as useRecoilTransaction_UNSTABLE, Recoil_index_18 as useRecoilValue, Recoil_index_19 as useRecoilValueLoadable, Recoil_index_23 as useResetRecoilState, Recoil_index_34 as useRetain, Recoil_index_22 as useSetRecoilState, Recoil_index_32 as useSetUnvalidatedAtomValues_UNSTABLE, Recoil_index_31 as useTransactionObservation_UNSTABLE, Recoil_index_16 as waitForAll, Recoil_index_17 as waitForAllSettled, Recoil_index_15 as waitForAny, Recoil_index_14 as waitForNone };","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*!\n * vuex v3.6.2\n * (c) 2021 Evan You\n * @license MIT\n */\nfunction applyMixin(Vue) {\n var version = Number(Vue.version.split('.')[0]);\n\n if (version >= 2) {\n Vue.mixin({\n beforeCreate: vuexInit\n });\n } else {\n // override init and inject vuex init procedure\n // for 1.x backwards compatibility.\n var _init = Vue.prototype._init;\n\n Vue.prototype._init = function (options) {\n if (options === void 0) options = {};\n options.init = options.init ? [vuexInit].concat(options.init) : vuexInit;\n\n _init.call(this, options);\n };\n }\n /**\n * Vuex init hook, injected into each instances init hooks list.\n */\n\n\n function vuexInit() {\n var options = this.$options; // store injection\n\n if (options.store) {\n this.$store = typeof options.store === 'function' ? options.store() : options.store;\n } else if (options.parent && options.parent.$store) {\n this.$store = options.parent.$store;\n }\n }\n}\n\nvar target = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {};\nvar devtoolHook = target.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\nfunction devtoolPlugin(store) {\n if (!devtoolHook) {\n return;\n }\n\n store._devtoolHook = devtoolHook;\n devtoolHook.emit('vuex:init', store);\n devtoolHook.on('vuex:travel-to-state', function (targetState) {\n store.replaceState(targetState);\n });\n store.subscribe(function (mutation, state) {\n devtoolHook.emit('vuex:mutation', mutation, state);\n }, {\n prepend: true\n });\n store.subscribeAction(function (action, state) {\n devtoolHook.emit('vuex:action', action, state);\n }, {\n prepend: true\n });\n}\n/**\n * Get the first item that pass the test\n * by second argument function\n *\n * @param {Array} list\n * @param {Function} f\n * @return {*}\n */\n\n\nfunction find(list, f) {\n return list.filter(f)[0];\n}\n/**\n * Deep copy the given object considering circular structure.\n * This function caches all nested objects and its copies.\n * If it detects circular structure, use cached copy to avoid infinite loop.\n *\n * @param {*} obj\n * @param {Array} cache\n * @return {*}\n */\n\n\nfunction deepCopy(obj, cache) {\n if (cache === void 0) cache = []; // just return if obj is immutable value\n\n if (obj === null || _typeof(obj) !== 'object') {\n return obj;\n } // if obj is hit, it is in circular structure\n\n\n var hit = find(cache, function (c) {\n return c.original === obj;\n });\n\n if (hit) {\n return hit.copy;\n }\n\n var copy = Array.isArray(obj) ? [] : {}; // put the copy into cache at first\n // because we want to refer it in recursive deepCopy\n\n cache.push({\n original: obj,\n copy: copy\n });\n Object.keys(obj).forEach(function (key) {\n copy[key] = deepCopy(obj[key], cache);\n });\n return copy;\n}\n/**\n * forEach for object\n */\n\n\nfunction forEachValue(obj, fn) {\n Object.keys(obj).forEach(function (key) {\n return fn(obj[key], key);\n });\n}\n\nfunction isObject(obj) {\n return obj !== null && _typeof(obj) === 'object';\n}\n\nfunction isPromise(val) {\n return val && typeof val.then === 'function';\n}\n\nfunction assert(condition, msg) {\n if (!condition) {\n throw new Error(\"[vuex] \" + msg);\n }\n}\n\nfunction partial(fn, arg) {\n return function () {\n return fn(arg);\n };\n} // Base data struct for store's module, package with some attribute and method\n\n\nvar Module = function Module(rawModule, runtime) {\n this.runtime = runtime; // Store some children item\n\n this._children = Object.create(null); // Store the origin module object which passed by programmer\n\n this._rawModule = rawModule;\n var rawState = rawModule.state; // Store the origin module's state\n\n this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};\n};\n\nvar prototypeAccessors = {\n namespaced: {\n configurable: true\n }\n};\n\nprototypeAccessors.namespaced.get = function () {\n return !!this._rawModule.namespaced;\n};\n\nModule.prototype.addChild = function addChild(key, module) {\n this._children[key] = module;\n};\n\nModule.prototype.removeChild = function removeChild(key) {\n delete this._children[key];\n};\n\nModule.prototype.getChild = function getChild(key) {\n return this._children[key];\n};\n\nModule.prototype.hasChild = function hasChild(key) {\n return key in this._children;\n};\n\nModule.prototype.update = function update(rawModule) {\n this._rawModule.namespaced = rawModule.namespaced;\n\n if (rawModule.actions) {\n this._rawModule.actions = rawModule.actions;\n }\n\n if (rawModule.mutations) {\n this._rawModule.mutations = rawModule.mutations;\n }\n\n if (rawModule.getters) {\n this._rawModule.getters = rawModule.getters;\n }\n};\n\nModule.prototype.forEachChild = function forEachChild(fn) {\n forEachValue(this._children, fn);\n};\n\nModule.prototype.forEachGetter = function forEachGetter(fn) {\n if (this._rawModule.getters) {\n forEachValue(this._rawModule.getters, fn);\n }\n};\n\nModule.prototype.forEachAction = function forEachAction(fn) {\n if (this._rawModule.actions) {\n forEachValue(this._rawModule.actions, fn);\n }\n};\n\nModule.prototype.forEachMutation = function forEachMutation(fn) {\n if (this._rawModule.mutations) {\n forEachValue(this._rawModule.mutations, fn);\n }\n};\n\nObject.defineProperties(Module.prototype, prototypeAccessors);\n\nvar ModuleCollection = function ModuleCollection(rawRootModule) {\n // register root module (Vuex.Store options)\n this.register([], rawRootModule, false);\n};\n\nModuleCollection.prototype.get = function get(path) {\n return path.reduce(function (module, key) {\n return module.getChild(key);\n }, this.root);\n};\n\nModuleCollection.prototype.getNamespace = function getNamespace(path) {\n var module = this.root;\n return path.reduce(function (namespace, key) {\n module = module.getChild(key);\n return namespace + (module.namespaced ? key + '/' : '');\n }, '');\n};\n\nModuleCollection.prototype.update = function update$1(rawRootModule) {\n update([], this.root, rawRootModule);\n};\n\nModuleCollection.prototype.register = function register(path, rawModule, runtime) {\n var this$1 = this;\n if (runtime === void 0) runtime = true;\n\n if (process.env.NODE_ENV !== 'production') {\n assertRawModule(path, rawModule);\n }\n\n var newModule = new Module(rawModule, runtime);\n\n if (path.length === 0) {\n this.root = newModule;\n } else {\n var parent = this.get(path.slice(0, -1));\n parent.addChild(path[path.length - 1], newModule);\n } // register nested modules\n\n\n if (rawModule.modules) {\n forEachValue(rawModule.modules, function (rawChildModule, key) {\n this$1.register(path.concat(key), rawChildModule, runtime);\n });\n }\n};\n\nModuleCollection.prototype.unregister = function unregister(path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n var child = parent.getChild(key);\n\n if (!child) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\"[vuex] trying to unregister module '\" + key + \"', which is \" + \"not registered\");\n }\n\n return;\n }\n\n if (!child.runtime) {\n return;\n }\n\n parent.removeChild(key);\n};\n\nModuleCollection.prototype.isRegistered = function isRegistered(path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n\n if (parent) {\n return parent.hasChild(key);\n }\n\n return false;\n};\n\nfunction update(path, targetModule, newModule) {\n if (process.env.NODE_ENV !== 'production') {\n assertRawModule(path, newModule);\n } // update target module\n\n\n targetModule.update(newModule); // update nested modules\n\n if (newModule.modules) {\n for (var key in newModule.modules) {\n if (!targetModule.getChild(key)) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\"[vuex] trying to add a new module '\" + key + \"' on hot reloading, \" + 'manual reload is needed');\n }\n\n return;\n }\n\n update(path.concat(key), targetModule.getChild(key), newModule.modules[key]);\n }\n }\n}\n\nvar functionAssert = {\n assert: function assert(value) {\n return typeof value === 'function';\n },\n expected: 'function'\n};\nvar objectAssert = {\n assert: function assert(value) {\n return typeof value === 'function' || _typeof(value) === 'object' && typeof value.handler === 'function';\n },\n expected: 'function or object with \"handler\" function'\n};\nvar assertTypes = {\n getters: functionAssert,\n mutations: functionAssert,\n actions: objectAssert\n};\n\nfunction assertRawModule(path, rawModule) {\n Object.keys(assertTypes).forEach(function (key) {\n if (!rawModule[key]) {\n return;\n }\n\n var assertOptions = assertTypes[key];\n forEachValue(rawModule[key], function (value, type) {\n assert(assertOptions.assert(value), makeAssertionMessage(path, key, type, value, assertOptions.expected));\n });\n });\n}\n\nfunction makeAssertionMessage(path, key, type, value, expected) {\n var buf = key + \" should be \" + expected + \" but \\\"\" + key + \".\" + type + \"\\\"\";\n\n if (path.length > 0) {\n buf += \" in module \\\"\" + path.join('.') + \"\\\"\";\n }\n\n buf += \" is \" + JSON.stringify(value) + \".\";\n return buf;\n}\n\nvar Vue; // bind on install\n\nvar Store = function Store(options) {\n var this$1 = this;\n if (options === void 0) options = {}; // Auto install if it is not done yet and `window` has `Vue`.\n // To allow users to avoid auto-installation in some cases,\n // this code should be placed here. See #731\n\n if (!Vue && typeof window !== 'undefined' && window.Vue) {\n install(window.Vue);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(Vue, \"must call Vue.use(Vuex) before creating a store instance.\");\n assert(typeof Promise !== 'undefined', \"vuex requires a Promise polyfill in this browser.\");\n assert(this instanceof Store, \"store must be called with the new operator.\");\n }\n\n var plugins = options.plugins;\n if (plugins === void 0) plugins = [];\n var strict = options.strict;\n if (strict === void 0) strict = false; // store internal state\n\n this._committing = false;\n this._actions = Object.create(null);\n this._actionSubscribers = [];\n this._mutations = Object.create(null);\n this._wrappedGetters = Object.create(null);\n this._modules = new ModuleCollection(options);\n this._modulesNamespaceMap = Object.create(null);\n this._subscribers = [];\n this._watcherVM = new Vue();\n this._makeLocalGettersCache = Object.create(null); // bind commit and dispatch to self\n\n var store = this;\n var ref = this;\n var dispatch = ref.dispatch;\n var commit = ref.commit;\n\n this.dispatch = function boundDispatch(type, payload) {\n return dispatch.call(store, type, payload);\n };\n\n this.commit = function boundCommit(type, payload, options) {\n return commit.call(store, type, payload, options);\n }; // strict mode\n\n\n this.strict = strict;\n var state = this._modules.root.state; // init root module.\n // this also recursively registers all sub-modules\n // and collects all module getters inside this._wrappedGetters\n\n installModule(this, state, [], this._modules.root); // initialize the store vm, which is responsible for the reactivity\n // (also registers _wrappedGetters as computed properties)\n\n resetStoreVM(this, state); // apply plugins\n\n plugins.forEach(function (plugin) {\n return plugin(this$1);\n });\n var useDevtools = options.devtools !== undefined ? options.devtools : Vue.config.devtools;\n\n if (useDevtools) {\n devtoolPlugin(this);\n }\n};\n\nvar prototypeAccessors$1 = {\n state: {\n configurable: true\n }\n};\n\nprototypeAccessors$1.state.get = function () {\n return this._vm._data.$$state;\n};\n\nprototypeAccessors$1.state.set = function (v) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, \"use store.replaceState() to explicit replace store state.\");\n }\n};\n\nStore.prototype.commit = function commit(_type, _payload, _options) {\n var this$1 = this; // check object-style commit\n\n var ref = unifyObjectStyle(_type, _payload, _options);\n var type = ref.type;\n var payload = ref.payload;\n var options = ref.options;\n var mutation = {\n type: type,\n payload: payload\n };\n var entry = this._mutations[type];\n\n if (!entry) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(\"[vuex] unknown mutation type: \" + type);\n }\n\n return;\n }\n\n this._withCommit(function () {\n entry.forEach(function commitIterator(handler) {\n handler(payload);\n });\n });\n\n this._subscribers.slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .forEach(function (sub) {\n return sub(mutation, this$1.state);\n });\n\n if (process.env.NODE_ENV !== 'production' && options && options.silent) {\n console.warn(\"[vuex] mutation type: \" + type + \". Silent option has been removed. \" + 'Use the filter functionality in the vue-devtools');\n }\n};\n\nStore.prototype.dispatch = function dispatch(_type, _payload) {\n var this$1 = this; // check object-style dispatch\n\n var ref = unifyObjectStyle(_type, _payload);\n var type = ref.type;\n var payload = ref.payload;\n var action = {\n type: type,\n payload: payload\n };\n var entry = this._actions[type];\n\n if (!entry) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(\"[vuex] unknown action type: \" + type);\n }\n\n return;\n }\n\n try {\n this._actionSubscribers.slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .filter(function (sub) {\n return sub.before;\n }).forEach(function (sub) {\n return sub.before(action, this$1.state);\n });\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\"[vuex] error in before action subscribers: \");\n console.error(e);\n }\n }\n\n var result = entry.length > 1 ? Promise.all(entry.map(function (handler) {\n return handler(payload);\n })) : entry[0](payload);\n return new Promise(function (resolve, reject) {\n result.then(function (res) {\n try {\n this$1._actionSubscribers.filter(function (sub) {\n return sub.after;\n }).forEach(function (sub) {\n return sub.after(action, this$1.state);\n });\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\"[vuex] error in after action subscribers: \");\n console.error(e);\n }\n }\n\n resolve(res);\n }, function (error) {\n try {\n this$1._actionSubscribers.filter(function (sub) {\n return sub.error;\n }).forEach(function (sub) {\n return sub.error(action, this$1.state, error);\n });\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\"[vuex] error in error action subscribers: \");\n console.error(e);\n }\n }\n\n reject(error);\n });\n });\n};\n\nStore.prototype.subscribe = function subscribe(fn, options) {\n return genericSubscribe(fn, this._subscribers, options);\n};\n\nStore.prototype.subscribeAction = function subscribeAction(fn, options) {\n var subs = typeof fn === 'function' ? {\n before: fn\n } : fn;\n return genericSubscribe(subs, this._actionSubscribers, options);\n};\n\nStore.prototype.watch = function watch(getter, cb, options) {\n var this$1 = this;\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof getter === 'function', \"store.watch only accepts a function.\");\n }\n\n return this._watcherVM.$watch(function () {\n return getter(this$1.state, this$1.getters);\n }, cb, options);\n};\n\nStore.prototype.replaceState = function replaceState(state) {\n var this$1 = this;\n\n this._withCommit(function () {\n this$1._vm._data.$$state = state;\n });\n};\n\nStore.prototype.registerModule = function registerModule(path, rawModule, options) {\n if (options === void 0) options = {};\n\n if (typeof path === 'string') {\n path = [path];\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n assert(path.length > 0, 'cannot register the root module by using registerModule.');\n }\n\n this._modules.register(path, rawModule);\n\n installModule(this, this.state, path, this._modules.get(path), options.preserveState); // reset store to update getters...\n\n resetStoreVM(this, this.state);\n};\n\nStore.prototype.unregisterModule = function unregisterModule(path) {\n var this$1 = this;\n\n if (typeof path === 'string') {\n path = [path];\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n this._modules.unregister(path);\n\n this._withCommit(function () {\n var parentState = getNestedState(this$1.state, path.slice(0, -1));\n Vue.delete(parentState, path[path.length - 1]);\n });\n\n resetStore(this);\n};\n\nStore.prototype.hasModule = function hasModule(path) {\n if (typeof path === 'string') {\n path = [path];\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n return this._modules.isRegistered(path);\n};\n\nStore.prototype.hotUpdate = function hotUpdate(newOptions) {\n this._modules.update(newOptions);\n\n resetStore(this, true);\n};\n\nStore.prototype._withCommit = function _withCommit(fn) {\n var committing = this._committing;\n this._committing = true;\n fn();\n this._committing = committing;\n};\n\nObject.defineProperties(Store.prototype, prototypeAccessors$1);\n\nfunction genericSubscribe(fn, subs, options) {\n if (subs.indexOf(fn) < 0) {\n options && options.prepend ? subs.unshift(fn) : subs.push(fn);\n }\n\n return function () {\n var i = subs.indexOf(fn);\n\n if (i > -1) {\n subs.splice(i, 1);\n }\n };\n}\n\nfunction resetStore(store, hot) {\n store._actions = Object.create(null);\n store._mutations = Object.create(null);\n store._wrappedGetters = Object.create(null);\n store._modulesNamespaceMap = Object.create(null);\n var state = store.state; // init all modules\n\n installModule(store, state, [], store._modules.root, true); // reset vm\n\n resetStoreVM(store, state, hot);\n}\n\nfunction resetStoreVM(store, state, hot) {\n var oldVm = store._vm; // bind store public getters\n\n store.getters = {}; // reset local getters cache\n\n store._makeLocalGettersCache = Object.create(null);\n var wrappedGetters = store._wrappedGetters;\n var computed = {};\n forEachValue(wrappedGetters, function (fn, key) {\n // use computed to leverage its lazy-caching mechanism\n // direct inline function use will lead to closure preserving oldVm.\n // using partial to return function with only arguments preserved in closure environment.\n computed[key] = partial(fn, store);\n Object.defineProperty(store.getters, key, {\n get: function get() {\n return store._vm[key];\n },\n enumerable: true // for local getters\n\n });\n }); // use a Vue instance to store the state tree\n // suppress warnings just in case the user has added\n // some funky global mixins\n\n var silent = Vue.config.silent;\n Vue.config.silent = true;\n store._vm = new Vue({\n data: {\n $$state: state\n },\n computed: computed\n });\n Vue.config.silent = silent; // enable strict mode for new vm\n\n if (store.strict) {\n enableStrictMode(store);\n }\n\n if (oldVm) {\n if (hot) {\n // dispatch changes in all subscribed watchers\n // to force getter re-evaluation for hot reloading.\n store._withCommit(function () {\n oldVm._data.$$state = null;\n });\n }\n\n Vue.nextTick(function () {\n return oldVm.$destroy();\n });\n }\n}\n\nfunction installModule(store, rootState, path, module, hot) {\n var isRoot = !path.length;\n\n var namespace = store._modules.getNamespace(path); // register in namespace map\n\n\n if (module.namespaced) {\n if (store._modulesNamespaceMap[namespace] && process.env.NODE_ENV !== 'production') {\n console.error(\"[vuex] duplicate namespace \" + namespace + \" for the namespaced module \" + path.join('/'));\n }\n\n store._modulesNamespaceMap[namespace] = module;\n } // set state\n\n\n if (!isRoot && !hot) {\n var parentState = getNestedState(rootState, path.slice(0, -1));\n var moduleName = path[path.length - 1];\n\n store._withCommit(function () {\n if (process.env.NODE_ENV !== 'production') {\n if (moduleName in parentState) {\n console.warn(\"[vuex] state field \\\"\" + moduleName + \"\\\" was overridden by a module with the same name at \\\"\" + path.join('.') + \"\\\"\");\n }\n }\n\n Vue.set(parentState, moduleName, module.state);\n });\n }\n\n var local = module.context = makeLocalContext(store, namespace, path);\n module.forEachMutation(function (mutation, key) {\n var namespacedType = namespace + key;\n registerMutation(store, namespacedType, mutation, local);\n });\n module.forEachAction(function (action, key) {\n var type = action.root ? key : namespace + key;\n var handler = action.handler || action;\n registerAction(store, type, handler, local);\n });\n module.forEachGetter(function (getter, key) {\n var namespacedType = namespace + key;\n registerGetter(store, namespacedType, getter, local);\n });\n module.forEachChild(function (child, key) {\n installModule(store, rootState, path.concat(key), child, hot);\n });\n}\n/**\n * make localized dispatch, commit, getters and state\n * if there is no namespace, just use root ones\n */\n\n\nfunction makeLocalContext(store, namespace, path) {\n var noNamespace = namespace === '';\n var local = {\n dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n\n if (process.env.NODE_ENV !== 'production' && !store._actions[type]) {\n console.error(\"[vuex] unknown local action type: \" + args.type + \", global type: \" + type);\n return;\n }\n }\n\n return store.dispatch(type, payload);\n },\n commit: noNamespace ? store.commit : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n\n if (process.env.NODE_ENV !== 'production' && !store._mutations[type]) {\n console.error(\"[vuex] unknown local mutation type: \" + args.type + \", global type: \" + type);\n return;\n }\n }\n\n store.commit(type, payload, options);\n }\n }; // getters and state object must be gotten lazily\n // because they will be changed by vm update\n\n Object.defineProperties(local, {\n getters: {\n get: noNamespace ? function () {\n return store.getters;\n } : function () {\n return makeLocalGetters(store, namespace);\n }\n },\n state: {\n get: function get() {\n return getNestedState(store.state, path);\n }\n }\n });\n return local;\n}\n\nfunction makeLocalGetters(store, namespace) {\n if (!store._makeLocalGettersCache[namespace]) {\n var gettersProxy = {};\n var splitPos = namespace.length;\n Object.keys(store.getters).forEach(function (type) {\n // skip if the target getter is not match this namespace\n if (type.slice(0, splitPos) !== namespace) {\n return;\n } // extract local getter type\n\n\n var localType = type.slice(splitPos); // Add a port to the getters proxy.\n // Define as getter property because\n // we do not want to evaluate the getters in this time.\n\n Object.defineProperty(gettersProxy, localType, {\n get: function get() {\n return store.getters[type];\n },\n enumerable: true\n });\n });\n store._makeLocalGettersCache[namespace] = gettersProxy;\n }\n\n return store._makeLocalGettersCache[namespace];\n}\n\nfunction registerMutation(store, type, handler, local) {\n var entry = store._mutations[type] || (store._mutations[type] = []);\n entry.push(function wrappedMutationHandler(payload) {\n handler.call(store, local.state, payload);\n });\n}\n\nfunction registerAction(store, type, handler, local) {\n var entry = store._actions[type] || (store._actions[type] = []);\n entry.push(function wrappedActionHandler(payload) {\n var res = handler.call(store, {\n dispatch: local.dispatch,\n commit: local.commit,\n getters: local.getters,\n state: local.state,\n rootGetters: store.getters,\n rootState: store.state\n }, payload);\n\n if (!isPromise(res)) {\n res = Promise.resolve(res);\n }\n\n if (store._devtoolHook) {\n return res.catch(function (err) {\n store._devtoolHook.emit('vuex:error', err);\n\n throw err;\n });\n } else {\n return res;\n }\n });\n}\n\nfunction registerGetter(store, type, rawGetter, local) {\n if (store._wrappedGetters[type]) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(\"[vuex] duplicate getter key: \" + type);\n }\n\n return;\n }\n\n store._wrappedGetters[type] = function wrappedGetter(store) {\n return rawGetter(local.state, // local state\n local.getters, // local getters\n store.state, // root state\n store.getters // root getters\n );\n };\n}\n\nfunction enableStrictMode(store) {\n store._vm.$watch(function () {\n return this._data.$$state;\n }, function () {\n if (process.env.NODE_ENV !== 'production') {\n assert(store._committing, \"do not mutate vuex store state outside mutation handlers.\");\n }\n }, {\n deep: true,\n sync: true\n });\n}\n\nfunction getNestedState(state, path) {\n return path.reduce(function (state, key) {\n return state[key];\n }, state);\n}\n\nfunction unifyObjectStyle(type, payload, options) {\n if (isObject(type) && type.type) {\n options = payload;\n payload = type;\n type = type.type;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof type === 'string', \"expects string as the type, but found \" + _typeof(type) + \".\");\n }\n\n return {\n type: type,\n payload: payload,\n options: options\n };\n}\n\nfunction install(_Vue) {\n if (Vue && _Vue === Vue) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('[vuex] already installed. Vue.use(Vuex) should be called only once.');\n }\n\n return;\n }\n\n Vue = _Vue;\n applyMixin(Vue);\n}\n/**\n * Reduce the code which written in Vue.js for getting the state.\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} states # Object's item can be a function which accept state and getters for param, you can do something for state and getters in it.\n * @param {Object}\n */\n\n\nvar mapState = normalizeNamespace(function (namespace, states) {\n var res = {};\n\n if (process.env.NODE_ENV !== 'production' && !isValidMap(states)) {\n console.error('[vuex] mapState: mapper parameter must be either an Array or an Object');\n }\n\n normalizeMap(states).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedState() {\n var state = this.$store.state;\n var getters = this.$store.getters;\n\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapState', namespace);\n\n if (!module) {\n return;\n }\n\n state = module.context.state;\n getters = module.context.getters;\n }\n\n return typeof val === 'function' ? val.call(this, state, getters) : state[val];\n }; // mark vuex getter for devtools\n\n\n res[key].vuex = true;\n });\n return res;\n});\n/**\n * Reduce the code which written in Vue.js for committing the mutation\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} mutations # Object's item can be a function which accept `commit` function as the first param, it can accept another params. You can commit mutation and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\n\nvar mapMutations = normalizeNamespace(function (namespace, mutations) {\n var res = {};\n\n if (process.env.NODE_ENV !== 'production' && !isValidMap(mutations)) {\n console.error('[vuex] mapMutations: mapper parameter must be either an Array or an Object');\n }\n\n normalizeMap(mutations).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedMutation() {\n var args = [],\n len = arguments.length;\n\n while (len--) {\n args[len] = arguments[len];\n } // Get the commit method from store\n\n\n var commit = this.$store.commit;\n\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);\n\n if (!module) {\n return;\n }\n\n commit = module.context.commit;\n }\n\n return typeof val === 'function' ? val.apply(this, [commit].concat(args)) : commit.apply(this.$store, [val].concat(args));\n };\n });\n return res;\n});\n/**\n * Reduce the code which written in Vue.js for getting the getters\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} getters\n * @return {Object}\n */\n\nvar mapGetters = normalizeNamespace(function (namespace, getters) {\n var res = {};\n\n if (process.env.NODE_ENV !== 'production' && !isValidMap(getters)) {\n console.error('[vuex] mapGetters: mapper parameter must be either an Array or an Object');\n }\n\n normalizeMap(getters).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val; // The namespace has been mutated by normalizeNamespace\n\n val = namespace + val;\n\n res[key] = function mappedGetter() {\n if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {\n return;\n }\n\n if (process.env.NODE_ENV !== 'production' && !(val in this.$store.getters)) {\n console.error(\"[vuex] unknown getter: \" + val);\n return;\n }\n\n return this.$store.getters[val];\n }; // mark vuex getter for devtools\n\n\n res[key].vuex = true;\n });\n return res;\n});\n/**\n * Reduce the code which written in Vue.js for dispatch the action\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} actions # Object's item can be a function which accept `dispatch` function as the first param, it can accept anthor params. You can dispatch action and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\n\nvar mapActions = normalizeNamespace(function (namespace, actions) {\n var res = {};\n\n if (process.env.NODE_ENV !== 'production' && !isValidMap(actions)) {\n console.error('[vuex] mapActions: mapper parameter must be either an Array or an Object');\n }\n\n normalizeMap(actions).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedAction() {\n var args = [],\n len = arguments.length;\n\n while (len--) {\n args[len] = arguments[len];\n } // get dispatch function from store\n\n\n var dispatch = this.$store.dispatch;\n\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapActions', namespace);\n\n if (!module) {\n return;\n }\n\n dispatch = module.context.dispatch;\n }\n\n return typeof val === 'function' ? val.apply(this, [dispatch].concat(args)) : dispatch.apply(this.$store, [val].concat(args));\n };\n });\n return res;\n});\n/**\n * Rebinding namespace param for mapXXX function in special scoped, and return them by simple object\n * @param {String} namespace\n * @return {Object}\n */\n\nvar createNamespacedHelpers = function createNamespacedHelpers(namespace) {\n return {\n mapState: mapState.bind(null, namespace),\n mapGetters: mapGetters.bind(null, namespace),\n mapMutations: mapMutations.bind(null, namespace),\n mapActions: mapActions.bind(null, namespace)\n };\n};\n/**\n * Normalize the map\n * normalizeMap([1, 2, 3]) => [ { key: 1, val: 1 }, { key: 2, val: 2 }, { key: 3, val: 3 } ]\n * normalizeMap({a: 1, b: 2, c: 3}) => [ { key: 'a', val: 1 }, { key: 'b', val: 2 }, { key: 'c', val: 3 } ]\n * @param {Array|Object} map\n * @return {Object}\n */\n\n\nfunction normalizeMap(map) {\n if (!isValidMap(map)) {\n return [];\n }\n\n return Array.isArray(map) ? map.map(function (key) {\n return {\n key: key,\n val: key\n };\n }) : Object.keys(map).map(function (key) {\n return {\n key: key,\n val: map[key]\n };\n });\n}\n/**\n * Validate whether given map is valid or not\n * @param {*} map\n * @return {Boolean}\n */\n\n\nfunction isValidMap(map) {\n return Array.isArray(map) || isObject(map);\n}\n/**\n * Return a function expect two param contains namespace and map. it will normalize the namespace and then the param's function will handle the new namespace and the map.\n * @param {Function} fn\n * @return {Function}\n */\n\n\nfunction normalizeNamespace(fn) {\n return function (namespace, map) {\n if (typeof namespace !== 'string') {\n map = namespace;\n namespace = '';\n } else if (namespace.charAt(namespace.length - 1) !== '/') {\n namespace += '/';\n }\n\n return fn(namespace, map);\n };\n}\n/**\n * Search a special module from store by namespace. if module not exist, print error message.\n * @param {Object} store\n * @param {String} helper\n * @param {String} namespace\n * @return {Object}\n */\n\n\nfunction getModuleByNamespace(store, helper, namespace) {\n var module = store._modulesNamespaceMap[namespace];\n\n if (process.env.NODE_ENV !== 'production' && !module) {\n console.error(\"[vuex] module namespace not found in \" + helper + \"(): \" + namespace);\n }\n\n return module;\n} // Credits: borrowed code from fcomb/redux-logger\n\n\nfunction createLogger(ref) {\n if (ref === void 0) ref = {};\n var collapsed = ref.collapsed;\n if (collapsed === void 0) collapsed = true;\n var filter = ref.filter;\n if (filter === void 0) filter = function filter(mutation, stateBefore, stateAfter) {\n return true;\n };\n var transformer = ref.transformer;\n if (transformer === void 0) transformer = function transformer(state) {\n return state;\n };\n var mutationTransformer = ref.mutationTransformer;\n if (mutationTransformer === void 0) mutationTransformer = function mutationTransformer(mut) {\n return mut;\n };\n var actionFilter = ref.actionFilter;\n if (actionFilter === void 0) actionFilter = function actionFilter(action, state) {\n return true;\n };\n var actionTransformer = ref.actionTransformer;\n if (actionTransformer === void 0) actionTransformer = function actionTransformer(act) {\n return act;\n };\n var logMutations = ref.logMutations;\n if (logMutations === void 0) logMutations = true;\n var logActions = ref.logActions;\n if (logActions === void 0) logActions = true;\n var logger = ref.logger;\n if (logger === void 0) logger = console;\n return function (store) {\n var prevState = deepCopy(store.state);\n\n if (typeof logger === 'undefined') {\n return;\n }\n\n if (logMutations) {\n store.subscribe(function (mutation, state) {\n var nextState = deepCopy(state);\n\n if (filter(mutation, prevState, nextState)) {\n var formattedTime = getFormattedTime();\n var formattedMutation = mutationTransformer(mutation);\n var message = \"mutation \" + mutation.type + formattedTime;\n startMessage(logger, message, collapsed);\n logger.log('%c prev state', 'color: #9E9E9E; font-weight: bold', transformer(prevState));\n logger.log('%c mutation', 'color: #03A9F4; font-weight: bold', formattedMutation);\n logger.log('%c next state', 'color: #4CAF50; font-weight: bold', transformer(nextState));\n endMessage(logger);\n }\n\n prevState = nextState;\n });\n }\n\n if (logActions) {\n store.subscribeAction(function (action, state) {\n if (actionFilter(action, state)) {\n var formattedTime = getFormattedTime();\n var formattedAction = actionTransformer(action);\n var message = \"action \" + action.type + formattedTime;\n startMessage(logger, message, collapsed);\n logger.log('%c action', 'color: #03A9F4; font-weight: bold', formattedAction);\n endMessage(logger);\n }\n });\n }\n };\n}\n\nfunction startMessage(logger, message, collapsed) {\n var startMessage = collapsed ? logger.groupCollapsed : logger.group; // render\n\n try {\n startMessage.call(logger, message);\n } catch (e) {\n logger.log(message);\n }\n}\n\nfunction endMessage(logger) {\n try {\n logger.groupEnd();\n } catch (e) {\n logger.log('—— log end ——');\n }\n}\n\nfunction getFormattedTime() {\n var time = new Date();\n return \" @ \" + pad(time.getHours(), 2) + \":\" + pad(time.getMinutes(), 2) + \":\" + pad(time.getSeconds(), 2) + \".\" + pad(time.getMilliseconds(), 3);\n}\n\nfunction repeat(str, times) {\n return new Array(times + 1).join(str);\n}\n\nfunction pad(num, maxLength) {\n return repeat('0', maxLength - num.toString().length) + num;\n}\n\nvar index = {\n Store: Store,\n install: install,\n version: '3.6.2',\n mapState: mapState,\n mapMutations: mapMutations,\n mapGetters: mapGetters,\n mapActions: mapActions,\n createNamespacedHelpers: createNamespacedHelpers,\n createLogger: createLogger\n};\nexport default index;\nexport { Store, createLogger, createNamespacedHelpers, install, mapActions, mapGetters, mapMutations, mapState };","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction toVal(mix) {\n var k,\n y,\n str = '';\n\n if (typeof mix === 'string' || typeof mix === 'number') {\n str += mix;\n } else if (_typeof(mix) === 'object') {\n if (Array.isArray(mix)) {\n for (k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (y = toVal(mix[k])) {\n str && (str += ' ');\n str += y;\n }\n }\n }\n } else {\n for (k in mix) {\n if (mix[k]) {\n str && (str += ' ');\n str += k;\n }\n }\n }\n }\n\n return str;\n}\n\nexport default function () {\n var i = 0,\n tmp,\n x,\n str = '';\n\n while (i < arguments.length) {\n if (tmp = arguments[i++]) {\n if (x = toVal(tmp)) {\n str && (str += ' ');\n str += x;\n }\n }\n }\n\n return str;\n}","function _typeof2(obj) { \"@babel/helpers - typeof\"; return _typeof2 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof2(obj); }\n\nvar _typeof = typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\" ? function (obj) {\n return _typeof2(obj);\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n};\n\nexport var isBrowser = (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\" && (typeof document === \"undefined\" ? \"undefined\" : _typeof(document)) === 'object' && document.nodeType === 9;\nexport default isBrowser;","var isProduction = process.env.NODE_ENV === 'production';\n\nfunction warning(condition, message) {\n if (!isProduction) {\n if (condition) {\n return;\n }\n\n var text = \"Warning: \" + message;\n\n if (typeof console !== 'undefined') {\n console.warn(text);\n }\n\n try {\n throw Error(text);\n } catch (x) {}\n }\n}\n\nexport default warning;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport isInBrowser from 'is-in-browser';\nimport warning from 'tiny-warning';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nvar plainObjectConstrurctor = {}.constructor;\n\nfunction cloneStyle(style) {\n if (style == null || _typeof(style) !== 'object') return style;\n if (Array.isArray(style)) return style.map(cloneStyle);\n if (style.constructor !== plainObjectConstrurctor) return style;\n var newStyle = {};\n\n for (var name in style) {\n newStyle[name] = cloneStyle(style[name]);\n }\n\n return newStyle;\n}\n/**\n * Create a rule instance.\n */\n\n\nfunction createRule(name, decl, options) {\n if (name === void 0) {\n name = 'unnamed';\n }\n\n var jss = options.jss;\n var declCopy = cloneStyle(decl);\n var rule = jss.plugins.onCreateRule(name, declCopy, options);\n if (rule) return rule; // It is an at-rule and it has no instance.\n\n if (name[0] === '@') {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Unknown rule \" + name) : void 0;\n }\n\n return null;\n}\n\nvar join = function join(value, by) {\n var result = '';\n\n for (var i = 0; i < value.length; i++) {\n // Remove !important from the value, it will be readded later.\n if (value[i] === '!important') break;\n if (result) result += by;\n result += value[i];\n }\n\n return result;\n};\n/**\n * Converts JSS array value to a CSS string.\n *\n * `margin: [['5px', '10px']]` > `margin: 5px 10px;`\n * `border: ['1px', '2px']` > `border: 1px, 2px;`\n * `margin: [['5px', '10px'], '!important']` > `margin: 5px 10px !important;`\n * `color: ['red', !important]` > `color: red !important;`\n */\n\n\nvar toCssValue = function toCssValue(value, ignoreImportant) {\n if (ignoreImportant === void 0) {\n ignoreImportant = false;\n }\n\n if (!Array.isArray(value)) return value;\n var cssValue = ''; // Support space separated values via `[['5px', '10px']]`.\n\n if (Array.isArray(value[0])) {\n for (var i = 0; i < value.length; i++) {\n if (value[i] === '!important') break;\n if (cssValue) cssValue += ', ';\n cssValue += join(value[i], ' ');\n }\n } else cssValue = join(value, ', '); // Add !important, because it was ignored.\n\n\n if (!ignoreImportant && value[value.length - 1] === '!important') {\n cssValue += ' !important';\n }\n\n return cssValue;\n};\n\nfunction getWhitespaceSymbols(options) {\n if (options && options.format === false) {\n return {\n linebreak: '',\n space: ''\n };\n }\n\n return {\n linebreak: '\\n',\n space: ' '\n };\n}\n/**\n * Indent a string.\n * http://jsperf.com/array-join-vs-for\n */\n\n\nfunction indentStr(str, indent) {\n var result = '';\n\n for (var index = 0; index < indent; index++) {\n result += ' ';\n }\n\n return result + str;\n}\n/**\n * Converts a Rule to CSS string.\n */\n\n\nfunction toCss(selector, style, options) {\n if (options === void 0) {\n options = {};\n }\n\n var result = '';\n if (!style) return result;\n var _options = options,\n _options$indent = _options.indent,\n indent = _options$indent === void 0 ? 0 : _options$indent;\n var fallbacks = style.fallbacks;\n\n if (options.format === false) {\n indent = -Infinity;\n }\n\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak,\n space = _getWhitespaceSymbols.space;\n\n if (selector) indent++; // Apply fallbacks first.\n\n if (fallbacks) {\n // Array syntax {fallbacks: [{prop: value}]}\n if (Array.isArray(fallbacks)) {\n for (var index = 0; index < fallbacks.length; index++) {\n var fallback = fallbacks[index];\n\n for (var prop in fallback) {\n var value = fallback[prop];\n\n if (value != null) {\n if (result) result += linebreak;\n result += indentStr(prop + \":\" + space + toCssValue(value) + \";\", indent);\n }\n }\n }\n } else {\n // Object syntax {fallbacks: {prop: value}}\n for (var _prop in fallbacks) {\n var _value = fallbacks[_prop];\n\n if (_value != null) {\n if (result) result += linebreak;\n result += indentStr(_prop + \":\" + space + toCssValue(_value) + \";\", indent);\n }\n }\n }\n }\n\n for (var _prop2 in style) {\n var _value2 = style[_prop2];\n\n if (_value2 != null && _prop2 !== 'fallbacks') {\n if (result) result += linebreak;\n result += indentStr(_prop2 + \":\" + space + toCssValue(_value2) + \";\", indent);\n }\n } // Allow empty style in this case, because properties will be added dynamically.\n\n\n if (!result && !options.allowEmpty) return result; // When rule is being stringified before selector was defined.\n\n if (!selector) return result;\n indent--;\n if (result) result = \"\" + linebreak + result + linebreak;\n return indentStr(\"\" + selector + space + \"{\" + result, indent) + indentStr('}', indent);\n}\n\nvar escapeRegex = /([[\\].#*$><+~=|^:(),\"'`\\s])/g;\nvar nativeEscape = typeof CSS !== 'undefined' && CSS.escape;\n\nvar escape = function escape(str) {\n return nativeEscape ? nativeEscape(str) : str.replace(escapeRegex, '\\\\$1');\n};\n\nvar BaseStyleRule = /*#__PURE__*/function () {\n function BaseStyleRule(key, style, options) {\n this.type = 'style';\n this.isProcessed = false;\n var sheet = options.sheet,\n Renderer = options.Renderer;\n this.key = key;\n this.options = options;\n this.style = style;\n if (sheet) this.renderer = sheet.renderer;else if (Renderer) this.renderer = new Renderer();\n }\n /**\n * Get or set a style property.\n */\n\n\n var _proto = BaseStyleRule.prototype;\n\n _proto.prop = function prop(name, value, options) {\n // It's a getter.\n if (value === undefined) return this.style[name]; // Don't do anything if the value has not changed.\n\n var force = options ? options.force : false;\n if (!force && this.style[name] === value) return this;\n var newValue = value;\n\n if (!options || options.process !== false) {\n newValue = this.options.jss.plugins.onChangeValue(value, name, this);\n }\n\n var isEmpty = newValue == null || newValue === false;\n var isDefined = (name in this.style); // Value is empty and wasn't defined before.\n\n if (isEmpty && !isDefined && !force) return this; // We are going to remove this value.\n\n var remove = isEmpty && isDefined;\n if (remove) delete this.style[name];else this.style[name] = newValue; // Renderable is defined if StyleSheet option `link` is true.\n\n if (this.renderable && this.renderer) {\n if (remove) this.renderer.removeProperty(this.renderable, name);else this.renderer.setProperty(this.renderable, name, newValue);\n return this;\n }\n\n var sheet = this.options.sheet;\n\n if (sheet && sheet.attached) {\n process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Rule is not linked. Missing sheet option \"link: true\".') : void 0;\n }\n\n return this;\n };\n\n return BaseStyleRule;\n}();\n\nvar StyleRule = /*#__PURE__*/function (_BaseStyleRule) {\n _inheritsLoose(StyleRule, _BaseStyleRule);\n\n function StyleRule(key, style, options) {\n var _this;\n\n _this = _BaseStyleRule.call(this, key, style, options) || this;\n var selector = options.selector,\n scoped = options.scoped,\n sheet = options.sheet,\n generateId = options.generateId;\n\n if (selector) {\n _this.selectorText = selector;\n } else if (scoped !== false) {\n _this.id = generateId(_assertThisInitialized(_assertThisInitialized(_this)), sheet);\n _this.selectorText = \".\" + escape(_this.id);\n }\n\n return _this;\n }\n /**\n * Set selector string.\n * Attention: use this with caution. Most browsers didn't implement\n * selectorText setter, so this may result in rerendering of entire Style Sheet.\n */\n\n\n var _proto2 = StyleRule.prototype;\n /**\n * Apply rule to an element inline.\n */\n\n _proto2.applyTo = function applyTo(renderable) {\n var renderer = this.renderer;\n\n if (renderer) {\n var json = this.toJSON();\n\n for (var prop in json) {\n renderer.setProperty(renderable, prop, json[prop]);\n }\n }\n\n return this;\n }\n /**\n * Returns JSON representation of the rule.\n * Fallbacks are not supported.\n * Useful for inline styles.\n */\n ;\n\n _proto2.toJSON = function toJSON() {\n var json = {};\n\n for (var prop in this.style) {\n var value = this.style[prop];\n if (_typeof(value) !== 'object') json[prop] = value;else if (Array.isArray(value)) json[prop] = toCssValue(value);\n }\n\n return json;\n }\n /**\n * Generates a CSS string.\n */\n ;\n\n _proto2.toString = function toString(options) {\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n var opts = link ? _extends({}, options, {\n allowEmpty: true\n }) : options;\n return toCss(this.selectorText, this.style, opts);\n };\n\n _createClass(StyleRule, [{\n key: \"selector\",\n set: function set(selector) {\n if (selector === this.selectorText) return;\n this.selectorText = selector;\n var renderer = this.renderer,\n renderable = this.renderable;\n if (!renderable || !renderer) return;\n var hasChanged = renderer.setSelector(renderable, selector); // If selector setter is not implemented, rerender the rule.\n\n if (!hasChanged) {\n renderer.replaceRule(renderable, this);\n }\n }\n /**\n * Get selector string.\n */\n ,\n get: function get() {\n return this.selectorText;\n }\n }]);\n\n return StyleRule;\n}(BaseStyleRule);\n\nvar pluginStyleRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n if (key[0] === '@' || options.parent && options.parent.type === 'keyframes') {\n return null;\n }\n\n return new StyleRule(key, style, options);\n }\n};\nvar defaultToStringOptions = {\n indent: 1,\n children: true\n};\nvar atRegExp = /@([\\w-]+)/;\n/**\n * Conditional rule for @media, @supports\n */\n\nvar ConditionalRule = /*#__PURE__*/function () {\n function ConditionalRule(key, styles, options) {\n this.type = 'conditional';\n this.isProcessed = false;\n this.key = key;\n var atMatch = key.match(atRegExp);\n this.at = atMatch ? atMatch[1] : 'unknown'; // Key might contain a unique suffix in case the `name` passed by user was duplicate.\n\n this.query = options.name || \"@\" + this.at;\n this.options = options;\n this.rules = new RuleList(_extends({}, options, {\n parent: this\n }));\n\n for (var name in styles) {\n this.rules.add(name, styles[name]);\n }\n\n this.rules.process();\n }\n /**\n * Get a rule.\n */\n\n\n var _proto = ConditionalRule.prototype;\n\n _proto.getRule = function getRule(name) {\n return this.rules.get(name);\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.rules.indexOf(rule);\n }\n /**\n * Create and register rule, run plugins.\n */\n ;\n\n _proto.addRule = function addRule(name, style, options) {\n var rule = this.rules.add(name, style, options);\n if (!rule) return null;\n this.options.jss.plugins.onProcessRule(rule);\n return rule;\n }\n /**\n * Replace rule, run plugins.\n */\n ;\n\n _proto.replaceRule = function replaceRule(name, style, options) {\n var newRule = this.rules.replace(name, style, options);\n if (newRule) this.options.jss.plugins.onProcessRule(newRule);\n return newRule;\n }\n /**\n * Generates a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n if (options === void 0) {\n options = defaultToStringOptions;\n }\n\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak;\n\n if (options.indent == null) options.indent = defaultToStringOptions.indent;\n if (options.children == null) options.children = defaultToStringOptions.children;\n\n if (options.children === false) {\n return this.query + \" {}\";\n }\n\n var children = this.rules.toString(options);\n return children ? this.query + \" {\" + linebreak + children + linebreak + \"}\" : '';\n };\n\n return ConditionalRule;\n}();\n\nvar keyRegExp = /@media|@supports\\s+/;\nvar pluginConditionalRule = {\n onCreateRule: function onCreateRule(key, styles, options) {\n return keyRegExp.test(key) ? new ConditionalRule(key, styles, options) : null;\n }\n};\nvar defaultToStringOptions$1 = {\n indent: 1,\n children: true\n};\nvar nameRegExp = /@keyframes\\s+([\\w-]+)/;\n/**\n * Rule for @keyframes\n */\n\nvar KeyframesRule = /*#__PURE__*/function () {\n function KeyframesRule(key, frames, options) {\n this.type = 'keyframes';\n this.at = '@keyframes';\n this.isProcessed = false;\n var nameMatch = key.match(nameRegExp);\n\n if (nameMatch && nameMatch[1]) {\n this.name = nameMatch[1];\n } else {\n this.name = 'noname';\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Bad keyframes name \" + key) : void 0;\n }\n\n this.key = this.type + \"-\" + this.name;\n this.options = options;\n var scoped = options.scoped,\n sheet = options.sheet,\n generateId = options.generateId;\n this.id = scoped === false ? this.name : escape(generateId(this, sheet));\n this.rules = new RuleList(_extends({}, options, {\n parent: this\n }));\n\n for (var name in frames) {\n this.rules.add(name, frames[name], _extends({}, options, {\n parent: this\n }));\n }\n\n this.rules.process();\n }\n /**\n * Generates a CSS string.\n */\n\n\n var _proto = KeyframesRule.prototype;\n\n _proto.toString = function toString(options) {\n if (options === void 0) {\n options = defaultToStringOptions$1;\n }\n\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak;\n\n if (options.indent == null) options.indent = defaultToStringOptions$1.indent;\n if (options.children == null) options.children = defaultToStringOptions$1.children;\n\n if (options.children === false) {\n return this.at + \" \" + this.id + \" {}\";\n }\n\n var children = this.rules.toString(options);\n if (children) children = \"\" + linebreak + children + linebreak;\n return this.at + \" \" + this.id + \" {\" + children + \"}\";\n };\n\n return KeyframesRule;\n}();\n\nvar keyRegExp$1 = /@keyframes\\s+/;\nvar refRegExp = /\\$([\\w-]+)/g;\n\nvar findReferencedKeyframe = function findReferencedKeyframe(val, keyframes) {\n if (typeof val === 'string') {\n return val.replace(refRegExp, function (match, name) {\n if (name in keyframes) {\n return keyframes[name];\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Referenced keyframes rule \\\"\" + name + \"\\\" is not defined.\") : void 0;\n return match;\n });\n }\n\n return val;\n};\n/**\n * Replace the reference for a animation name.\n */\n\n\nvar replaceRef = function replaceRef(style, prop, keyframes) {\n var value = style[prop];\n var refKeyframe = findReferencedKeyframe(value, keyframes);\n\n if (refKeyframe !== value) {\n style[prop] = refKeyframe;\n }\n};\n\nvar pluginKeyframesRule = {\n onCreateRule: function onCreateRule(key, frames, options) {\n return typeof key === 'string' && keyRegExp$1.test(key) ? new KeyframesRule(key, frames, options) : null;\n },\n // Animation name ref replacer.\n onProcessStyle: function onProcessStyle(style, rule, sheet) {\n if (rule.type !== 'style' || !sheet) return style;\n if ('animation-name' in style) replaceRef(style, 'animation-name', sheet.keyframes);\n if ('animation' in style) replaceRef(style, 'animation', sheet.keyframes);\n return style;\n },\n onChangeValue: function onChangeValue(val, prop, rule) {\n var sheet = rule.options.sheet;\n\n if (!sheet) {\n return val;\n }\n\n switch (prop) {\n case 'animation':\n return findReferencedKeyframe(val, sheet.keyframes);\n\n case 'animation-name':\n return findReferencedKeyframe(val, sheet.keyframes);\n\n default:\n return val;\n }\n }\n};\n\nvar KeyframeRule = /*#__PURE__*/function (_BaseStyleRule) {\n _inheritsLoose(KeyframeRule, _BaseStyleRule);\n\n function KeyframeRule() {\n return _BaseStyleRule.apply(this, arguments) || this;\n }\n\n var _proto = KeyframeRule.prototype;\n /**\n * Generates a CSS string.\n */\n\n _proto.toString = function toString(options) {\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n var opts = link ? _extends({}, options, {\n allowEmpty: true\n }) : options;\n return toCss(this.key, this.style, opts);\n };\n\n return KeyframeRule;\n}(BaseStyleRule);\n\nvar pluginKeyframeRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n if (options.parent && options.parent.type === 'keyframes') {\n return new KeyframeRule(key, style, options);\n }\n\n return null;\n }\n};\n\nvar FontFaceRule = /*#__PURE__*/function () {\n function FontFaceRule(key, style, options) {\n this.type = 'font-face';\n this.at = '@font-face';\n this.isProcessed = false;\n this.key = key;\n this.style = style;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n\n\n var _proto = FontFaceRule.prototype;\n\n _proto.toString = function toString(options) {\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak;\n\n if (Array.isArray(this.style)) {\n var str = '';\n\n for (var index = 0; index < this.style.length; index++) {\n str += toCss(this.at, this.style[index]);\n if (this.style[index + 1]) str += linebreak;\n }\n\n return str;\n }\n\n return toCss(this.at, this.style, options);\n };\n\n return FontFaceRule;\n}();\n\nvar keyRegExp$2 = /@font-face/;\nvar pluginFontFaceRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n return keyRegExp$2.test(key) ? new FontFaceRule(key, style, options) : null;\n }\n};\n\nvar ViewportRule = /*#__PURE__*/function () {\n function ViewportRule(key, style, options) {\n this.type = 'viewport';\n this.at = '@viewport';\n this.isProcessed = false;\n this.key = key;\n this.style = style;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n\n\n var _proto = ViewportRule.prototype;\n\n _proto.toString = function toString(options) {\n return toCss(this.key, this.style, options);\n };\n\n return ViewportRule;\n}();\n\nvar pluginViewportRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n return key === '@viewport' || key === '@-ms-viewport' ? new ViewportRule(key, style, options) : null;\n }\n};\n\nvar SimpleRule = /*#__PURE__*/function () {\n function SimpleRule(key, value, options) {\n this.type = 'simple';\n this.isProcessed = false;\n this.key = key;\n this.value = value;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n // eslint-disable-next-line no-unused-vars\n\n\n var _proto = SimpleRule.prototype;\n\n _proto.toString = function toString(options) {\n if (Array.isArray(this.value)) {\n var str = '';\n\n for (var index = 0; index < this.value.length; index++) {\n str += this.key + \" \" + this.value[index] + \";\";\n if (this.value[index + 1]) str += '\\n';\n }\n\n return str;\n }\n\n return this.key + \" \" + this.value + \";\";\n };\n\n return SimpleRule;\n}();\n\nvar keysMap = {\n '@charset': true,\n '@import': true,\n '@namespace': true\n};\nvar pluginSimpleRule = {\n onCreateRule: function onCreateRule(key, value, options) {\n return key in keysMap ? new SimpleRule(key, value, options) : null;\n }\n};\nvar plugins = [pluginStyleRule, pluginConditionalRule, pluginKeyframesRule, pluginKeyframeRule, pluginFontFaceRule, pluginViewportRule, pluginSimpleRule];\nvar defaultUpdateOptions = {\n process: true\n};\nvar forceUpdateOptions = {\n force: true,\n process: true\n /**\n * Contains rules objects and allows adding/removing etc.\n * Is used for e.g. by `StyleSheet` or `ConditionalRule`.\n */\n\n};\n\nvar RuleList = /*#__PURE__*/function () {\n // Rules registry for access by .get() method.\n // It contains the same rule registered by name and by selector.\n // Original styles object.\n // Used to ensure correct rules order.\n function RuleList(options) {\n this.map = {};\n this.raw = {};\n this.index = [];\n this.counter = 0;\n this.options = options;\n this.classes = options.classes;\n this.keyframes = options.keyframes;\n }\n /**\n * Create and register rule.\n *\n * Will not render after Style Sheet was rendered the first time.\n */\n\n\n var _proto = RuleList.prototype;\n\n _proto.add = function add(name, decl, ruleOptions) {\n var _this$options = this.options,\n parent = _this$options.parent,\n sheet = _this$options.sheet,\n jss = _this$options.jss,\n Renderer = _this$options.Renderer,\n generateId = _this$options.generateId,\n scoped = _this$options.scoped;\n\n var options = _extends({\n classes: this.classes,\n parent: parent,\n sheet: sheet,\n jss: jss,\n Renderer: Renderer,\n generateId: generateId,\n scoped: scoped,\n name: name,\n keyframes: this.keyframes,\n selector: undefined\n }, ruleOptions); // When user uses .createStyleSheet(), duplicate names are not possible, but\n // `sheet.addRule()` opens the door for any duplicate rule name. When this happens\n // we need to make the key unique within this RuleList instance scope.\n\n\n var key = name;\n\n if (name in this.raw) {\n key = name + \"-d\" + this.counter++;\n } // We need to save the original decl before creating the rule\n // because cache plugin needs to use it as a key to return a cached rule.\n\n\n this.raw[key] = decl;\n\n if (key in this.classes) {\n // E.g. rules inside of @media container\n options.selector = \".\" + escape(this.classes[key]);\n }\n\n var rule = createRule(key, decl, options);\n if (!rule) return null;\n this.register(rule);\n var index = options.index === undefined ? this.index.length : options.index;\n this.index.splice(index, 0, rule);\n return rule;\n }\n /**\n * Replace rule.\n * Create a new rule and remove old one instead of overwriting\n * because we want to invoke onCreateRule hook to make plugins work.\n */\n ;\n\n _proto.replace = function replace(name, decl, ruleOptions) {\n var oldRule = this.get(name);\n var oldIndex = this.index.indexOf(oldRule);\n\n if (oldRule) {\n this.remove(oldRule);\n }\n\n var options = ruleOptions;\n if (oldIndex !== -1) options = _extends({}, ruleOptions, {\n index: oldIndex\n });\n return this.add(name, decl, options);\n }\n /**\n * Get a rule by name or selector.\n */\n ;\n\n _proto.get = function get(nameOrSelector) {\n return this.map[nameOrSelector];\n }\n /**\n * Delete a rule.\n */\n ;\n\n _proto.remove = function remove(rule) {\n this.unregister(rule);\n delete this.raw[rule.key];\n this.index.splice(this.index.indexOf(rule), 1);\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.index.indexOf(rule);\n }\n /**\n * Run `onProcessRule()` plugins on every rule.\n */\n ;\n\n _proto.process = function process() {\n var plugins = this.options.jss.plugins; // We need to clone array because if we modify the index somewhere else during a loop\n // we end up with very hard-to-track-down side effects.\n\n this.index.slice(0).forEach(plugins.onProcessRule, plugins);\n }\n /**\n * Register a rule in `.map`, `.classes` and `.keyframes` maps.\n */\n ;\n\n _proto.register = function register(rule) {\n this.map[rule.key] = rule;\n\n if (rule instanceof StyleRule) {\n this.map[rule.selector] = rule;\n if (rule.id) this.classes[rule.key] = rule.id;\n } else if (rule instanceof KeyframesRule && this.keyframes) {\n this.keyframes[rule.name] = rule.id;\n }\n }\n /**\n * Unregister a rule.\n */\n ;\n\n _proto.unregister = function unregister(rule) {\n delete this.map[rule.key];\n\n if (rule instanceof StyleRule) {\n delete this.map[rule.selector];\n delete this.classes[rule.key];\n } else if (rule instanceof KeyframesRule) {\n delete this.keyframes[rule.name];\n }\n }\n /**\n * Update the function values with a new data.\n */\n ;\n\n _proto.update = function update() {\n var name;\n var data;\n var options;\n\n if (typeof (arguments.length <= 0 ? undefined : arguments[0]) === 'string') {\n name = arguments.length <= 0 ? undefined : arguments[0];\n data = arguments.length <= 1 ? undefined : arguments[1];\n options = arguments.length <= 2 ? undefined : arguments[2];\n } else {\n data = arguments.length <= 0 ? undefined : arguments[0];\n options = arguments.length <= 1 ? undefined : arguments[1];\n name = null;\n }\n\n if (name) {\n this.updateOne(this.get(name), data, options);\n } else {\n for (var index = 0; index < this.index.length; index++) {\n this.updateOne(this.index[index], data, options);\n }\n }\n }\n /**\n * Execute plugins, update rule props.\n */\n ;\n\n _proto.updateOne = function updateOne(rule, data, options) {\n if (options === void 0) {\n options = defaultUpdateOptions;\n }\n\n var _this$options2 = this.options,\n plugins = _this$options2.jss.plugins,\n sheet = _this$options2.sheet; // It is a rules container like for e.g. ConditionalRule.\n\n if (rule.rules instanceof RuleList) {\n rule.rules.update(data, options);\n return;\n }\n\n var style = rule.style;\n plugins.onUpdate(data, rule, sheet, options); // We rely on a new `style` ref in case it was mutated during onUpdate hook.\n\n if (options.process && style && style !== rule.style) {\n // We need to run the plugins in case new `style` relies on syntax plugins.\n plugins.onProcessStyle(rule.style, rule, sheet); // Update and add props.\n\n for (var prop in rule.style) {\n var nextValue = rule.style[prop];\n var prevValue = style[prop]; // We need to use `force: true` because `rule.style` has been updated during onUpdate hook, so `rule.prop()` will not update the CSSOM rule.\n // We do this comparison to avoid unneeded `rule.prop()` calls, since we have the old `style` object here.\n\n if (nextValue !== prevValue) {\n rule.prop(prop, nextValue, forceUpdateOptions);\n }\n } // Remove props.\n\n\n for (var _prop in style) {\n var _nextValue = rule.style[_prop];\n var _prevValue = style[_prop]; // We need to use `force: true` because `rule.style` has been updated during onUpdate hook, so `rule.prop()` will not update the CSSOM rule.\n // We do this comparison to avoid unneeded `rule.prop()` calls, since we have the old `style` object here.\n\n if (_nextValue == null && _nextValue !== _prevValue) {\n rule.prop(_prop, null, forceUpdateOptions);\n }\n }\n }\n }\n /**\n * Convert rules to a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n var str = '';\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak;\n\n for (var index = 0; index < this.index.length; index++) {\n var rule = this.index[index];\n var css = rule.toString(options); // No need to render an empty rule.\n\n if (!css && !link) continue;\n if (str) str += linebreak;\n str += css;\n }\n\n return str;\n };\n\n return RuleList;\n}();\n\nvar StyleSheet = /*#__PURE__*/function () {\n function StyleSheet(styles, options) {\n this.attached = false;\n this.deployed = false;\n this.classes = {};\n this.keyframes = {};\n this.options = _extends({}, options, {\n sheet: this,\n parent: this,\n classes: this.classes,\n keyframes: this.keyframes\n });\n\n if (options.Renderer) {\n this.renderer = new options.Renderer(this);\n }\n\n this.rules = new RuleList(this.options);\n\n for (var name in styles) {\n this.rules.add(name, styles[name]);\n }\n\n this.rules.process();\n }\n /**\n * Attach renderable to the render tree.\n */\n\n\n var _proto = StyleSheet.prototype;\n\n _proto.attach = function attach() {\n if (this.attached) return this;\n if (this.renderer) this.renderer.attach();\n this.attached = true; // Order is important, because we can't use insertRule API if style element is not attached.\n\n if (!this.deployed) this.deploy();\n return this;\n }\n /**\n * Remove renderable from render tree.\n */\n ;\n\n _proto.detach = function detach() {\n if (!this.attached) return this;\n if (this.renderer) this.renderer.detach();\n this.attached = false;\n return this;\n }\n /**\n * Add a rule to the current stylesheet.\n * Will insert a rule also after the stylesheet has been rendered first time.\n */\n ;\n\n _proto.addRule = function addRule(name, decl, options) {\n var queue = this.queue; // Plugins can create rules.\n // In order to preserve the right order, we need to queue all `.addRule` calls,\n // which happen after the first `rules.add()` call.\n\n if (this.attached && !queue) this.queue = [];\n var rule = this.rules.add(name, decl, options);\n if (!rule) return null;\n this.options.jss.plugins.onProcessRule(rule);\n\n if (this.attached) {\n if (!this.deployed) return rule; // Don't insert rule directly if there is no stringified version yet.\n // It will be inserted all together when .attach is called.\n\n if (queue) queue.push(rule);else {\n this.insertRule(rule);\n\n if (this.queue) {\n this.queue.forEach(this.insertRule, this);\n this.queue = undefined;\n }\n }\n return rule;\n } // We can't add rules to a detached style node.\n // We will redeploy the sheet once user will attach it.\n\n\n this.deployed = false;\n return rule;\n }\n /**\n * Replace a rule in the current stylesheet.\n */\n ;\n\n _proto.replaceRule = function replaceRule(nameOrSelector, decl, options) {\n var oldRule = this.rules.get(nameOrSelector);\n if (!oldRule) return this.addRule(nameOrSelector, decl, options);\n var newRule = this.rules.replace(nameOrSelector, decl, options);\n\n if (newRule) {\n this.options.jss.plugins.onProcessRule(newRule);\n }\n\n if (this.attached) {\n if (!this.deployed) return newRule; // Don't replace / delete rule directly if there is no stringified version yet.\n // It will be inserted all together when .attach is called.\n\n if (this.renderer) {\n if (!newRule) {\n this.renderer.deleteRule(oldRule);\n } else if (oldRule.renderable) {\n this.renderer.replaceRule(oldRule.renderable, newRule);\n }\n }\n\n return newRule;\n } // We can't replace rules to a detached style node.\n // We will redeploy the sheet once user will attach it.\n\n\n this.deployed = false;\n return newRule;\n }\n /**\n * Insert rule into the StyleSheet\n */\n ;\n\n _proto.insertRule = function insertRule(rule) {\n if (this.renderer) {\n this.renderer.insertRule(rule);\n }\n }\n /**\n * Create and add rules.\n * Will render also after Style Sheet was rendered the first time.\n */\n ;\n\n _proto.addRules = function addRules(styles, options) {\n var added = [];\n\n for (var name in styles) {\n var rule = this.addRule(name, styles[name], options);\n if (rule) added.push(rule);\n }\n\n return added;\n }\n /**\n * Get a rule by name or selector.\n */\n ;\n\n _proto.getRule = function getRule(nameOrSelector) {\n return this.rules.get(nameOrSelector);\n }\n /**\n * Delete a rule by name.\n * Returns `true`: if rule has been deleted from the DOM.\n */\n ;\n\n _proto.deleteRule = function deleteRule(name) {\n var rule = _typeof(name) === 'object' ? name : this.rules.get(name);\n\n if (!rule || // Style sheet was created without link: true and attached, in this case we\n // won't be able to remove the CSS rule from the DOM.\n this.attached && !rule.renderable) {\n return false;\n }\n\n this.rules.remove(rule);\n\n if (this.attached && rule.renderable && this.renderer) {\n return this.renderer.deleteRule(rule.renderable);\n }\n\n return true;\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.rules.indexOf(rule);\n }\n /**\n * Deploy pure CSS string to a renderable.\n */\n ;\n\n _proto.deploy = function deploy() {\n if (this.renderer) this.renderer.deploy();\n this.deployed = true;\n return this;\n }\n /**\n * Update the function values with a new data.\n */\n ;\n\n _proto.update = function update() {\n var _this$rules;\n\n (_this$rules = this.rules).update.apply(_this$rules, arguments);\n\n return this;\n }\n /**\n * Updates a single rule.\n */\n ;\n\n _proto.updateOne = function updateOne(rule, data, options) {\n this.rules.updateOne(rule, data, options);\n return this;\n }\n /**\n * Convert rules to a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n return this.rules.toString(options);\n };\n\n return StyleSheet;\n}();\n\nvar PluginsRegistry = /*#__PURE__*/function () {\n function PluginsRegistry() {\n this.plugins = {\n internal: [],\n external: []\n };\n this.registry = {};\n }\n\n var _proto = PluginsRegistry.prototype;\n /**\n * Call `onCreateRule` hooks and return an object if returned by a hook.\n */\n\n _proto.onCreateRule = function onCreateRule(name, decl, options) {\n for (var i = 0; i < this.registry.onCreateRule.length; i++) {\n var rule = this.registry.onCreateRule[i](name, decl, options);\n if (rule) return rule;\n }\n\n return null;\n }\n /**\n * Call `onProcessRule` hooks.\n */\n ;\n\n _proto.onProcessRule = function onProcessRule(rule) {\n if (rule.isProcessed) return;\n var sheet = rule.options.sheet;\n\n for (var i = 0; i < this.registry.onProcessRule.length; i++) {\n this.registry.onProcessRule[i](rule, sheet);\n }\n\n if (rule.style) this.onProcessStyle(rule.style, rule, sheet);\n rule.isProcessed = true;\n }\n /**\n * Call `onProcessStyle` hooks.\n */\n ;\n\n _proto.onProcessStyle = function onProcessStyle(style, rule, sheet) {\n for (var i = 0; i < this.registry.onProcessStyle.length; i++) {\n rule.style = this.registry.onProcessStyle[i](rule.style, rule, sheet);\n }\n }\n /**\n * Call `onProcessSheet` hooks.\n */\n ;\n\n _proto.onProcessSheet = function onProcessSheet(sheet) {\n for (var i = 0; i < this.registry.onProcessSheet.length; i++) {\n this.registry.onProcessSheet[i](sheet);\n }\n }\n /**\n * Call `onUpdate` hooks.\n */\n ;\n\n _proto.onUpdate = function onUpdate(data, rule, sheet, options) {\n for (var i = 0; i < this.registry.onUpdate.length; i++) {\n this.registry.onUpdate[i](data, rule, sheet, options);\n }\n }\n /**\n * Call `onChangeValue` hooks.\n */\n ;\n\n _proto.onChangeValue = function onChangeValue(value, prop, rule) {\n var processedValue = value;\n\n for (var i = 0; i < this.registry.onChangeValue.length; i++) {\n processedValue = this.registry.onChangeValue[i](processedValue, prop, rule);\n }\n\n return processedValue;\n }\n /**\n * Register a plugin.\n */\n ;\n\n _proto.use = function use(newPlugin, options) {\n if (options === void 0) {\n options = {\n queue: 'external'\n };\n }\n\n var plugins = this.plugins[options.queue]; // Avoids applying same plugin twice, at least based on ref.\n\n if (plugins.indexOf(newPlugin) !== -1) {\n return;\n }\n\n plugins.push(newPlugin);\n this.registry = [].concat(this.plugins.external, this.plugins.internal).reduce(function (registry, plugin) {\n for (var name in plugin) {\n if (name in registry) {\n registry[name].push(plugin[name]);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Unknown hook \\\"\" + name + \"\\\".\") : void 0;\n }\n }\n\n return registry;\n }, {\n onCreateRule: [],\n onProcessRule: [],\n onProcessStyle: [],\n onProcessSheet: [],\n onChangeValue: [],\n onUpdate: []\n });\n };\n\n return PluginsRegistry;\n}();\n/**\n * Sheets registry to access all instances in one place.\n */\n\n\nvar SheetsRegistry = /*#__PURE__*/function () {\n function SheetsRegistry() {\n this.registry = [];\n }\n\n var _proto = SheetsRegistry.prototype;\n /**\n * Register a Style Sheet.\n */\n\n _proto.add = function add(sheet) {\n var registry = this.registry;\n var index = sheet.options.index;\n if (registry.indexOf(sheet) !== -1) return;\n\n if (registry.length === 0 || index >= this.index) {\n registry.push(sheet);\n return;\n } // Find a position.\n\n\n for (var i = 0; i < registry.length; i++) {\n if (registry[i].options.index > index) {\n registry.splice(i, 0, sheet);\n return;\n }\n }\n }\n /**\n * Reset the registry.\n */\n ;\n\n _proto.reset = function reset() {\n this.registry = [];\n }\n /**\n * Remove a Style Sheet.\n */\n ;\n\n _proto.remove = function remove(sheet) {\n var index = this.registry.indexOf(sheet);\n this.registry.splice(index, 1);\n }\n /**\n * Convert all attached sheets to a CSS string.\n */\n ;\n\n _proto.toString = function toString(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n attached = _ref.attached,\n options = _objectWithoutPropertiesLoose(_ref, [\"attached\"]);\n\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak;\n\n var css = '';\n\n for (var i = 0; i < this.registry.length; i++) {\n var sheet = this.registry[i];\n\n if (attached != null && sheet.attached !== attached) {\n continue;\n }\n\n if (css) css += linebreak;\n css += sheet.toString(options);\n }\n\n return css;\n };\n\n _createClass(SheetsRegistry, [{\n key: \"index\",\n\n /**\n * Current highest index number.\n */\n get: function get() {\n return this.registry.length === 0 ? 0 : this.registry[this.registry.length - 1].options.index;\n }\n }]);\n\n return SheetsRegistry;\n}();\n/**\n * This is a global sheets registry. Only DomRenderer will add sheets to it.\n * On the server one should use an own SheetsRegistry instance and add the\n * sheets to it, because you need to make sure to create a new registry for\n * each request in order to not leak sheets across requests.\n */\n\n\nvar sheets = new SheetsRegistry();\n/* eslint-disable */\n\n/**\n * Now that `globalThis` is available on most platforms\n * (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis#browser_compatibility)\n * we check for `globalThis` first. `globalThis` is necessary for jss\n * to run in Agoric's secure version of JavaScript (SES). Under SES,\n * `globalThis` exists, but `window`, `self`, and `Function('return\n * this')()` are all undefined for security reasons.\n *\n * https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n */\n\nvar globalThis$1 = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' && window.Math === Math ? window : typeof self !== 'undefined' && self.Math === Math ? self : Function('return this')();\nvar ns = '2f1acc6c3a606b082e5eef5e54414ffb';\nif (globalThis$1[ns] == null) globalThis$1[ns] = 0; // Bundle may contain multiple JSS versions at the same time. In order to identify\n// the current version with just one short number and use it for classes generation\n// we use a counter. Also it is more accurate, because user can manually reevaluate\n// the module.\n\nvar moduleId = globalThis$1[ns]++;\nvar maxRules = 1e10;\n/**\n * Returns a function which generates unique class names based on counters.\n * When new generator function is created, rule counter is reseted.\n * We need to reset the rule counter for SSR for each request.\n */\n\nvar createGenerateId = function createGenerateId(options) {\n if (options === void 0) {\n options = {};\n }\n\n var ruleCounter = 0;\n\n var generateId = function generateId(rule, sheet) {\n ruleCounter += 1;\n\n if (ruleCounter > maxRules) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] You might have a memory leak. Rule counter is at \" + ruleCounter + \".\") : void 0;\n }\n\n var jssId = '';\n var prefix = '';\n\n if (sheet) {\n if (sheet.options.classNamePrefix) {\n prefix = sheet.options.classNamePrefix;\n }\n\n if (sheet.options.jss.id != null) {\n jssId = String(sheet.options.jss.id);\n }\n }\n\n if (options.minify) {\n // Using \"c\" because a number can't be the first char in a class name.\n return \"\" + (prefix || 'c') + moduleId + jssId + ruleCounter;\n }\n\n return prefix + rule.key + \"-\" + moduleId + (jssId ? \"-\" + jssId : '') + \"-\" + ruleCounter;\n };\n\n return generateId;\n};\n/**\n * Cache the value from the first time a function is called.\n */\n\n\nvar memoize = function memoize(fn) {\n var value;\n return function () {\n if (!value) value = fn();\n return value;\n };\n};\n/**\n * Get a style property value.\n */\n\n\nvar getPropertyValue = function getPropertyValue(cssRule, prop) {\n try {\n // Support CSSTOM.\n if (cssRule.attributeStyleMap) {\n return cssRule.attributeStyleMap.get(prop);\n }\n\n return cssRule.style.getPropertyValue(prop);\n } catch (err) {\n // IE may throw if property is unknown.\n return '';\n }\n};\n/**\n * Set a style property.\n */\n\n\nvar setProperty = function setProperty(cssRule, prop, value) {\n try {\n var cssValue = value;\n\n if (Array.isArray(value)) {\n cssValue = toCssValue(value, true);\n\n if (value[value.length - 1] === '!important') {\n cssRule.style.setProperty(prop, cssValue, 'important');\n return true;\n }\n } // Support CSSTOM.\n\n\n if (cssRule.attributeStyleMap) {\n cssRule.attributeStyleMap.set(prop, cssValue);\n } else {\n cssRule.style.setProperty(prop, cssValue);\n }\n } catch (err) {\n // IE may throw if property is unknown.\n return false;\n }\n\n return true;\n};\n/**\n * Remove a style property.\n */\n\n\nvar removeProperty = function removeProperty(cssRule, prop) {\n try {\n // Support CSSTOM.\n if (cssRule.attributeStyleMap) {\n cssRule.attributeStyleMap.delete(prop);\n } else {\n cssRule.style.removeProperty(prop);\n }\n } catch (err) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] DOMException \\\"\" + err.message + \"\\\" was thrown. Tried to remove property \\\"\" + prop + \"\\\".\") : void 0;\n }\n};\n/**\n * Set the selector.\n */\n\n\nvar setSelector = function setSelector(cssRule, selectorText) {\n cssRule.selectorText = selectorText; // Return false if setter was not successful.\n // Currently works in chrome only.\n\n return cssRule.selectorText === selectorText;\n};\n/**\n * Gets the `head` element upon the first call and caches it.\n * We assume it can't be null.\n */\n\n\nvar getHead = memoize(function () {\n return document.querySelector('head');\n});\n/**\n * Find attached sheet with an index higher than the passed one.\n */\n\nfunction findHigherSheet(registry, options) {\n for (var i = 0; i < registry.length; i++) {\n var sheet = registry[i];\n\n if (sheet.attached && sheet.options.index > options.index && sheet.options.insertionPoint === options.insertionPoint) {\n return sheet;\n }\n }\n\n return null;\n}\n/**\n * Find attached sheet with the highest index.\n */\n\n\nfunction findHighestSheet(registry, options) {\n for (var i = registry.length - 1; i >= 0; i--) {\n var sheet = registry[i];\n\n if (sheet.attached && sheet.options.insertionPoint === options.insertionPoint) {\n return sheet;\n }\n }\n\n return null;\n}\n/**\n * Find a comment with \"jss\" inside.\n */\n\n\nfunction findCommentNode(text) {\n var head = getHead();\n\n for (var i = 0; i < head.childNodes.length; i++) {\n var node = head.childNodes[i];\n\n if (node.nodeType === 8 && node.nodeValue.trim() === text) {\n return node;\n }\n }\n\n return null;\n}\n/**\n * Find a node before which we can insert the sheet.\n */\n\n\nfunction findPrevNode(options) {\n var registry = sheets.registry;\n\n if (registry.length > 0) {\n // Try to insert before the next higher sheet.\n var sheet = findHigherSheet(registry, options);\n\n if (sheet && sheet.renderer) {\n return {\n parent: sheet.renderer.element.parentNode,\n node: sheet.renderer.element\n };\n } // Otherwise insert after the last attached.\n\n\n sheet = findHighestSheet(registry, options);\n\n if (sheet && sheet.renderer) {\n return {\n parent: sheet.renderer.element.parentNode,\n node: sheet.renderer.element.nextSibling\n };\n }\n } // Try to find a comment placeholder if registry is empty.\n\n\n var insertionPoint = options.insertionPoint;\n\n if (insertionPoint && typeof insertionPoint === 'string') {\n var comment = findCommentNode(insertionPoint);\n\n if (comment) {\n return {\n parent: comment.parentNode,\n node: comment.nextSibling\n };\n } // If user specifies an insertion point and it can't be found in the document -\n // bad specificity issues may appear.\n\n\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Insertion point \\\"\" + insertionPoint + \"\\\" not found.\") : void 0;\n }\n\n return false;\n}\n/**\n * Insert style element into the DOM.\n */\n\n\nfunction insertStyle(style, options) {\n var insertionPoint = options.insertionPoint;\n var nextNode = findPrevNode(options);\n\n if (nextNode !== false && nextNode.parent) {\n nextNode.parent.insertBefore(style, nextNode.node);\n return;\n } // Works with iframes and any node types.\n\n\n if (insertionPoint && typeof insertionPoint.nodeType === 'number') {\n var insertionPointElement = insertionPoint;\n var parentNode = insertionPointElement.parentNode;\n if (parentNode) parentNode.insertBefore(style, insertionPointElement.nextSibling);else process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Insertion point is not in the DOM.') : void 0;\n return;\n }\n\n getHead().appendChild(style);\n}\n/**\n * Read jss nonce setting from the page if the user has set it.\n */\n\n\nvar getNonce = memoize(function () {\n var node = document.querySelector('meta[property=\"csp-nonce\"]');\n return node ? node.getAttribute('content') : null;\n});\n\nvar _insertRule = function insertRule(container, rule, index) {\n try {\n if ('insertRule' in container) {\n container.insertRule(rule, index);\n } // Keyframes rule.\n else if ('appendRule' in container) {\n container.appendRule(rule);\n }\n } catch (err) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] \" + err.message) : void 0;\n return false;\n }\n\n return container.cssRules[index];\n};\n\nvar getValidRuleInsertionIndex = function getValidRuleInsertionIndex(container, index) {\n var maxIndex = container.cssRules.length; // In case previous insertion fails, passed index might be wrong\n\n if (index === undefined || index > maxIndex) {\n // eslint-disable-next-line no-param-reassign\n return maxIndex;\n }\n\n return index;\n};\n\nvar createStyle = function createStyle() {\n var el = document.createElement('style'); // Without it, IE will have a broken source order specificity if we\n // insert rules after we insert the style tag.\n // It seems to kick-off the source order specificity algorithm.\n\n el.textContent = '\\n';\n return el;\n};\n\nvar DomRenderer = /*#__PURE__*/function () {\n // Will be empty if link: true option is not set, because\n // it is only for use together with insertRule API.\n function DomRenderer(sheet) {\n this.getPropertyValue = getPropertyValue;\n this.setProperty = setProperty;\n this.removeProperty = removeProperty;\n this.setSelector = setSelector;\n this.hasInsertedRules = false;\n this.cssRules = []; // There is no sheet when the renderer is used from a standalone StyleRule.\n\n if (sheet) sheets.add(sheet);\n this.sheet = sheet;\n\n var _ref = this.sheet ? this.sheet.options : {},\n media = _ref.media,\n meta = _ref.meta,\n element = _ref.element;\n\n this.element = element || createStyle();\n this.element.setAttribute('data-jss', '');\n if (media) this.element.setAttribute('media', media);\n if (meta) this.element.setAttribute('data-meta', meta);\n var nonce = getNonce();\n if (nonce) this.element.setAttribute('nonce', nonce);\n }\n /**\n * Insert style element into render tree.\n */\n\n\n var _proto = DomRenderer.prototype;\n\n _proto.attach = function attach() {\n // In the case the element node is external and it is already in the DOM.\n if (this.element.parentNode || !this.sheet) return;\n insertStyle(this.element, this.sheet.options); // When rules are inserted using `insertRule` API, after `sheet.detach().attach()`\n // most browsers create a new CSSStyleSheet, except of all IEs.\n\n var deployed = Boolean(this.sheet && this.sheet.deployed);\n\n if (this.hasInsertedRules && deployed) {\n this.hasInsertedRules = false;\n this.deploy();\n }\n }\n /**\n * Remove style element from render tree.\n */\n ;\n\n _proto.detach = function detach() {\n if (!this.sheet) return;\n var parentNode = this.element.parentNode;\n if (parentNode) parentNode.removeChild(this.element); // In the most browsers, rules inserted using insertRule() API will be lost when style element is removed.\n // Though IE will keep them and we need a consistent behavior.\n\n if (this.sheet.options.link) {\n this.cssRules = [];\n this.element.textContent = '\\n';\n }\n }\n /**\n * Inject CSS string into element.\n */\n ;\n\n _proto.deploy = function deploy() {\n var sheet = this.sheet;\n if (!sheet) return;\n\n if (sheet.options.link) {\n this.insertRules(sheet.rules);\n return;\n }\n\n this.element.textContent = \"\\n\" + sheet.toString() + \"\\n\";\n }\n /**\n * Insert RuleList into an element.\n */\n ;\n\n _proto.insertRules = function insertRules(rules, nativeParent) {\n for (var i = 0; i < rules.index.length; i++) {\n this.insertRule(rules.index[i], i, nativeParent);\n }\n }\n /**\n * Insert a rule into element.\n */\n ;\n\n _proto.insertRule = function insertRule(rule, index, nativeParent) {\n if (nativeParent === void 0) {\n nativeParent = this.element.sheet;\n }\n\n if (rule.rules) {\n var parent = rule;\n var latestNativeParent = nativeParent;\n\n if (rule.type === 'conditional' || rule.type === 'keyframes') {\n var _insertionIndex = getValidRuleInsertionIndex(nativeParent, index); // We need to render the container without children first.\n\n\n latestNativeParent = _insertRule(nativeParent, parent.toString({\n children: false\n }), _insertionIndex);\n\n if (latestNativeParent === false) {\n return false;\n }\n\n this.refCssRule(rule, _insertionIndex, latestNativeParent);\n }\n\n this.insertRules(parent.rules, latestNativeParent);\n return latestNativeParent;\n }\n\n var ruleStr = rule.toString();\n if (!ruleStr) return false;\n var insertionIndex = getValidRuleInsertionIndex(nativeParent, index);\n\n var nativeRule = _insertRule(nativeParent, ruleStr, insertionIndex);\n\n if (nativeRule === false) {\n return false;\n }\n\n this.hasInsertedRules = true;\n this.refCssRule(rule, insertionIndex, nativeRule);\n return nativeRule;\n };\n\n _proto.refCssRule = function refCssRule(rule, index, cssRule) {\n rule.renderable = cssRule; // We only want to reference the top level rules, deleteRule API doesn't support removing nested rules\n // like rules inside media queries or keyframes\n\n if (rule.options.parent instanceof StyleSheet) {\n this.cssRules.splice(index, 0, cssRule);\n }\n }\n /**\n * Delete a rule.\n */\n ;\n\n _proto.deleteRule = function deleteRule(cssRule) {\n var sheet = this.element.sheet;\n var index = this.indexOf(cssRule);\n if (index === -1) return false;\n sheet.deleteRule(index);\n this.cssRules.splice(index, 1);\n return true;\n }\n /**\n * Get index of a CSS Rule.\n */\n ;\n\n _proto.indexOf = function indexOf(cssRule) {\n return this.cssRules.indexOf(cssRule);\n }\n /**\n * Generate a new CSS rule and replace the existing one.\n */\n ;\n\n _proto.replaceRule = function replaceRule(cssRule, rule) {\n var index = this.indexOf(cssRule);\n if (index === -1) return false;\n this.element.sheet.deleteRule(index);\n this.cssRules.splice(index, 1);\n return this.insertRule(rule, index);\n }\n /**\n * Get all rules elements.\n */\n ;\n\n _proto.getRules = function getRules() {\n return this.element.sheet.cssRules;\n };\n\n return DomRenderer;\n}();\n\nvar instanceCounter = 0;\n\nvar Jss = /*#__PURE__*/function () {\n function Jss(options) {\n this.id = instanceCounter++;\n this.version = \"10.9.0\";\n this.plugins = new PluginsRegistry();\n this.options = {\n id: {\n minify: false\n },\n createGenerateId: createGenerateId,\n Renderer: isInBrowser ? DomRenderer : null,\n plugins: []\n };\n this.generateId = createGenerateId({\n minify: false\n });\n\n for (var i = 0; i < plugins.length; i++) {\n this.plugins.use(plugins[i], {\n queue: 'internal'\n });\n }\n\n this.setup(options);\n }\n /**\n * Prepares various options, applies plugins.\n * Should not be used twice on the same instance, because there is no plugins\n * deduplication logic.\n */\n\n\n var _proto = Jss.prototype;\n\n _proto.setup = function setup(options) {\n if (options === void 0) {\n options = {};\n }\n\n if (options.createGenerateId) {\n this.options.createGenerateId = options.createGenerateId;\n }\n\n if (options.id) {\n this.options.id = _extends({}, this.options.id, options.id);\n }\n\n if (options.createGenerateId || options.id) {\n this.generateId = this.options.createGenerateId(this.options.id);\n }\n\n if (options.insertionPoint != null) this.options.insertionPoint = options.insertionPoint;\n\n if ('Renderer' in options) {\n this.options.Renderer = options.Renderer;\n } // eslint-disable-next-line prefer-spread\n\n\n if (options.plugins) this.use.apply(this, options.plugins);\n return this;\n }\n /**\n * Create a Style Sheet.\n */\n ;\n\n _proto.createStyleSheet = function createStyleSheet(styles, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n index = _options.index;\n\n if (typeof index !== 'number') {\n index = sheets.index === 0 ? 0 : sheets.index + 1;\n }\n\n var sheet = new StyleSheet(styles, _extends({}, options, {\n jss: this,\n generateId: options.generateId || this.generateId,\n insertionPoint: this.options.insertionPoint,\n Renderer: this.options.Renderer,\n index: index\n }));\n this.plugins.onProcessSheet(sheet);\n return sheet;\n }\n /**\n * Detach the Style Sheet and remove it from the registry.\n */\n ;\n\n _proto.removeStyleSheet = function removeStyleSheet(sheet) {\n sheet.detach();\n sheets.remove(sheet);\n return this;\n }\n /**\n * Create a rule without a Style Sheet.\n * [Deprecated] will be removed in the next major version.\n */\n ;\n\n _proto.createRule = function createRule$1(name, style, options) {\n if (style === void 0) {\n style = {};\n }\n\n if (options === void 0) {\n options = {};\n } // Enable rule without name for inline styles.\n\n\n if (_typeof(name) === 'object') {\n return this.createRule(undefined, name, style);\n }\n\n var ruleOptions = _extends({}, options, {\n name: name,\n jss: this,\n Renderer: this.options.Renderer\n });\n\n if (!ruleOptions.generateId) ruleOptions.generateId = this.generateId;\n if (!ruleOptions.classes) ruleOptions.classes = {};\n if (!ruleOptions.keyframes) ruleOptions.keyframes = {};\n var rule = createRule(name, style, ruleOptions);\n if (rule) this.plugins.onProcessRule(rule);\n return rule;\n }\n /**\n * Register plugin. Passed function will be invoked with a rule instance.\n */\n ;\n\n _proto.use = function use() {\n var _this = this;\n\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n plugins.forEach(function (plugin) {\n _this.plugins.use(plugin);\n });\n return this;\n };\n\n return Jss;\n}();\n\nvar createJss = function createJss(options) {\n return new Jss(options);\n};\n/**\n * SheetsManager is like a WeakMap which is designed to count StyleSheet\n * instances and attach/detach automatically.\n * Used in react-jss.\n */\n\n\nvar SheetsManager = /*#__PURE__*/function () {\n function SheetsManager() {\n this.length = 0;\n this.sheets = new WeakMap();\n }\n\n var _proto = SheetsManager.prototype;\n\n _proto.get = function get(key) {\n var entry = this.sheets.get(key);\n return entry && entry.sheet;\n };\n\n _proto.add = function add(key, sheet) {\n if (this.sheets.has(key)) return;\n this.length++;\n this.sheets.set(key, {\n sheet: sheet,\n refs: 0\n });\n };\n\n _proto.manage = function manage(key) {\n var entry = this.sheets.get(key);\n\n if (entry) {\n if (entry.refs === 0) {\n entry.sheet.attach();\n }\n\n entry.refs++;\n return entry.sheet;\n }\n\n warning(false, \"[JSS] SheetsManager: can't find sheet to manage\");\n return undefined;\n };\n\n _proto.unmanage = function unmanage(key) {\n var entry = this.sheets.get(key);\n\n if (entry) {\n if (entry.refs > 0) {\n entry.refs--;\n if (entry.refs === 0) entry.sheet.detach();\n }\n } else {\n warning(false, \"SheetsManager: can't find sheet to unmanage\");\n }\n };\n\n _createClass(SheetsManager, [{\n key: \"size\",\n get: function get() {\n return this.length;\n }\n }]);\n\n return SheetsManager;\n}();\n/**\n* Export a constant indicating if this browser has CSSTOM support.\n* https://developers.google.com/web/updates/2018/03/cssom\n*/\n\n\nvar hasCSSTOMSupport = (typeof CSS === \"undefined\" ? \"undefined\" : _typeof(CSS)) === 'object' && CSS != null && 'number' in CSS;\n/**\n * Extracts a styles object with only props that contain function values.\n */\n\nfunction getDynamicStyles(styles) {\n var to = null;\n\n for (var key in styles) {\n var value = styles[key];\n\n var type = _typeof(value);\n\n if (type === 'function') {\n if (!to) to = {};\n to[key] = value;\n } else if (type === 'object' && value !== null && !Array.isArray(value)) {\n var extracted = getDynamicStyles(value);\n\n if (extracted) {\n if (!to) to = {};\n to[key] = extracted;\n }\n }\n }\n\n return to;\n}\n/**\n * A better abstraction over CSS.\n *\n * @copyright Oleg Isonen (Slobodskoi) / Isonen 2014-present\n * @website https://github.com/cssinjs/jss\n * @license MIT\n */\n\n\nvar index = createJss();\nexport default index;\nexport { RuleList, SheetsManager, SheetsRegistry, createJss as create, createGenerateId, createRule, getDynamicStyles, hasCSSTOMSupport, sheets, toCssValue };","// Used https://github.com/thinkloop/multi-key-cache as inspiration\nvar multiKeyStore = {\n set: function set(cache, key1, key2, value) {\n var subCache = cache.get(key1);\n\n if (!subCache) {\n subCache = new Map();\n cache.set(key1, subCache);\n }\n\n subCache.set(key2, value);\n },\n get: function get(cache, key1, key2) {\n var subCache = cache.get(key1);\n return subCache ? subCache.get(key2) : undefined;\n },\n delete: function _delete(cache, key1, key2) {\n var subCache = cache.get(key1);\n subCache.delete(key2);\n }\n};\nexport default multiKeyStore;","import nested from '../ThemeProvider/nested';\n/**\n * This is the list of the style rule name we use as drop in replacement for the built-in\n * pseudo classes (:checked, :disabled, :focused, etc.).\n *\n * Why do they exist in the first place?\n * These classes are used at a specificity of 2.\n * It allows them to override previously definied styles as well as\n * being untouched by simple user overrides.\n */\n\nvar pseudoClasses = ['checked', 'disabled', 'error', 'focused', 'focusVisible', 'required', 'expanded', 'selected']; // Returns a function which generates unique class names based on counters.\n// When new generator function is created, rule counter is reset.\n// We need to reset the rule counter for SSR for each request.\n//\n// It's inspired by\n// https://github.com/cssinjs/jss/blob/4e6a05dd3f7b6572fdd3ab216861d9e446c20331/src/utils/createGenerateClassName.js\n\nexport default function createGenerateClassName() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _options$disableGloba = options.disableGlobal,\n disableGlobal = _options$disableGloba === void 0 ? false : _options$disableGloba,\n _options$productionPr = options.productionPrefix,\n productionPrefix = _options$productionPr === void 0 ? 'jss' : _options$productionPr,\n _options$seed = options.seed,\n seed = _options$seed === void 0 ? '' : _options$seed;\n var seedPrefix = seed === '' ? '' : \"\".concat(seed, \"-\");\n var ruleCounter = 0;\n\n var getNextCounterId = function getNextCounterId() {\n ruleCounter += 1;\n\n if (process.env.NODE_ENV !== 'production') {\n if (ruleCounter >= 1e10) {\n console.warn(['Material-UI: You might have a memory leak.', 'The ruleCounter is not supposed to grow that much.'].join(''));\n }\n }\n\n return ruleCounter;\n };\n\n return function (rule, styleSheet) {\n var name = styleSheet.options.name; // Is a global static MUI style?\n\n if (name && name.indexOf('Mui') === 0 && !styleSheet.options.link && !disableGlobal) {\n // We can use a shorthand class name, we never use the keys to style the components.\n if (pseudoClasses.indexOf(rule.key) !== -1) {\n return \"Mui-\".concat(rule.key);\n }\n\n var prefix = \"\".concat(seedPrefix).concat(name, \"-\").concat(rule.key);\n\n if (!styleSheet.options.theme[nested] || seed !== '') {\n return prefix;\n }\n\n return \"\".concat(prefix, \"-\").concat(getNextCounterId());\n }\n\n if (process.env.NODE_ENV === 'production') {\n return \"\".concat(seedPrefix).concat(productionPrefix).concat(getNextCounterId());\n }\n\n var suffix = \"\".concat(rule.key, \"-\").concat(getNextCounterId()); // Help with debuggability.\n\n if (styleSheet.options.classNamePrefix) {\n return \"\".concat(seedPrefix).concat(styleSheet.options.classNamePrefix, \"-\").concat(suffix);\n }\n\n return \"\".concat(seedPrefix).concat(suffix);\n };\n}","import warning from 'tiny-warning';\nimport { createRule } from 'jss';\nvar now = Date.now();\nvar fnValuesNs = \"fnValues\" + now;\nvar fnRuleNs = \"fnStyle\" + ++now;\n\nvar functionPlugin = function functionPlugin() {\n return {\n onCreateRule: function onCreateRule(name, decl, options) {\n if (typeof decl !== 'function') return null;\n var rule = createRule(name, {}, options);\n rule[fnRuleNs] = decl;\n return rule;\n },\n onProcessStyle: function onProcessStyle(style, rule) {\n // We need to extract function values from the declaration, so that we can keep core unaware of them.\n // We need to do that only once.\n // We don't need to extract functions on each style update, since this can happen only once.\n // We don't support function values inside of function rules.\n if (fnValuesNs in rule || fnRuleNs in rule) return style;\n var fnValues = {};\n\n for (var prop in style) {\n var value = style[prop];\n if (typeof value !== 'function') continue;\n delete style[prop];\n fnValues[prop] = value;\n }\n\n rule[fnValuesNs] = fnValues;\n return style;\n },\n onUpdate: function onUpdate(data, rule, sheet, options) {\n var styleRule = rule;\n var fnRule = styleRule[fnRuleNs]; // If we have a style function, the entire rule is dynamic and style object\n // will be returned from that function.\n\n if (fnRule) {\n // Empty object will remove all currently defined props\n // in case function rule returns a falsy value.\n styleRule.style = fnRule(data) || {};\n\n if (process.env.NODE_ENV === 'development') {\n for (var prop in styleRule.style) {\n if (typeof styleRule.style[prop] === 'function') {\n process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Function values inside function rules are not supported.') : void 0;\n break;\n }\n }\n }\n }\n\n var fnValues = styleRule[fnValuesNs]; // If we have a fn values map, it is a rule with function values.\n\n if (fnValues) {\n for (var _prop in fnValues) {\n styleRule.prop(_prop, fnValues[_prop](data), options);\n }\n }\n }\n };\n};\n\nexport default functionPlugin;","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { RuleList } from 'jss';\nvar at = '@global';\nvar atPrefix = '@global ';\n\nvar GlobalContainerRule = /*#__PURE__*/function () {\n function GlobalContainerRule(key, styles, options) {\n this.type = 'global';\n this.at = at;\n this.isProcessed = false;\n this.key = key;\n this.options = options;\n this.rules = new RuleList(_extends({}, options, {\n parent: this\n }));\n\n for (var selector in styles) {\n this.rules.add(selector, styles[selector]);\n }\n\n this.rules.process();\n }\n /**\n * Get a rule.\n */\n\n\n var _proto = GlobalContainerRule.prototype;\n\n _proto.getRule = function getRule(name) {\n return this.rules.get(name);\n }\n /**\n * Create and register rule, run plugins.\n */\n ;\n\n _proto.addRule = function addRule(name, style, options) {\n var rule = this.rules.add(name, style, options);\n if (rule) this.options.jss.plugins.onProcessRule(rule);\n return rule;\n }\n /**\n * Replace rule, run plugins.\n */\n ;\n\n _proto.replaceRule = function replaceRule(name, style, options) {\n var newRule = this.rules.replace(name, style, options);\n if (newRule) this.options.jss.plugins.onProcessRule(newRule);\n return newRule;\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.rules.indexOf(rule);\n }\n /**\n * Generates a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n return this.rules.toString(options);\n };\n\n return GlobalContainerRule;\n}();\n\nvar GlobalPrefixedRule = /*#__PURE__*/function () {\n function GlobalPrefixedRule(key, style, options) {\n this.type = 'global';\n this.at = at;\n this.isProcessed = false;\n this.key = key;\n this.options = options;\n var selector = key.substr(atPrefix.length);\n this.rule = options.jss.createRule(selector, style, _extends({}, options, {\n parent: this\n }));\n }\n\n var _proto2 = GlobalPrefixedRule.prototype;\n\n _proto2.toString = function toString(options) {\n return this.rule ? this.rule.toString(options) : '';\n };\n\n return GlobalPrefixedRule;\n}();\n\nvar separatorRegExp = /\\s*,\\s*/g;\n\nfunction addScope(selector, scope) {\n var parts = selector.split(separatorRegExp);\n var scoped = '';\n\n for (var i = 0; i < parts.length; i++) {\n scoped += scope + \" \" + parts[i].trim();\n if (parts[i + 1]) scoped += ', ';\n }\n\n return scoped;\n}\n\nfunction handleNestedGlobalContainerRule(rule, sheet) {\n var options = rule.options,\n style = rule.style;\n var rules = style ? style[at] : null;\n if (!rules) return;\n\n for (var name in rules) {\n sheet.addRule(name, rules[name], _extends({}, options, {\n selector: addScope(name, rule.selector)\n }));\n }\n\n delete style[at];\n}\n\nfunction handlePrefixedGlobalRule(rule, sheet) {\n var options = rule.options,\n style = rule.style;\n\n for (var prop in style) {\n if (prop[0] !== '@' || prop.substr(0, at.length) !== at) continue;\n var selector = addScope(prop.substr(at.length), rule.selector);\n sheet.addRule(selector, style[prop], _extends({}, options, {\n selector: selector\n }));\n delete style[prop];\n }\n}\n/**\n * Convert nested rules to separate, remove them from original styles.\n */\n\n\nfunction jssGlobal() {\n function onCreateRule(name, styles, options) {\n if (!name) return null;\n\n if (name === at) {\n return new GlobalContainerRule(name, styles, options);\n }\n\n if (name[0] === '@' && name.substr(0, atPrefix.length) === atPrefix) {\n return new GlobalPrefixedRule(name, styles, options);\n }\n\n var parent = options.parent;\n\n if (parent) {\n if (parent.type === 'global' || parent.options.parent && parent.options.parent.type === 'global') {\n options.scoped = false;\n }\n }\n\n if (!options.selector && options.scoped === false) {\n options.selector = name;\n }\n\n return null;\n }\n\n function onProcessRule(rule, sheet) {\n if (rule.type !== 'style' || !sheet) return;\n handleNestedGlobalContainerRule(rule, sheet);\n handlePrefixedGlobalRule(rule, sheet);\n }\n\n return {\n onCreateRule: onCreateRule,\n onProcessRule: onProcessRule\n };\n}\n\nexport default jssGlobal;","import _extends from '@babel/runtime/helpers/esm/extends';\nimport warning from 'tiny-warning';\nvar separatorRegExp = /\\s*,\\s*/g;\nvar parentRegExp = /&/g;\nvar refRegExp = /\\$([\\w-]+)/g;\n/**\n * Convert nested rules to separate, remove them from original styles.\n */\n\nfunction jssNested() {\n // Get a function to be used for $ref replacement.\n function getReplaceRef(container, sheet) {\n return function (match, key) {\n var rule = container.getRule(key) || sheet && sheet.getRule(key);\n\n if (rule) {\n return rule.selector;\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Could not find the referenced rule \\\"\" + key + \"\\\" in \\\"\" + (container.options.meta || container.toString()) + \"\\\".\") : void 0;\n return key;\n };\n }\n\n function replaceParentRefs(nestedProp, parentProp) {\n var parentSelectors = parentProp.split(separatorRegExp);\n var nestedSelectors = nestedProp.split(separatorRegExp);\n var result = '';\n\n for (var i = 0; i < parentSelectors.length; i++) {\n var parent = parentSelectors[i];\n\n for (var j = 0; j < nestedSelectors.length; j++) {\n var nested = nestedSelectors[j];\n if (result) result += ', '; // Replace all & by the parent or prefix & with the parent.\n\n result += nested.indexOf('&') !== -1 ? nested.replace(parentRegExp, parent) : parent + \" \" + nested;\n }\n }\n\n return result;\n }\n\n function getOptions(rule, container, prevOptions) {\n // Options has been already created, now we only increase index.\n if (prevOptions) return _extends({}, prevOptions, {\n index: prevOptions.index + 1\n });\n var nestingLevel = rule.options.nestingLevel;\n nestingLevel = nestingLevel === undefined ? 1 : nestingLevel + 1;\n\n var options = _extends({}, rule.options, {\n nestingLevel: nestingLevel,\n index: container.indexOf(rule) + 1 // We don't need the parent name to be set options for chlid.\n\n });\n\n delete options.name;\n return options;\n }\n\n function onProcessStyle(style, rule, sheet) {\n if (rule.type !== 'style') return style;\n var styleRule = rule;\n var container = styleRule.options.parent;\n var options;\n var replaceRef;\n\n for (var prop in style) {\n var isNested = prop.indexOf('&') !== -1;\n var isNestedConditional = prop[0] === '@';\n if (!isNested && !isNestedConditional) continue;\n options = getOptions(styleRule, container, options);\n\n if (isNested) {\n var selector = replaceParentRefs(prop, styleRule.selector); // Lazily create the ref replacer function just once for\n // all nested rules within the sheet.\n\n if (!replaceRef) replaceRef = getReplaceRef(container, sheet); // Replace all $refs.\n\n selector = selector.replace(refRegExp, replaceRef);\n var name = styleRule.key + \"-\" + prop;\n\n if ('replaceRule' in container) {\n // for backward compatibility\n container.replaceRule(name, style[prop], _extends({}, options, {\n selector: selector\n }));\n } else {\n container.addRule(name, style[prop], _extends({}, options, {\n selector: selector\n }));\n }\n } else if (isNestedConditional) {\n // Place conditional right after the parent rule to ensure right ordering.\n container.addRule(prop, {}, options).addRule(styleRule.key, style[prop], {\n selector: styleRule.selector\n });\n }\n\n delete style[prop];\n }\n\n return style;\n }\n\n return {\n onProcessStyle: onProcessStyle\n };\n}\n\nexport default jssNested;","/* eslint-disable no-var, prefer-template */\nvar uppercasePattern = /[A-Z]/g;\nvar msPattern = /^ms-/;\nvar cache = {};\n\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase();\n}\n\nfunction hyphenateStyleName(name) {\n if (cache.hasOwnProperty(name)) {\n return cache[name];\n }\n\n var hName = name.replace(uppercasePattern, toHyphenLower);\n return cache[name] = msPattern.test(hName) ? '-' + hName : hName;\n}\n\nexport default hyphenateStyleName;","import hyphenate from 'hyphenate-style-name';\n/**\n * Convert camel cased property names to dash separated.\n */\n\nfunction convertCase(style) {\n var converted = {};\n\n for (var prop in style) {\n var key = prop.indexOf('--') === 0 ? prop : hyphenate(prop);\n converted[key] = style[prop];\n }\n\n if (style.fallbacks) {\n if (Array.isArray(style.fallbacks)) converted.fallbacks = style.fallbacks.map(convertCase);else converted.fallbacks = convertCase(style.fallbacks);\n }\n\n return converted;\n}\n/**\n * Allow camel cased property names by converting them back to dasherized.\n */\n\n\nfunction camelCase() {\n function onProcessStyle(style) {\n if (Array.isArray(style)) {\n // Handle rules like @font-face, which can have multiple styles in an array\n for (var index = 0; index < style.length; index++) {\n style[index] = convertCase(style[index]);\n }\n\n return style;\n }\n\n return convertCase(style);\n }\n\n function onChangeValue(value, prop, rule) {\n if (prop.indexOf('--') === 0) {\n return value;\n }\n\n var hyphenatedProp = hyphenate(prop); // There was no camel case in place\n\n if (prop === hyphenatedProp) return value;\n rule.prop(hyphenatedProp, value); // Core will ignore that property value we set the proper one above.\n\n return null;\n }\n\n return {\n onProcessStyle: onProcessStyle,\n onChangeValue: onChangeValue\n };\n}\n\nexport default camelCase;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nimport { hasCSSTOMSupport } from 'jss';\nvar px = hasCSSTOMSupport && CSS ? CSS.px : 'px';\nvar ms = hasCSSTOMSupport && CSS ? CSS.ms : 'ms';\nvar percent = hasCSSTOMSupport && CSS ? CSS.percent : '%';\n/**\n * Generated jss-plugin-default-unit CSS property units\n */\n\nvar defaultUnits = {\n // Animation properties\n 'animation-delay': ms,\n 'animation-duration': ms,\n // Background properties\n 'background-position': px,\n 'background-position-x': px,\n 'background-position-y': px,\n 'background-size': px,\n // Border Properties\n border: px,\n 'border-bottom': px,\n 'border-bottom-left-radius': px,\n 'border-bottom-right-radius': px,\n 'border-bottom-width': px,\n 'border-left': px,\n 'border-left-width': px,\n 'border-radius': px,\n 'border-right': px,\n 'border-right-width': px,\n 'border-top': px,\n 'border-top-left-radius': px,\n 'border-top-right-radius': px,\n 'border-top-width': px,\n 'border-width': px,\n 'border-block': px,\n 'border-block-end': px,\n 'border-block-end-width': px,\n 'border-block-start': px,\n 'border-block-start-width': px,\n 'border-block-width': px,\n 'border-inline': px,\n 'border-inline-end': px,\n 'border-inline-end-width': px,\n 'border-inline-start': px,\n 'border-inline-start-width': px,\n 'border-inline-width': px,\n 'border-start-start-radius': px,\n 'border-start-end-radius': px,\n 'border-end-start-radius': px,\n 'border-end-end-radius': px,\n // Margin properties\n margin: px,\n 'margin-bottom': px,\n 'margin-left': px,\n 'margin-right': px,\n 'margin-top': px,\n 'margin-block': px,\n 'margin-block-end': px,\n 'margin-block-start': px,\n 'margin-inline': px,\n 'margin-inline-end': px,\n 'margin-inline-start': px,\n // Padding properties\n padding: px,\n 'padding-bottom': px,\n 'padding-left': px,\n 'padding-right': px,\n 'padding-top': px,\n 'padding-block': px,\n 'padding-block-end': px,\n 'padding-block-start': px,\n 'padding-inline': px,\n 'padding-inline-end': px,\n 'padding-inline-start': px,\n // Mask properties\n 'mask-position-x': px,\n 'mask-position-y': px,\n 'mask-size': px,\n // Width and height properties\n height: px,\n width: px,\n 'min-height': px,\n 'max-height': px,\n 'min-width': px,\n 'max-width': px,\n // Position properties\n bottom: px,\n left: px,\n top: px,\n right: px,\n inset: px,\n 'inset-block': px,\n 'inset-block-end': px,\n 'inset-block-start': px,\n 'inset-inline': px,\n 'inset-inline-end': px,\n 'inset-inline-start': px,\n // Shadow properties\n 'box-shadow': px,\n 'text-shadow': px,\n // Column properties\n 'column-gap': px,\n 'column-rule': px,\n 'column-rule-width': px,\n 'column-width': px,\n // Font and text properties\n 'font-size': px,\n 'font-size-delta': px,\n 'letter-spacing': px,\n 'text-decoration-thickness': px,\n 'text-indent': px,\n 'text-stroke': px,\n 'text-stroke-width': px,\n 'word-spacing': px,\n // Motion properties\n motion: px,\n 'motion-offset': px,\n // Outline properties\n outline: px,\n 'outline-offset': px,\n 'outline-width': px,\n // Perspective properties\n perspective: px,\n 'perspective-origin-x': percent,\n 'perspective-origin-y': percent,\n // Transform properties\n 'transform-origin': percent,\n 'transform-origin-x': percent,\n 'transform-origin-y': percent,\n 'transform-origin-z': percent,\n // Transition properties\n 'transition-delay': ms,\n 'transition-duration': ms,\n // Alignment properties\n 'vertical-align': px,\n 'flex-basis': px,\n // Some random properties\n 'shape-margin': px,\n size: px,\n gap: px,\n // Grid properties\n grid: px,\n 'grid-gap': px,\n 'row-gap': px,\n 'grid-row-gap': px,\n 'grid-column-gap': px,\n 'grid-template-rows': px,\n 'grid-template-columns': px,\n 'grid-auto-rows': px,\n 'grid-auto-columns': px,\n // Not existing properties.\n // Used to avoid issues with jss-plugin-expand integration.\n 'box-shadow-x': px,\n 'box-shadow-y': px,\n 'box-shadow-blur': px,\n 'box-shadow-spread': px,\n 'font-line-height': px,\n 'text-shadow-x': px,\n 'text-shadow-y': px,\n 'text-shadow-blur': px\n};\n/**\n * Clones the object and adds a camel cased property version.\n */\n\nfunction addCamelCasedVersion(obj) {\n var regExp = /(-[a-z])/g;\n\n var replace = function replace(str) {\n return str[1].toUpperCase();\n };\n\n var newObj = {};\n\n for (var key in obj) {\n newObj[key] = obj[key];\n newObj[key.replace(regExp, replace)] = obj[key];\n }\n\n return newObj;\n}\n\nvar units = addCamelCasedVersion(defaultUnits);\n/**\n * Recursive deep style passing function\n */\n\nfunction iterate(prop, value, options) {\n if (value == null) return value;\n\n if (Array.isArray(value)) {\n for (var i = 0; i < value.length; i++) {\n value[i] = iterate(prop, value[i], options);\n }\n } else if (_typeof(value) === 'object') {\n if (prop === 'fallbacks') {\n for (var innerProp in value) {\n value[innerProp] = iterate(innerProp, value[innerProp], options);\n }\n } else {\n for (var _innerProp in value) {\n value[_innerProp] = iterate(prop + \"-\" + _innerProp, value[_innerProp], options);\n }\n } // eslint-disable-next-line no-restricted-globals\n\n } else if (typeof value === 'number' && isNaN(value) === false) {\n var unit = options[prop] || units[prop]; // Add the unit if available, except for the special case of 0px.\n\n if (unit && !(value === 0 && unit === px)) {\n return typeof unit === 'function' ? unit(value).toString() : \"\" + value + unit;\n }\n\n return value.toString();\n }\n\n return value;\n}\n/**\n * Add unit to numeric values.\n */\n\n\nfunction defaultUnit(options) {\n if (options === void 0) {\n options = {};\n }\n\n var camelCasedOptions = addCamelCasedVersion(options);\n\n function onProcessStyle(style, rule) {\n if (rule.type !== 'style') return style;\n\n for (var prop in style) {\n style[prop] = iterate(prop, style[prop], camelCasedOptions);\n }\n\n return style;\n }\n\n function onChangeValue(value, prop) {\n return iterate(prop, value, camelCasedOptions);\n }\n\n return {\n onProcessStyle: onProcessStyle,\n onChangeValue: onChangeValue\n };\n}\n\nexport default defaultUnit;","import isInBrowser from 'is-in-browser';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray'; // Export javascript style and css style vendor prefixes.\n\nvar js = '';\nvar css = '';\nvar vendor = '';\nvar browser = '';\nvar isTouch = isInBrowser && 'ontouchstart' in document.documentElement; // We should not do anything if required serverside.\n\nif (isInBrowser) {\n // Order matters. We need to check Webkit the last one because\n // other vendors use to add Webkit prefixes to some properties\n var jsCssMap = {\n Moz: '-moz-',\n ms: '-ms-',\n O: '-o-',\n Webkit: '-webkit-'\n };\n\n var _document$createEleme = document.createElement('p'),\n style = _document$createEleme.style;\n\n var testProp = 'Transform';\n\n for (var key in jsCssMap) {\n if (key + testProp in style) {\n js = key;\n css = jsCssMap[key];\n break;\n }\n } // Correctly detect the Edge browser.\n\n\n if (js === 'Webkit' && 'msHyphens' in style) {\n js = 'ms';\n css = jsCssMap.ms;\n browser = 'edge';\n } // Correctly detect the Safari browser.\n\n\n if (js === 'Webkit' && '-apple-trailing-word' in style) {\n vendor = 'apple';\n }\n}\n/**\n * Vendor prefix string for the current browser.\n *\n * @type {{js: String, css: String, vendor: String, browser: String}}\n * @api public\n */\n\n\nvar prefix = {\n js: js,\n css: css,\n vendor: vendor,\n browser: browser,\n isTouch: isTouch\n};\n/**\n * Test if a keyframe at-rule should be prefixed or not\n *\n * @param {String} vendor prefix string for the current browser.\n * @return {String}\n * @api public\n */\n\nfunction supportedKeyframes(key) {\n // Keyframes is already prefixed. e.g. key = '@-webkit-keyframes a'\n if (key[1] === '-') return key; // No need to prefix IE/Edge. Older browsers will ignore unsupported rules.\n // https://caniuse.com/#search=keyframes\n\n if (prefix.js === 'ms') return key;\n return \"@\" + prefix.css + \"keyframes\" + key.substr(10);\n} // https://caniuse.com/#search=appearance\n\n\nvar appearence = {\n noPrefill: ['appearance'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'appearance') return false;\n if (prefix.js === 'ms') return \"-webkit-\" + prop;\n return prefix.css + prop;\n }\n}; // https://caniuse.com/#search=color-adjust\n\nvar colorAdjust = {\n noPrefill: ['color-adjust'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'color-adjust') return false;\n if (prefix.js === 'Webkit') return prefix.css + \"print-\" + prop;\n return prop;\n }\n};\nvar regExp = /[-\\s]+(.)?/g;\n/**\n * Replaces the letter with the capital letter\n *\n * @param {String} match\n * @param {String} c\n * @return {String}\n * @api private\n */\n\nfunction toUpper(match, c) {\n return c ? c.toUpperCase() : '';\n}\n/**\n * Convert dash separated strings to camel-cased.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\n\nfunction camelize(str) {\n return str.replace(regExp, toUpper);\n}\n/**\n * Convert dash separated strings to pascal cased.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\n\nfunction pascalize(str) {\n return camelize(\"-\" + str);\n} // but we can use a longhand property instead.\n// https://caniuse.com/#search=mask\n\n\nvar mask = {\n noPrefill: ['mask'],\n supportedProperty: function supportedProperty(prop, style) {\n if (!/^mask/.test(prop)) return false;\n\n if (prefix.js === 'Webkit') {\n var longhand = 'mask-image';\n\n if (camelize(longhand) in style) {\n return prop;\n }\n\n if (prefix.js + pascalize(longhand) in style) {\n return prefix.css + prop;\n }\n }\n\n return prop;\n }\n}; // https://caniuse.com/#search=text-orientation\n\nvar textOrientation = {\n noPrefill: ['text-orientation'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'text-orientation') return false;\n\n if (prefix.vendor === 'apple' && !prefix.isTouch) {\n return prefix.css + prop;\n }\n\n return prop;\n }\n}; // https://caniuse.com/#search=transform\n\nvar transform = {\n noPrefill: ['transform'],\n supportedProperty: function supportedProperty(prop, style, options) {\n if (prop !== 'transform') return false;\n\n if (options.transform) {\n return prop;\n }\n\n return prefix.css + prop;\n }\n}; // https://caniuse.com/#search=transition\n\nvar transition = {\n noPrefill: ['transition'],\n supportedProperty: function supportedProperty(prop, style, options) {\n if (prop !== 'transition') return false;\n\n if (options.transition) {\n return prop;\n }\n\n return prefix.css + prop;\n }\n}; // https://caniuse.com/#search=writing-mode\n\nvar writingMode = {\n noPrefill: ['writing-mode'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'writing-mode') return false;\n\n if (prefix.js === 'Webkit' || prefix.js === 'ms' && prefix.browser !== 'edge') {\n return prefix.css + prop;\n }\n\n return prop;\n }\n}; // https://caniuse.com/#search=user-select\n\nvar userSelect = {\n noPrefill: ['user-select'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'user-select') return false;\n\n if (prefix.js === 'Moz' || prefix.js === 'ms' || prefix.vendor === 'apple') {\n return prefix.css + prop;\n }\n\n return prop;\n }\n}; // https://caniuse.com/#search=multicolumn\n// https://github.com/postcss/autoprefixer/issues/491\n// https://github.com/postcss/autoprefixer/issues/177\n\nvar breakPropsOld = {\n supportedProperty: function supportedProperty(prop, style) {\n if (!/^break-/.test(prop)) return false;\n\n if (prefix.js === 'Webkit') {\n var jsProp = \"WebkitColumn\" + pascalize(prop);\n return jsProp in style ? prefix.css + \"column-\" + prop : false;\n }\n\n if (prefix.js === 'Moz') {\n var _jsProp = \"page\" + pascalize(prop);\n\n return _jsProp in style ? \"page-\" + prop : false;\n }\n\n return false;\n }\n}; // See https://github.com/postcss/autoprefixer/issues/324.\n\nvar inlineLogicalOld = {\n supportedProperty: function supportedProperty(prop, style) {\n if (!/^(border|margin|padding)-inline/.test(prop)) return false;\n if (prefix.js === 'Moz') return prop;\n var newProp = prop.replace('-inline', '');\n return prefix.js + pascalize(newProp) in style ? prefix.css + newProp : false;\n }\n}; // Camelization is required because we can't test using.\n// CSS syntax for e.g. in FF.\n\nvar unprefixed = {\n supportedProperty: function supportedProperty(prop, style) {\n return camelize(prop) in style ? prop : false;\n }\n};\nvar prefixed = {\n supportedProperty: function supportedProperty(prop, style) {\n var pascalized = pascalize(prop); // Return custom CSS variable without prefixing.\n\n if (prop[0] === '-') return prop; // Return already prefixed value without prefixing.\n\n if (prop[0] === '-' && prop[1] === '-') return prop;\n if (prefix.js + pascalized in style) return prefix.css + prop; // Try webkit fallback.\n\n if (prefix.js !== 'Webkit' && \"Webkit\" + pascalized in style) return \"-webkit-\" + prop;\n return false;\n }\n}; // https://caniuse.com/#search=scroll-snap\n\nvar scrollSnap = {\n supportedProperty: function supportedProperty(prop) {\n if (prop.substring(0, 11) !== 'scroll-snap') return false;\n\n if (prefix.js === 'ms') {\n return \"\" + prefix.css + prop;\n }\n\n return prop;\n }\n}; // https://caniuse.com/#search=overscroll-behavior\n\nvar overscrollBehavior = {\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'overscroll-behavior') return false;\n\n if (prefix.js === 'ms') {\n return prefix.css + \"scroll-chaining\";\n }\n\n return prop;\n }\n};\nvar propMap = {\n 'flex-grow': 'flex-positive',\n 'flex-shrink': 'flex-negative',\n 'flex-basis': 'flex-preferred-size',\n 'justify-content': 'flex-pack',\n order: 'flex-order',\n 'align-items': 'flex-align',\n 'align-content': 'flex-line-pack' // 'align-self' is handled by 'align-self' plugin.\n\n}; // Support old flex spec from 2012.\n\nvar flex2012 = {\n supportedProperty: function supportedProperty(prop, style) {\n var newProp = propMap[prop];\n if (!newProp) return false;\n return prefix.js + pascalize(newProp) in style ? prefix.css + newProp : false;\n }\n};\nvar propMap$1 = {\n flex: 'box-flex',\n 'flex-grow': 'box-flex',\n 'flex-direction': ['box-orient', 'box-direction'],\n order: 'box-ordinal-group',\n 'align-items': 'box-align',\n 'flex-flow': ['box-orient', 'box-direction'],\n 'justify-content': 'box-pack'\n};\nvar propKeys = Object.keys(propMap$1);\n\nvar prefixCss = function prefixCss(p) {\n return prefix.css + p;\n}; // Support old flex spec from 2009.\n\n\nvar flex2009 = {\n supportedProperty: function supportedProperty(prop, style, _ref) {\n var multiple = _ref.multiple;\n\n if (propKeys.indexOf(prop) > -1) {\n var newProp = propMap$1[prop];\n\n if (!Array.isArray(newProp)) {\n return prefix.js + pascalize(newProp) in style ? prefix.css + newProp : false;\n }\n\n if (!multiple) return false;\n\n for (var i = 0; i < newProp.length; i++) {\n if (!(prefix.js + pascalize(newProp[0]) in style)) {\n return false;\n }\n }\n\n return newProp.map(prefixCss);\n }\n\n return false;\n }\n}; // plugins = [\n// ...plugins,\n// breakPropsOld,\n// inlineLogicalOld,\n// unprefixed,\n// prefixed,\n// scrollSnap,\n// flex2012,\n// flex2009\n// ]\n// Plugins without 'noPrefill' value, going last.\n// 'flex-*' plugins should be at the bottom.\n// 'flex2009' going after 'flex2012'.\n// 'prefixed' going after 'unprefixed'\n\nvar plugins = [appearence, colorAdjust, mask, textOrientation, transform, transition, writingMode, userSelect, breakPropsOld, inlineLogicalOld, unprefixed, prefixed, scrollSnap, overscrollBehavior, flex2012, flex2009];\nvar propertyDetectors = plugins.filter(function (p) {\n return p.supportedProperty;\n}).map(function (p) {\n return p.supportedProperty;\n});\nvar noPrefill = plugins.filter(function (p) {\n return p.noPrefill;\n}).reduce(function (a, p) {\n a.push.apply(a, _toConsumableArray(p.noPrefill));\n return a;\n}, []);\nvar el;\nvar cache = {};\n\nif (isInBrowser) {\n el = document.createElement('p'); // We test every property on vendor prefix requirement.\n // Once tested, result is cached. It gives us up to 70% perf boost.\n // http://jsperf.com/element-style-object-access-vs-plain-object\n //\n // Prefill cache with known css properties to reduce amount of\n // properties we need to feature test at runtime.\n // http://davidwalsh.name/vendor-prefix\n\n var computed = window.getComputedStyle(document.documentElement, '');\n\n for (var key$1 in computed) {\n // eslint-disable-next-line no-restricted-globals\n if (!isNaN(key$1)) cache[computed[key$1]] = computed[key$1];\n } // Properties that cannot be correctly detected using the\n // cache prefill method.\n\n\n noPrefill.forEach(function (x) {\n return delete cache[x];\n });\n}\n/**\n * Test if a property is supported, returns supported property with vendor\n * prefix if required. Returns `false` if not supported.\n *\n * @param {String} prop dash separated\n * @param {Object} [options]\n * @return {String|Boolean}\n * @api public\n */\n\n\nfunction supportedProperty(prop, options) {\n if (options === void 0) {\n options = {};\n } // For server-side rendering.\n\n\n if (!el) return prop; // Remove cache for benchmark tests or return property from the cache.\n\n if (process.env.NODE_ENV !== 'benchmark' && cache[prop] != null) {\n return cache[prop];\n } // Check if 'transition' or 'transform' natively supported in browser.\n\n\n if (prop === 'transition' || prop === 'transform') {\n options[prop] = prop in el.style;\n } // Find a plugin for current prefix property.\n\n\n for (var i = 0; i < propertyDetectors.length; i++) {\n cache[prop] = propertyDetectors[i](prop, el.style, options); // Break loop, if value found.\n\n if (cache[prop]) break;\n } // Reset styles for current property.\n // Firefox can even throw an error for invalid properties, e.g., \"0\".\n\n\n try {\n el.style[prop] = '';\n } catch (err) {\n return false;\n }\n\n return cache[prop];\n}\n\nvar cache$1 = {};\nvar transitionProperties = {\n transition: 1,\n 'transition-property': 1,\n '-webkit-transition': 1,\n '-webkit-transition-property': 1\n};\nvar transPropsRegExp = /(^\\s*[\\w-]+)|, (\\s*[\\w-]+)(?![^()]*\\))/g;\nvar el$1;\n/**\n * Returns prefixed value transition/transform if needed.\n *\n * @param {String} match\n * @param {String} p1\n * @param {String} p2\n * @return {String}\n * @api private\n */\n\nfunction prefixTransitionCallback(match, p1, p2) {\n if (p1 === 'var') return 'var';\n if (p1 === 'all') return 'all';\n if (p2 === 'all') return ', all';\n var prefixedValue = p1 ? supportedProperty(p1) : \", \" + supportedProperty(p2);\n if (!prefixedValue) return p1 || p2;\n return prefixedValue;\n}\n\nif (isInBrowser) el$1 = document.createElement('p');\n/**\n * Returns prefixed value if needed. Returns `false` if value is not supported.\n *\n * @param {String} property\n * @param {String} value\n * @return {String|Boolean}\n * @api public\n */\n\nfunction supportedValue(property, value) {\n // For server-side rendering.\n var prefixedValue = value;\n if (!el$1 || property === 'content') return value; // It is a string or a number as a string like '1'.\n // We want only prefixable values here.\n // eslint-disable-next-line no-restricted-globals\n\n if (typeof prefixedValue !== 'string' || !isNaN(parseInt(prefixedValue, 10))) {\n return prefixedValue;\n } // Create cache key for current value.\n\n\n var cacheKey = property + prefixedValue; // Remove cache for benchmark tests or return value from cache.\n\n if (process.env.NODE_ENV !== 'benchmark' && cache$1[cacheKey] != null) {\n return cache$1[cacheKey];\n } // IE can even throw an error in some cases, for e.g. style.content = 'bar'.\n\n\n try {\n // Test value as it is.\n el$1.style[property] = prefixedValue;\n } catch (err) {\n // Return false if value not supported.\n cache$1[cacheKey] = false;\n return false;\n } // If 'transition' or 'transition-property' property.\n\n\n if (transitionProperties[property]) {\n prefixedValue = prefixedValue.replace(transPropsRegExp, prefixTransitionCallback);\n } else if (el$1.style[property] === '') {\n // Value with a vendor prefix.\n prefixedValue = prefix.css + prefixedValue; // Hardcode test to convert \"flex\" to \"-ms-flexbox\" for IE10.\n\n if (prefixedValue === '-ms-flex') el$1.style[property] = '-ms-flexbox'; // Test prefixed value.\n\n el$1.style[property] = prefixedValue; // Return false if value not supported.\n\n if (el$1.style[property] === '') {\n cache$1[cacheKey] = false;\n return false;\n }\n } // Reset styles for current property.\n\n\n el$1.style[property] = ''; // Write current value to cache.\n\n cache$1[cacheKey] = prefixedValue;\n return cache$1[cacheKey];\n}\n\nexport { prefix, supportedKeyframes, supportedProperty, supportedValue };","import { supportedKeyframes, supportedValue, supportedProperty } from 'css-vendor';\nimport { toCssValue } from 'jss';\n/**\n * Add vendor prefix to a property name when needed.\n */\n\nfunction jssVendorPrefixer() {\n function onProcessRule(rule) {\n if (rule.type === 'keyframes') {\n var atRule = rule;\n atRule.at = supportedKeyframes(atRule.at);\n }\n }\n\n function prefixStyle(style) {\n for (var prop in style) {\n var value = style[prop];\n\n if (prop === 'fallbacks' && Array.isArray(value)) {\n style[prop] = value.map(prefixStyle);\n continue;\n }\n\n var changeProp = false;\n var supportedProp = supportedProperty(prop);\n if (supportedProp && supportedProp !== prop) changeProp = true;\n var changeValue = false;\n var supportedValue$1 = supportedValue(supportedProp, toCssValue(value));\n if (supportedValue$1 && supportedValue$1 !== value) changeValue = true;\n\n if (changeProp || changeValue) {\n if (changeProp) delete style[prop];\n style[supportedProp || prop] = supportedValue$1 || value;\n }\n }\n\n return style;\n }\n\n function onProcessStyle(style, rule) {\n if (rule.type !== 'style') return style;\n return prefixStyle(style);\n }\n\n function onChangeValue(value, prop) {\n return supportedValue(prop, toCssValue(value)) || value;\n }\n\n return {\n onProcessRule: onProcessRule,\n onProcessStyle: onProcessStyle,\n onChangeValue: onChangeValue\n };\n}\n\nexport default jssVendorPrefixer;","/**\n * Sort props by length.\n */\nfunction jssPropsSort() {\n var sort = function sort(prop0, prop1) {\n if (prop0.length === prop1.length) {\n return prop0 > prop1 ? 1 : -1;\n }\n\n return prop0.length - prop1.length;\n };\n\n return {\n onProcessStyle: function onProcessStyle(style, rule) {\n if (rule.type !== 'style') return style;\n var newStyle = {};\n var props = Object.keys(style).sort(sort);\n\n for (var i = 0; i < props.length; i++) {\n newStyle[props[i]] = style[props[i]];\n }\n\n return newStyle;\n }\n };\n}\n\nexport default jssPropsSort;","import functions from 'jss-plugin-rule-value-function';\nimport global from 'jss-plugin-global';\nimport nested from 'jss-plugin-nested';\nimport camelCase from 'jss-plugin-camel-case';\nimport defaultUnit from 'jss-plugin-default-unit';\nimport vendorPrefixer from 'jss-plugin-vendor-prefixer';\nimport propsSort from 'jss-plugin-props-sort'; // Subset of jss-preset-default with only the plugins the Material-UI components are using.\n\nexport default function jssPreset() {\n return {\n plugins: [functions(), global(), nested(), camelCase(), defaultUnit(), // Disable the vendor prefixer server-side, it does nothing.\n // This way, we can get a performance boost.\n // In the documentation, we are using `autoprefixer` to solve this problem.\n typeof window === 'undefined' ? null : vendorPrefixer(), propsSort()]\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport React from 'react';\nimport { exactProp } from '@material-ui/utils';\nimport createGenerateClassName from '../createGenerateClassName';\nimport { create } from 'jss';\nimport jssPreset from '../jssPreset'; // Default JSS instance.\n\nvar jss = create(jssPreset()); // Use a singleton or the provided one by the context.\n//\n// The counter-based approach doesn't tolerate any mistake.\n// It's much safer to use the same counter everywhere.\n\nvar generateClassName = createGenerateClassName(); // Exported for test purposes\n\nexport var sheetsManager = new Map();\nvar defaultOptions = {\n disableGeneration: false,\n generateClassName: generateClassName,\n jss: jss,\n sheetsCache: null,\n sheetsManager: sheetsManager,\n sheetsRegistry: null\n};\nexport var StylesContext = /*#__PURE__*/React.createContext(defaultOptions);\n\nif (process.env.NODE_ENV !== 'production') {\n StylesContext.displayName = 'StylesContext';\n}\n\nvar injectFirstNode;\nexport default function StylesProvider(props) {\n var children = props.children,\n _props$injectFirst = props.injectFirst,\n injectFirst = _props$injectFirst === void 0 ? false : _props$injectFirst,\n _props$disableGenerat = props.disableGeneration,\n disableGeneration = _props$disableGenerat === void 0 ? false : _props$disableGenerat,\n localOptions = _objectWithoutProperties(props, [\"children\", \"injectFirst\", \"disableGeneration\"]);\n\n var outerOptions = React.useContext(StylesContext);\n\n var context = _extends({}, outerOptions, {\n disableGeneration: disableGeneration\n }, localOptions);\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof window === 'undefined' && !context.sheetsManager) {\n console.error('Material-UI: You need to use the ServerStyleSheets API when rendering on the server.');\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (context.jss.options.insertionPoint && injectFirst) {\n console.error('Material-UI: You cannot use a custom insertionPoint and at the same time.');\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (injectFirst && localOptions.jss) {\n console.error('Material-UI: You cannot use the jss and injectFirst props at the same time.');\n }\n }\n\n if (!context.jss.options.insertionPoint && injectFirst && typeof window !== 'undefined') {\n if (!injectFirstNode) {\n var head = document.head;\n injectFirstNode = document.createComment('mui-inject-first');\n head.insertBefore(injectFirstNode, head.firstChild);\n }\n\n context.jss = create({\n plugins: jssPreset().plugins,\n insertionPoint: injectFirstNode\n });\n }\n\n return /*#__PURE__*/React.createElement(StylesContext.Provider, {\n value: context\n }, children);\n}\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\n\nif (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? void 0 : void 0;\n}","/* eslint-disable import/prefer-default-export */\n// Global index counter to preserve source order.\n// We create the style sheet during the creation of the component,\n// children are handled after the parents, so the order of style elements would be parent->child.\n// It is a problem though when a parent passes a className\n// which needs to override any child's styles.\n// StyleSheet of the child has a higher specificity, because of the source order.\n// So our solution is to render sheets them in the reverse order child->sheet, so\n// that parent has a higher specificity.\nvar indexCounter = -1e9;\nexport function increment() {\n indexCounter += 1;\n\n if (process.env.NODE_ENV !== 'production') {\n if (indexCounter >= 0) {\n console.warn(['Material-UI: You might have a memory leak.', 'The indexCounter is not supposed to grow that much.'].join('\\n'));\n }\n }\n\n return indexCounter;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport { deepmerge } from '@material-ui/utils';\nimport noopTheme from './noopTheme';\nexport default function getStylesCreator(stylesOrCreator) {\n var themingEnabled = typeof stylesOrCreator === 'function';\n\n if (process.env.NODE_ENV !== 'production') {\n if (_typeof(stylesOrCreator) !== 'object' && !themingEnabled) {\n console.error(['Material-UI: The `styles` argument provided is invalid.', 'You need to provide a function generating the styles or a styles object.'].join('\\n'));\n }\n }\n\n return {\n create: function create(theme, name) {\n var styles;\n\n try {\n styles = themingEnabled ? stylesOrCreator(theme) : stylesOrCreator;\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n if (themingEnabled === true && theme === noopTheme) {\n // TODO: prepend error message/name instead\n console.error(['Material-UI: The `styles` argument provided is invalid.', 'You are providing a function without a theme in the context.', 'One of the parent elements needs to use a ThemeProvider.'].join('\\n'));\n }\n }\n\n throw err;\n }\n\n if (!name || !theme.overrides || !theme.overrides[name]) {\n return styles;\n }\n\n var overrides = theme.overrides[name];\n\n var stylesWithOverrides = _extends({}, styles);\n\n Object.keys(overrides).forEach(function (key) {\n if (process.env.NODE_ENV !== 'production') {\n if (!stylesWithOverrides[key]) {\n console.warn(['Material-UI: You are trying to override a style that does not exist.', \"Fix the `\".concat(key, \"` key of `theme.overrides.\").concat(name, \"`.\")].join('\\n'));\n }\n }\n\n stylesWithOverrides[key] = deepmerge(stylesWithOverrides[key], overrides[key]);\n });\n return stylesWithOverrides;\n },\n options: {}\n };\n}","// We use the same empty object to ref count the styles that don't need a theme object.\nvar noopTheme = {};\nexport default noopTheme;","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport { getDynamicStyles } from 'jss';\nimport mergeClasses from '../mergeClasses';\nimport multiKeyStore from './multiKeyStore';\nimport useTheme from '../useTheme';\nimport { StylesContext } from '../StylesProvider';\nimport { increment } from './indexCounter';\nimport getStylesCreator from '../getStylesCreator';\nimport noopTheme from '../getStylesCreator/noopTheme';\n\nfunction getClasses(_ref, classes, Component) {\n var state = _ref.state,\n stylesOptions = _ref.stylesOptions;\n\n if (stylesOptions.disableGeneration) {\n return classes || {};\n }\n\n if (!state.cacheClasses) {\n state.cacheClasses = {\n // Cache for the finalized classes value.\n value: null,\n // Cache for the last used classes prop pointer.\n lastProp: null,\n // Cache for the last used rendered classes pointer.\n lastJSS: {}\n };\n } // Tracks if either the rendered classes or classes prop has changed,\n // requiring the generation of a new finalized classes object.\n\n\n var generate = false;\n\n if (state.classes !== state.cacheClasses.lastJSS) {\n state.cacheClasses.lastJSS = state.classes;\n generate = true;\n }\n\n if (classes !== state.cacheClasses.lastProp) {\n state.cacheClasses.lastProp = classes;\n generate = true;\n }\n\n if (generate) {\n state.cacheClasses.value = mergeClasses({\n baseClasses: state.cacheClasses.lastJSS,\n newClasses: classes,\n Component: Component\n });\n }\n\n return state.cacheClasses.value;\n}\n\nfunction attach(_ref2, props) {\n var state = _ref2.state,\n theme = _ref2.theme,\n stylesOptions = _ref2.stylesOptions,\n stylesCreator = _ref2.stylesCreator,\n name = _ref2.name;\n\n if (stylesOptions.disableGeneration) {\n return;\n }\n\n var sheetManager = multiKeyStore.get(stylesOptions.sheetsManager, stylesCreator, theme);\n\n if (!sheetManager) {\n sheetManager = {\n refs: 0,\n staticSheet: null,\n dynamicStyles: null\n };\n multiKeyStore.set(stylesOptions.sheetsManager, stylesCreator, theme, sheetManager);\n }\n\n var options = _extends({}, stylesCreator.options, stylesOptions, {\n theme: theme,\n flip: typeof stylesOptions.flip === 'boolean' ? stylesOptions.flip : theme.direction === 'rtl'\n });\n\n options.generateId = options.serverGenerateClassName || options.generateClassName;\n var sheetsRegistry = stylesOptions.sheetsRegistry;\n\n if (sheetManager.refs === 0) {\n var staticSheet;\n\n if (stylesOptions.sheetsCache) {\n staticSheet = multiKeyStore.get(stylesOptions.sheetsCache, stylesCreator, theme);\n }\n\n var styles = stylesCreator.create(theme, name);\n\n if (!staticSheet) {\n staticSheet = stylesOptions.jss.createStyleSheet(styles, _extends({\n link: false\n }, options));\n staticSheet.attach();\n\n if (stylesOptions.sheetsCache) {\n multiKeyStore.set(stylesOptions.sheetsCache, stylesCreator, theme, staticSheet);\n }\n }\n\n if (sheetsRegistry) {\n sheetsRegistry.add(staticSheet);\n }\n\n sheetManager.staticSheet = staticSheet;\n sheetManager.dynamicStyles = getDynamicStyles(styles);\n }\n\n if (sheetManager.dynamicStyles) {\n var dynamicSheet = stylesOptions.jss.createStyleSheet(sheetManager.dynamicStyles, _extends({\n link: true\n }, options));\n dynamicSheet.update(props);\n dynamicSheet.attach();\n state.dynamicSheet = dynamicSheet;\n state.classes = mergeClasses({\n baseClasses: sheetManager.staticSheet.classes,\n newClasses: dynamicSheet.classes\n });\n\n if (sheetsRegistry) {\n sheetsRegistry.add(dynamicSheet);\n }\n } else {\n state.classes = sheetManager.staticSheet.classes;\n }\n\n sheetManager.refs += 1;\n}\n\nfunction update(_ref3, props) {\n var state = _ref3.state;\n\n if (state.dynamicSheet) {\n state.dynamicSheet.update(props);\n }\n}\n\nfunction detach(_ref4) {\n var state = _ref4.state,\n theme = _ref4.theme,\n stylesOptions = _ref4.stylesOptions,\n stylesCreator = _ref4.stylesCreator;\n\n if (stylesOptions.disableGeneration) {\n return;\n }\n\n var sheetManager = multiKeyStore.get(stylesOptions.sheetsManager, stylesCreator, theme);\n sheetManager.refs -= 1;\n var sheetsRegistry = stylesOptions.sheetsRegistry;\n\n if (sheetManager.refs === 0) {\n multiKeyStore.delete(stylesOptions.sheetsManager, stylesCreator, theme);\n stylesOptions.jss.removeStyleSheet(sheetManager.staticSheet);\n\n if (sheetsRegistry) {\n sheetsRegistry.remove(sheetManager.staticSheet);\n }\n }\n\n if (state.dynamicSheet) {\n stylesOptions.jss.removeStyleSheet(state.dynamicSheet);\n\n if (sheetsRegistry) {\n sheetsRegistry.remove(state.dynamicSheet);\n }\n }\n}\n\nfunction useSynchronousEffect(func, values) {\n var key = React.useRef([]);\n var output; // Store \"generation\" key. Just returns a new object every time\n\n var currentKey = React.useMemo(function () {\n return {};\n }, values); // eslint-disable-line react-hooks/exhaustive-deps\n // \"the first render\", or \"memo dropped the value\"\n\n if (key.current !== currentKey) {\n key.current = currentKey;\n output = func();\n }\n\n React.useEffect(function () {\n return function () {\n if (output) {\n output();\n }\n };\n }, [currentKey] // eslint-disable-line react-hooks/exhaustive-deps\n );\n}\n\nexport default function makeStyles(stylesOrCreator) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var name = options.name,\n classNamePrefixOption = options.classNamePrefix,\n Component = options.Component,\n _options$defaultTheme = options.defaultTheme,\n defaultTheme = _options$defaultTheme === void 0 ? noopTheme : _options$defaultTheme,\n stylesOptions2 = _objectWithoutProperties(options, [\"name\", \"classNamePrefix\", \"Component\", \"defaultTheme\"]);\n\n var stylesCreator = getStylesCreator(stylesOrCreator);\n var classNamePrefix = name || classNamePrefixOption || 'makeStyles';\n stylesCreator.options = {\n index: increment(),\n name: name,\n meta: classNamePrefix,\n classNamePrefix: classNamePrefix\n };\n\n var useStyles = function useStyles() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var theme = useTheme() || defaultTheme;\n\n var stylesOptions = _extends({}, React.useContext(StylesContext), stylesOptions2);\n\n var instance = React.useRef();\n var shouldUpdate = React.useRef();\n useSynchronousEffect(function () {\n var current = {\n name: name,\n state: {},\n stylesCreator: stylesCreator,\n stylesOptions: stylesOptions,\n theme: theme\n };\n attach(current, props);\n shouldUpdate.current = false;\n instance.current = current;\n return function () {\n detach(current);\n };\n }, [theme, stylesCreator]);\n React.useEffect(function () {\n if (shouldUpdate.current) {\n update(instance.current, props);\n }\n\n shouldUpdate.current = true;\n });\n var classes = getClasses(instance.current, props.classes, Component);\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(classes);\n }\n\n return classes;\n };\n\n return useStyles;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport React from 'react';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport { chainPropTypes, getDisplayName } from '@material-ui/utils';\nimport makeStyles from '../makeStyles';\nimport getThemeProps from '../getThemeProps';\nimport useTheme from '../useTheme'; // Link a style sheet with a component.\n// It does not modify the component passed to it;\n// instead, it returns a new component, with a `classes` property.\n\nvar withStyles = function withStyles(stylesOrCreator) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function (Component) {\n var defaultTheme = options.defaultTheme,\n _options$withTheme = options.withTheme,\n withTheme = _options$withTheme === void 0 ? false : _options$withTheme,\n name = options.name,\n stylesOptions = _objectWithoutProperties(options, [\"defaultTheme\", \"withTheme\", \"name\"]);\n\n if (process.env.NODE_ENV !== 'production') {\n if (Component === undefined) {\n throw new Error(['You are calling withStyles(styles)(Component) with an undefined component.', 'You may have forgotten to import it.'].join('\\n'));\n }\n }\n\n var classNamePrefix = name;\n\n if (process.env.NODE_ENV !== 'production') {\n if (!name) {\n // Provide a better DX outside production.\n var displayName = getDisplayName(Component);\n\n if (displayName !== undefined) {\n classNamePrefix = displayName;\n }\n }\n }\n\n var useStyles = makeStyles(stylesOrCreator, _extends({\n defaultTheme: defaultTheme,\n Component: Component,\n name: name || Component.displayName,\n classNamePrefix: classNamePrefix\n }, stylesOptions));\n var WithStyles = /*#__PURE__*/React.forwardRef(function WithStyles(props, ref) {\n var classesProp = props.classes,\n innerRef = props.innerRef,\n other = _objectWithoutProperties(props, [\"classes\", \"innerRef\"]); // The wrapper receives only user supplied props, which could be a subset of\n // the actual props Component might receive due to merging with defaultProps.\n // So copying it here would give us the same result in the wrapper as well.\n\n\n var classes = useStyles(_extends({}, Component.defaultProps, props));\n var theme;\n var more = other;\n\n if (typeof name === 'string' || withTheme) {\n // name and withTheme are invariant in the outer scope\n // eslint-disable-next-line react-hooks/rules-of-hooks\n theme = useTheme() || defaultTheme;\n\n if (name) {\n more = getThemeProps({\n theme: theme,\n name: name,\n props: other\n });\n } // Provide the theme to the wrapped component.\n // So we don't have to use the `withTheme()` Higher-order Component.\n\n\n if (withTheme && !more.theme) {\n more.theme = theme;\n }\n }\n\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: innerRef || ref,\n classes: classes\n }, more));\n });\n process.env.NODE_ENV !== \"production\" ? void 0 : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n WithStyles.displayName = \"WithStyles(\".concat(getDisplayName(Component), \")\");\n }\n\n hoistNonReactStatics(WithStyles, Component);\n\n if (process.env.NODE_ENV !== 'production') {\n // Exposed for test purposes.\n WithStyles.Naked = Component;\n WithStyles.options = options;\n WithStyles.useStyles = useStyles;\n }\n\n return WithStyles;\n };\n};\n\nexport default withStyles;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { withStyles as withStylesWithoutDefault } from '@material-ui/styles';\nimport defaultTheme from './defaultTheme';\n\nfunction withStyles(stylesOrCreator, options) {\n return withStylesWithoutDefault(stylesOrCreator, _extends({\n defaultTheme: defaultTheme\n }, options));\n}\n\nexport default withStyles;","function makeTypeChecker(tabsRole) {\n return function (element) {\n return !!element.type && element.type.tabsRole === tabsRole;\n };\n}\n\nexport var isTab = makeTypeChecker('Tab');\nexport var isTabList = makeTypeChecker('TabList');\nexport var isTabPanel = makeTypeChecker('TabPanel');","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nimport { Children, cloneElement } from 'react';\nimport { isTabPanel, isTab, isTabList } from './elementTypes';\n\nfunction isTabChild(child) {\n return isTab(child) || isTabList(child) || isTabPanel(child);\n}\n\nexport function deepMap(children, callback) {\n return Children.map(children, function (child) {\n // null happens when conditionally rendering TabPanel/Tab\n // see https://github.com/reactjs/react-tabs/issues/37\n if (child === null) return null;\n\n if (isTabChild(child)) {\n return callback(child);\n }\n\n if (child.props && child.props.children && _typeof(child.props.children) === 'object') {\n // Clone the child that has children and map them too\n return /*#__PURE__*/cloneElement(child, _extends({}, child.props, {\n children: deepMap(child.props.children, callback)\n }));\n }\n\n return child;\n });\n}\nexport function deepForEach(children, callback) {\n return Children.forEach(children, function (child) {\n // null happens when conditionally rendering TabPanel/Tab\n // see https://github.com/reactjs/react-tabs/issues/37\n if (child === null) return;\n\n if (isTab(child) || isTabPanel(child)) {\n callback(child);\n } else if (child.props && child.props.children && _typeof(child.props.children) === 'object') {\n if (isTabList(child)) callback(child);\n deepForEach(child.props.children, callback);\n }\n });\n}","// Get a universally unique identifier\nvar count = 0;\nexport default function uuid() {\n return \"react-tabs-\" + count++;\n}\nexport function reset() {\n count = 0;\n}","import { deepForEach } from './childrenDeepMap';\nimport { isTab } from './elementTypes';\nexport function getTabsCount(children) {\n var tabCount = 0;\n deepForEach(children, function (child) {\n if (isTab(child)) tabCount++;\n });\n return tabCount;\n}","var _excluded = [\"children\", \"className\", \"disabledTabClassName\", \"domRef\", \"focus\", \"forceRenderTabPanel\", \"onSelect\", \"selectedIndex\", \"selectedTabClassName\", \"selectedTabPanelClassName\", \"environment\", \"disableUpDownKeys\"];\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nimport React, { cloneElement, useRef } from 'react';\nimport cx from 'clsx';\nimport uuid from '../helpers/uuid';\nimport { childrenPropType } from '../helpers/propTypes';\nimport { getTabsCount as getTabsCountHelper } from '../helpers/count';\nimport { deepMap } from '../helpers/childrenDeepMap';\nimport { isTabList, isTabPanel, isTab } from '../helpers/elementTypes';\n\nfunction isNode(node) {\n return node && 'getAttribute' in node;\n} // Determine if a node from event.target is a Tab element\n\n\nfunction isTabNode(node) {\n return isNode(node) && node.getAttribute('data-rttab');\n} // Determine if a tab node is disabled\n\n\nfunction isTabDisabled(node) {\n return isNode(node) && node.getAttribute('aria-disabled') === 'true';\n}\n\nvar canUseActiveElement;\n\nfunction determineCanUseActiveElement(environment) {\n var env = environment || (typeof window !== 'undefined' ? window : undefined);\n\n try {\n canUseActiveElement = !!(typeof env !== 'undefined' && env.document && env.document.activeElement);\n } catch (e) {\n // Work around for IE bug when accessing document.activeElement in an iframe\n // Refer to the following resources:\n // http://stackoverflow.com/a/10982960/369687\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12733599\n canUseActiveElement = false;\n }\n}\n\nvar defaultProps = {\n className: 'react-tabs',\n focus: false\n};\n\nvar UncontrolledTabs = function UncontrolledTabs(props) {\n var tabNodes = useRef([]);\n var tabIds = useRef([]);\n var panelIds = useRef([]);\n\n var _ref = useRef();\n\n function setSelected(index, event) {\n // Check index boundary\n if (index < 0 || index >= getTabsCount()) return;\n var onSelect = props.onSelect,\n selectedIndex = props.selectedIndex; // Call change event handler\n\n onSelect(index, selectedIndex, event);\n }\n\n function getNextTab(index) {\n var count = getTabsCount(); // Look for non-disabled tab from index to the last tab on the right\n\n for (var i = index + 1; i < count; i++) {\n if (!isTabDisabled(getTab(i))) {\n return i;\n }\n } // If no tab found, continue searching from first on left to index\n\n\n for (var _i = 0; _i < index; _i++) {\n if (!isTabDisabled(getTab(_i))) {\n return _i;\n }\n } // No tabs are disabled, return index\n\n\n return index;\n }\n\n function getPrevTab(index) {\n var i = index; // Look for non-disabled tab from index to first tab on the left\n\n while (i--) {\n if (!isTabDisabled(getTab(i))) {\n return i;\n }\n } // If no tab found, continue searching from last tab on right to index\n\n\n i = getTabsCount();\n\n while (i-- > index) {\n if (!isTabDisabled(getTab(i))) {\n return i;\n }\n } // No tabs are disabled, return index\n\n\n return index;\n }\n\n function getFirstTab() {\n var count = getTabsCount(); // Look for non disabled tab from the first tab\n\n for (var i = 0; i < count; i++) {\n if (!isTabDisabled(getTab(i))) {\n return i;\n }\n }\n\n return null;\n }\n\n function getLastTab() {\n var i = getTabsCount(); // Look for non disabled tab from the last tab\n\n while (i--) {\n if (!isTabDisabled(getTab(i))) {\n return i;\n }\n }\n\n return null;\n }\n\n function getTabsCount() {\n var children = props.children;\n return getTabsCountHelper(children);\n }\n\n function getTab(index) {\n return tabNodes.current[\"tabs-\" + index];\n }\n\n function getChildren() {\n var index = 0;\n var children = props.children,\n disabledTabClassName = props.disabledTabClassName,\n focus = props.focus,\n forceRenderTabPanel = props.forceRenderTabPanel,\n selectedIndex = props.selectedIndex,\n selectedTabClassName = props.selectedTabClassName,\n selectedTabPanelClassName = props.selectedTabPanelClassName,\n environment = props.environment;\n tabIds.current = tabIds.current || [];\n panelIds.current = panelIds.current || [];\n var diff = tabIds.current.length - getTabsCount(); // Add ids if new tabs have been added\n // Don't bother removing ids, just keep them in case they are added again\n // This is more efficient, and keeps the uuid counter under control\n\n while (diff++ < 0) {\n tabIds.current.push(uuid());\n panelIds.current.push(uuid());\n } // Map children to dynamically setup refs\n\n\n return deepMap(children, function (child) {\n var result = child; // Clone TabList and Tab components to have refs\n\n if (isTabList(child)) {\n var listIndex = 0; // Figure out if the current focus in the DOM is set on a Tab\n // If it is we should keep the focus on the next selected tab\n\n var wasTabFocused = false;\n\n if (canUseActiveElement == null) {\n determineCanUseActiveElement(environment);\n }\n\n if (canUseActiveElement) {\n wasTabFocused = React.Children.toArray(child.props.children).filter(isTab).some(function (tab, i) {\n var env = environment || (typeof window !== 'undefined' ? window : undefined);\n return env && env.document.activeElement === getTab(i);\n });\n }\n\n result = /*#__PURE__*/cloneElement(child, {\n children: deepMap(child.props.children, function (tab) {\n var key = \"tabs-\" + listIndex;\n var selected = selectedIndex === listIndex;\n var props = {\n tabRef: function tabRef(node) {\n tabNodes.current[key] = node;\n },\n id: tabIds.current[listIndex],\n panelId: panelIds.current[listIndex],\n selected: selected,\n focus: selected && (focus || wasTabFocused)\n };\n if (selectedTabClassName) props.selectedClassName = selectedTabClassName;\n if (disabledTabClassName) props.disabledClassName = disabledTabClassName;\n listIndex++;\n return /*#__PURE__*/cloneElement(tab, props);\n })\n });\n } else if (isTabPanel(child)) {\n var _props = {\n id: panelIds.current[index],\n tabId: tabIds.current[index],\n selected: selectedIndex === index\n };\n if (forceRenderTabPanel) _props.forceRender = forceRenderTabPanel;\n if (selectedTabPanelClassName) _props.selectedClassName = selectedTabPanelClassName;\n index++;\n result = /*#__PURE__*/cloneElement(child, _props);\n }\n\n return result;\n });\n }\n\n function handleKeyDown(e) {\n var direction = props.direction,\n disableUpDownKeys = props.disableUpDownKeys;\n\n if (isTabFromContainer(e.target)) {\n var index = props.selectedIndex;\n var preventDefault = false;\n var useSelectedIndex = false;\n\n if (e.keyCode === 32 || e.keyCode === 13) {\n preventDefault = true;\n useSelectedIndex = false;\n handleClick(e);\n }\n\n if (e.keyCode === 37 || !disableUpDownKeys && e.keyCode === 38) {\n // Select next tab to the left, validate if up arrow is not disabled\n if (direction === 'rtl') {\n index = getNextTab(index);\n } else {\n index = getPrevTab(index);\n }\n\n preventDefault = true;\n useSelectedIndex = true;\n } else if (e.keyCode === 39 || !disableUpDownKeys && e.keyCode === 40) {\n // Select next tab to the right, validate if down arrow is not disabled\n if (direction === 'rtl') {\n index = getPrevTab(index);\n } else {\n index = getNextTab(index);\n }\n\n preventDefault = true;\n useSelectedIndex = true;\n } else if (e.keyCode === 35) {\n // Select last tab (End key)\n index = getLastTab();\n preventDefault = true;\n useSelectedIndex = true;\n } else if (e.keyCode === 36) {\n // Select first tab (Home key)\n index = getFirstTab();\n preventDefault = true;\n useSelectedIndex = true;\n } // This prevents scrollbars from moving around\n\n\n if (preventDefault) {\n e.preventDefault();\n } // Only use the selected index in the state if we're not using the tabbed index\n\n\n if (useSelectedIndex) {\n setSelected(index, e);\n }\n }\n }\n\n function handleClick(e) {\n var node = e.target;\n\n do {\n if (isTabFromContainer(node)) {\n if (isTabDisabled(node)) {\n return;\n }\n\n var index = [].slice.call(node.parentNode.children).filter(isTabNode).indexOf(node);\n setSelected(index, e);\n return;\n }\n } while ((node = node.parentNode) != null);\n }\n /**\n * Determine if a node from event.target is a Tab element for the current Tabs container.\n * If the clicked element is not a Tab, it returns false.\n * If it finds another Tabs container between the Tab and `this`, it returns false.\n */\n\n\n function isTabFromContainer(node) {\n // return immediately if the clicked element is not a Tab.\n if (!isTabNode(node)) {\n return false;\n } // Check if the first occurrence of a Tabs container is `this` one.\n\n\n var nodeAncestor = node.parentElement;\n\n do {\n if (nodeAncestor === _ref.current) return true;\n if (nodeAncestor.getAttribute('data-rttabs')) break;\n nodeAncestor = nodeAncestor.parentElement;\n } while (nodeAncestor);\n\n return false;\n }\n\n var children = props.children,\n className = props.className,\n disabledTabClassName = props.disabledTabClassName,\n domRef = props.domRef,\n focus = props.focus,\n forceRenderTabPanel = props.forceRenderTabPanel,\n onSelect = props.onSelect,\n selectedIndex = props.selectedIndex,\n selectedTabClassName = props.selectedTabClassName,\n selectedTabPanelClassName = props.selectedTabPanelClassName,\n environment = props.environment,\n disableUpDownKeys = props.disableUpDownKeys,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, attributes, {\n className: cx(className),\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n ref: function ref(node) {\n _ref.current = node;\n if (domRef) domRef(node);\n },\n \"data-rttabs\": true\n }), getChildren());\n};\n\nUncontrolledTabs.defaultProps = defaultProps;\nexport default UncontrolledTabs;","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nimport React, { useEffect, useState } from 'react';\nimport { childrenPropType, onSelectPropType, selectedIndexPropType } from '../helpers/propTypes';\nimport UncontrolledTabs from './UncontrolledTabs';\nimport { getTabsCount } from '../helpers/count';\nvar MODE_CONTROLLED = 0;\nvar MODE_UNCONTROLLED = 1;\nvar defaultProps = {\n defaultFocus: false,\n forceRenderTabPanel: false,\n selectedIndex: null,\n defaultIndex: null,\n environment: null,\n disableUpDownKeys: false\n};\n\nvar getModeFromProps = function getModeFromProps(props) {\n return props.selectedIndex === null ? MODE_UNCONTROLLED : MODE_CONTROLLED;\n};\n\nvar checkForIllegalModeChange = function checkForIllegalModeChange(props, mode) {\n if (process.env.NODE_ENV !== 'production' && mode != undefined && mode !== getModeFromProps(props)) {\n throw new Error(\"Switching between controlled mode (by using `selectedIndex`) and uncontrolled mode is not supported in `Tabs`.\\nFor more information about controlled and uncontrolled mode of react-tabs see https://github.com/reactjs/react-tabs#controlled-vs-uncontrolled-mode.\");\n }\n};\n/**\n * State:\n * mode: Initialized only once from props and never changes\n * selectedIndex: null if controlled mode, otherwise initialized with prop defaultIndex, changed on selection of tabs, has effect to ensure it never gets out of bound\n * focus: Because we never remove focus from the Tabs this state is only used to indicate that we should focus the current tab.\n * It is initialized from the prop defaultFocus, and after the first render it is reset back to false. Later it can become true again when using keys to navigate the tabs.\n */\n\n\nvar Tabs = function Tabs(props) {\n var children = props.children,\n defaultFocus = props.defaultFocus,\n defaultIndex = props.defaultIndex,\n onSelect = props.onSelect;\n\n var _useState = useState(defaultFocus),\n focus = _useState[0],\n setFocus = _useState[1];\n\n var _useState2 = useState(getModeFromProps(props)),\n mode = _useState2[0];\n\n var _useState3 = useState(mode === MODE_UNCONTROLLED ? defaultIndex || 0 : null),\n selectedIndex = _useState3[0],\n setSelectedIndex = _useState3[1];\n\n useEffect(function () {\n // Reset focus after initial render, see comment above\n setFocus(false);\n }, []);\n\n if (mode === MODE_UNCONTROLLED) {\n // Ensure that we handle removed tabs and don't let selectedIndex get out of bounds\n var tabsCount = getTabsCount(children);\n useEffect(function () {\n if (selectedIndex != null) {\n var maxTabIndex = Math.max(0, tabsCount - 1);\n setSelectedIndex(Math.min(selectedIndex, maxTabIndex));\n }\n }, [tabsCount]);\n }\n\n checkForIllegalModeChange(props, mode);\n\n var handleSelected = function handleSelected(index, last, event) {\n // Call change event handler\n if (typeof onSelect === 'function') {\n // Check if the change event handler cancels the tab change\n if (onSelect(index, last, event) === false) return;\n } // Always set focus on tabs\n\n\n setFocus(true);\n\n if (mode === MODE_UNCONTROLLED) {\n // Update selected index\n setSelectedIndex(index);\n }\n };\n\n var subProps = _extends({}, props);\n\n subProps.focus = focus;\n subProps.onSelect = handleSelected;\n\n if (selectedIndex != null) {\n subProps.selectedIndex = selectedIndex;\n }\n\n delete subProps.defaultFocus;\n delete subProps.defaultIndex;\n return /*#__PURE__*/React.createElement(UncontrolledTabs, subProps, children);\n};\n\nTabs.defaultProps = defaultProps;\nTabs.tabsRole = 'Tabs';\nexport default Tabs;","var _excluded = [\"children\", \"className\"];\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nimport React from 'react';\nimport cx from 'clsx';\nvar defaultProps = {\n className: 'react-tabs__tab-list'\n};\n\nvar TabList = function TabList(props) {\n var children = props.children,\n className = props.className,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n return /*#__PURE__*/React.createElement(\"ul\", _extends({}, attributes, {\n className: cx(className),\n role: \"tablist\"\n }), children);\n};\n\nTabList.tabsRole = 'TabList';\nTabList.defaultProps = defaultProps;\nexport default TabList;","var _excluded = [\"children\", \"className\", \"disabled\", \"disabledClassName\", \"focus\", \"id\", \"panelId\", \"selected\", \"selectedClassName\", \"tabIndex\", \"tabRef\"];\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nimport React, { useEffect, useRef } from 'react';\nimport cx from 'clsx';\nvar DEFAULT_CLASS = 'react-tabs__tab';\nvar DEFAULT_PROPS = {\n className: DEFAULT_CLASS,\n disabledClassName: DEFAULT_CLASS + \"--disabled\",\n focus: false,\n id: null,\n panelId: null,\n selected: false,\n selectedClassName: DEFAULT_CLASS + \"--selected\"\n};\n\nvar Tab = function Tab(props) {\n var _cx;\n\n var nodeRef = useRef();\n\n var checkFocus = function checkFocus() {\n var selected = props.selected,\n focus = props.focus;\n\n if (selected && focus) {\n nodeRef.current.focus();\n }\n };\n\n useEffect(function () {\n checkFocus();\n });\n\n var children = props.children,\n className = props.className,\n disabled = props.disabled,\n disabledClassName = props.disabledClassName,\n focus = props.focus,\n id = props.id,\n panelId = props.panelId,\n selected = props.selected,\n selectedClassName = props.selectedClassName,\n tabIndex = props.tabIndex,\n tabRef = props.tabRef,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n return /*#__PURE__*/React.createElement(\"li\", _extends({}, attributes, {\n className: cx(className, (_cx = {}, _cx[selectedClassName] = selected, _cx[disabledClassName] = disabled, _cx)),\n ref: function ref(node) {\n nodeRef.current = node;\n if (tabRef) tabRef(node);\n },\n role: \"tab\",\n id: id,\n \"aria-selected\": selected ? 'true' : 'false',\n \"aria-disabled\": disabled ? 'true' : 'false',\n \"aria-controls\": panelId,\n tabIndex: tabIndex || (selected ? '0' : null),\n \"data-rttab\": true\n }), children);\n};\n\nTab.tabsRole = 'Tab';\nTab.defaultProps = DEFAULT_PROPS;\nexport default Tab;","var _excluded = [\"children\", \"className\", \"forceRender\", \"id\", \"selected\", \"selectedClassName\", \"tabId\"];\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nimport React from 'react';\nimport cx from 'clsx';\nvar DEFAULT_CLASS = 'react-tabs__tab-panel';\nvar defaultProps = {\n className: DEFAULT_CLASS,\n forceRender: false,\n selectedClassName: DEFAULT_CLASS + \"--selected\"\n};\n\nvar TabPanel = function TabPanel(props) {\n var _cx;\n\n var children = props.children,\n className = props.className,\n forceRender = props.forceRender,\n id = props.id,\n selected = props.selected,\n selectedClassName = props.selectedClassName,\n tabId = props.tabId,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, attributes, {\n className: cx(className, (_cx = {}, _cx[selectedClassName] = selected, _cx)),\n role: \"tabpanel\",\n id: id,\n \"aria-labelledby\": tabId\n }), forceRender || selected ? children : null);\n};\n\nTabPanel.tabsRole = 'TabPanel';\nTabPanel.defaultProps = defaultProps;\nexport default TabPanel;","module.exports = __webpack_public_path__ + \"media/images/coming_soon-0ea77acd.png\";","import { atom, selector } from \"recoil\";\n\nexport const modalShowState = atom({\n key: \"modalShowState\",\n default: false,\n});\n\nexport const isShowModal = selector({\n key: \"isShowModal\",\n get: ({ get }) => {\n return get(modalShowState);\n },\n});\n\nexport const streetViewShowState = atom({\n key: \"streetViewShowState\",\n default: false,\n});\n\nexport const isShowStreetView = selector({\n key: \"isShowStreetView\",\n get: ({ get }) => {\n return get(streetViewShowState);\n },\n});\n\nexport const modalDataState = atom({\n key: \"modalDataState\",\n default: null,\n});\n\nexport const modalData = selector({\n key: \"modalData\",\n get: ({ get }) => {\n return get(modalDataState);\n },\n});\n\nexport const propertiesState = atom({\n key: \"propertiesState\",\n default: [],\n});\n\nexport const propertiesData = selector({\n key: \"properties\",\n get: ({ get }) => {\n return get(propertiesState);\n },\n});\n\nexport const centerState = atom({\n key: \"centerState\",\n default: {lat: 35.6809591, lng: 139.7673068},\n});\n\nexport const placeChangedState = atom({\n key: \"placeChangedState\",\n default: null,\n});\n\nexport const roomsState = atom({\n key: \"roomsState\",\n default: {},\n});\n\nexport const roomsData = selector({\n key: \"rooms\",\n get: ({ get }) => {\n return get(roomsState);\n },\n});\n\nexport const cityState = atom({\n key: \"cityState\",\n default: {},\n});\n\nexport const citysData = selector({\n key: \"city\",\n get: ({ get }) => {\n return get(cityState);\n },\n});\n\nexport const boundState = atom({\n key: \"boundState\",\n default: {},\n});\n\nexport const boundData = selector({\n key: \"bound\",\n get: ({ get }) => {\n return get(boundState);\n },\n});\n","import { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@material-ui/utils\"; // It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word a the sentence.\n// We only handle the first word.\n\nexport default function capitalize(string) {\n if (typeof string !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: capitalize(string) expects a string argument.\" : _formatMuiErrorMessage(7));\n }\n\n return string.charAt(0).toUpperCase() + string.slice(1);\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('header',[_c('div',{staticClass:\"navbar navbar-dark bg-dark shadow-sm\"},[_c('div',{staticClass:\"container\"},[_vm._m(0),_vm._v(\" \"),_c('a',{staticClass:\"user-name\",attrs:{\"href\":\"#\"}},[_vm._v(\"\\n \"+_vm._s(_vm.customerFullName)+\" 様\\n \")])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{staticClass:\"navbar-brand d-flex align-items-center\",attrs:{\"href\":\"#\"}},[_c('img',{attrs:{\"src\":require(\"navi/logo.png\"),\"width\":\"164\"}})])}]\n\nexport { render, staticRenderFns }","\n \n \n\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Header.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Header.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Header.vue?vue&type=template&id=19e924d0&scoped=true&\"\nimport script from \"./Header.vue?vue&type=script&lang=js&\"\nexport * from \"./Header.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Header.vue?vue&type=style&index=0&id=19e924d0&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"19e924d0\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._m(0),_vm._v(\" \"),_c('div',{staticClass:\"property-detail\"},[_c('ul',{staticClass:\"mb-0 px-0\"},[_c('li',{staticClass:\"list-unstyled\"},[_c('span',{staticClass:\"badge badge-dark mr-2\"},[_vm._v(\"予約者名\")]),_vm._v(_vm._s(_vm.customerFullName)+\"様\\n \")]),_vm._v(\" \"),_c('li',{staticClass:\"list-unstyled\"},[_c('span',{staticClass:\"badge badge-dark mr-2\"},[_vm._v(\"物件名\")]),_vm._v(_vm._s(_vm.reservationRoomWithProperty)+\"\\n \")]),_vm._v(\" \"),_c('li',{staticClass:\"list-unstyled\"},[_c('span',{staticClass:\"badge badge-dark mr-2\"},[_vm._v(\"予約日時\")]),_vm._v(_vm._s(_vm.startTime)+\"\\n \")]),_vm._v(\" \"),_c('li',{staticClass:\"list-unstyled\"},[_c('span',{staticClass:\"badge badge-dark mr-2\"},[_vm._v(\"担当者\")]),_vm._v(_vm._s(_vm.companyName)+\" \"+_vm._s(_vm.userFullName)+\"\\n \")])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h3',{staticClass:\"h6 font-weight-bold\"},[_c('img',{attrs:{\"src\":require(\"navi/icon_home.png\"),\"width\":\"16\"}}),_vm._v(\"\\n 内見予定の物件\\n \")])}]\n\nexport { render, staticRenderFns }","\n \n
\n \n 内見予定の物件\n \n
\n
\n \n 予約者名 {{customerFullName}}様\n \n \n 物件名 {{reservationRoomWithProperty}}\n \n \n 予約日時 {{startTime}}\n \n \n 担当者 {{companyName}} {{userFullName}}\n \n \n
\n
\n \n\n\n\n\n\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoomInfo.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoomInfo.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RoomInfo.vue?vue&type=template&id=678f617a&scoped=true&\"\nimport script from \"./RoomInfo.vue?vue&type=script&lang=js&\"\nexport * from \"./RoomInfo.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"678f617a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"stepper-contents stepper-scroll-icon text-center mt-3\"},[_vm._m(0),_vm._v(\" \"),_c('ul',{staticClass:\"stepper stepper-scroll d-flex px-0 mb-1\",attrs:{\"id\":\"stepper\"}},_vm._l((_vm.flowDetailsAll),function(fd,index){return _c('li',{staticClass:\"list-unstyled\",class:_vm.activeClass(fd),attrs:{\"id\":_vm.activeStepperId(index)}},[_c('a',{staticClass:\"step\",class:_vm.clickable(fd),on:{\"click\":function($event){$event.preventDefault();return _vm.onStepSelected(fd)}}},[_c('span',{staticClass:\"circle\"},[_vm._v(_vm._s(fd.order))]),_vm._v(\" \"),_c('span',{staticClass:\"label\"},[_vm._v(_vm._s(fd.title))])])])}),0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h1',{staticClass:\"h6\"},[_c('img',{attrs:{\"src\":require(\"navi/icon_scroll.png\"),\"width\":\"16px\"}}),_vm._v(\"\\n 内見のステップを確認しよう\\n \")])}]\n\nexport { render, staticRenderFns }","\n \n
\n \n 内見のステップを確認しよう\n \n
\n
\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Step.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Step.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Step.vue?vue&type=template&id=4baa9600&scoped=true&\"\nimport script from \"./Step.vue?vue&type=script&lang=js&\"\nexport * from \"./Step.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Step.vue?vue&type=style&index=0&id=4baa9600&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4baa9600\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h2',{staticClass:\"contents-title font-weight-bold container mt-3\"},[_vm._v(\"はじめに\")]),_vm._v(\" \"),_c('div',{staticClass:\"contents-box my-2\"},[_c('div',{staticClass:\"container py-3\"},[_c('div',{staticClass:\"row align-items-center\"},[_c('div',{staticClass:\"col-4 text-center g-2\"},[_c('img',{staticClass:\"mx-auto\",attrs:{\"src\":require(\"navi/navi_default.png\"),\"height\":\"160\",\"alt\":\"アドバイザー\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"col-8 g-2\"},[_c('h3',{staticClass:\"h5 font-weight-bold\"},[_vm._v(\"はじめまして!\")]),_vm._v(\" \"),_c('p',{staticClass:\"mb-1\"},[_vm._v(\"\\n OHEYA案内24ナビへようこそ。\"),_c('br'),_vm._v(\"\\n お客様だけで内見ができますようこのページでサポートして参ります。\"),_c('br'),_vm._v(\"\\n 内見完了までよろしくお願いいたします。\"),_c('br'),_vm._v(\"\\n わからないことがあれば画面下のチャットサポートにご連絡ください。\\n \")])])])])])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Welcome.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Welcome.vue?vue&type=script&lang=js&\"","\n \n
はじめに \n
\n
\n
\n
\n
\n
\n
\n
はじめまして! \n
\n OHEYA案内24ナビへようこそ。 \n お客様だけで内見ができますようこのページでサポートして参ります。 \n 内見完了までよろしくお願いいたします。 \n わからないことがあれば画面下のチャットサポートにご連絡ください。\n
\n
\n
\n
\n
\n
\n \n\n\n\n\n\n","import { render, staticRenderFns } from \"./Welcome.vue?vue&type=template&id=5ddb0337&scoped=true&\"\nimport script from \"./Welcome.vue?vue&type=script&lang=js&\"\nexport * from \"./Welcome.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5ddb0337\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('footer',{staticClass:\"sticky-footer shadow\"},[_c('div',{staticClass:\"container\"},[(!_vm.isLastStep)?_c('div',{staticClass:\"row align-items-center g-2\"},[_vm._m(0),_vm._v(\" \"),(!_vm.isLastStep)?_c('div',{staticClass:\"col-6 text-right\"},[_c('a',{staticClass:\"btn btn-primary rounded-pill px-3 py-2 fw-weight-bold\",class:_vm.disabledClass,attrs:{\"href\":\"\"},on:{\"click\":function($event){$event.preventDefault();return _vm.onNextStepSelected()}}},[_vm._v(_vm._s(_vm.nextStepBtnText))])]):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.isLastStep)?_c('div',{staticClass:\"row align-items-center g-2\"},[_vm._m(1)]):_vm._e()])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col-6 text-caption\"},[_c('p',{staticClass:\"mb-0\"},[_vm._v(\"\\n 操作が完了したら\"),_c('br'),_vm._v(\"\\n 次のステップに進みます\"),_c('br')])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col-12 text-caption text-center\"},[_c('p',[_vm._v(\"以上で内見は終了です。お疲れ様でした。\")])])}]\n\nexport { render, staticRenderFns }","\n \n \n\n\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Footer.vue?vue&type=template&id=7c4ac86c&scoped=true&\"\nimport script from \"./Footer.vue?vue&type=script&lang=js&\"\nexport * from \"./Footer.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7c4ac86c\",\n null\n \n)\n\nexport default component.exports","export const roomLayoutEnums = {\n one_r: '1R',\n one_k: '1K',\n one_dk: '1DK',\n two_k: '2K',\n two_dk: '2DK',\n two_ldk: '2LDK',\n three_k: '3K',\n three_dk: '3DK',\n three_ldk: '3LDK',\n four_k: '4K',\n four_dk: '4DK',\n four_ldk_over: '4LDK以上'\n};","import React, { useMemo, useEffect, useRef } from \"react\";\nimport Hls from \"hls.js\";\n\n/**\n * Hlsコンポーネント\n * @param src 動画のURL\n * @param playerRef\n * @param playFlg 再生フラグ\n * @param audioRef\n * @param handleEndCatch 動画終了イベント\n */\nconst VideoPlayer = ({\n src,\n playerRef = useRef(null),\n playFlg = true,\n audioSrc,\n audioRef = useRef(null),\n handleEndCatch = () => {},\n}) => {\n const isSupportBrowser = useMemo(() => Hls.isSupported(), []);\n\n useEffect(() => {\n // ビデオコンテンツの終了イベントを拾う\n playerRef.current.addEventListener(\"ended\", (event) => {\n handleEndCatch();\n });\n\n // ビデオコンテンツの再生・停止・シークにてオーディオコンテンツを操作\n playerRef.current.addEventListener(\"play\", function () {\n audioRef.current.play();\n });\n\n playerRef.current.addEventListener(\"pause\", function () {\n audioRef.current.pause();\n });\n\n playerRef.current.addEventListener(\"seeked\", (event) => {\n audioRef.current.currentTime = event.target.currentTime;\n });\n\n playerRef.current.addEventListener(\"volumechange\", (event) => {\n audioRef.current.muted = event.target.muted;\n audioRef.current.volume = event.target.volume;\n audioRef.current.currentTime = event.target.currentTime;\n if (!event.target.pause && audioRef.current.pause) {\n audioRef.current.play();\n }\n });\n\n if (isSupportBrowser) {\n const newHls = new Hls({\n enableWorker: false,\n });\n\n if (playerRef.current != null) {\n newHls.attachMedia(playerRef.current);\n }\n\n newHls.on(Hls.Events.MEDIA_ATTACHED, () => {\n newHls.loadSource(src);\n });\n }\n }, [src]);\n\n return (\n <>\n {isSupportBrowser ? (\n \n ) : (\n \n )}\n\n \n >\n );\n};\n\nexport default VideoPlayer;\n","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","export const feeUnitEnums = {\n 1: \"ヶ月\",\n 2: \"円\",\n 3: \"%\"\n};\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*!\n * jQuery JavaScript Library v3.6.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-03-02T17:08Z\n */\n(function (global, factory) {\n \"use strict\";\n\n if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === \"object\" && _typeof(module.exports) === \"object\") {\n // For CommonJS and CommonJS-like environments where a proper `window`\n // is present, execute the factory and get jQuery.\n // For environments that do not have a `window` with a `document`\n // (such as Node.js), expose a factory as module.exports.\n // This accentuates the need for the creation of a real `window`.\n // e.g. var jQuery = require(\"jquery\")(window);\n // See ticket #14549 for more info.\n module.exports = global.document ? factory(global, true) : function (w) {\n if (!w.document) {\n throw new Error(\"jQuery requires a window with a document\");\n }\n\n return factory(w);\n };\n } else {\n factory(global);\n } // Pass this if window is not defined yet\n\n})(typeof window !== \"undefined\" ? window : this, function (window, noGlobal) {\n // Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n // throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n // arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n // enough that all such attempts are guarded in a try block.\n \"use strict\";\n\n var arr = [];\n var getProto = Object.getPrototypeOf;\n var _slice = arr.slice;\n var flat = arr.flat ? function (array) {\n return arr.flat.call(array);\n } : function (array) {\n return arr.concat.apply([], array);\n };\n var push = arr.push;\n var indexOf = arr.indexOf;\n var class2type = {};\n var toString = class2type.toString;\n var hasOwn = class2type.hasOwnProperty;\n var fnToString = hasOwn.toString;\n var ObjectFunctionString = fnToString.call(Object);\n var support = {};\n\n var isFunction = function isFunction(obj) {\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n // Plus for old WebKit, typeof returns \"function\" for HTML collections\n // (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\" && typeof obj.item !== \"function\";\n };\n\n var isWindow = function isWindow(obj) {\n return obj != null && obj === obj.window;\n };\n\n var document = window.document;\n var preservedScriptAttributes = {\n type: true,\n src: true,\n nonce: true,\n noModule: true\n };\n\n function DOMEval(code, node, doc) {\n doc = doc || document;\n var i,\n val,\n script = doc.createElement(\"script\");\n script.text = code;\n\n if (node) {\n for (i in preservedScriptAttributes) {\n // Support: Firefox 64+, Edge 18+\n // Some browsers don't support the \"nonce\" property on scripts.\n // On the other hand, just using `getAttribute` is not enough as\n // the `nonce` attribute is reset to an empty string whenever it\n // becomes browsing-context connected.\n // See https://github.com/whatwg/html/issues/2369\n // See https://html.spec.whatwg.org/#nonce-attributes\n // The `node.getAttribute` check was added for the sake of\n // `jQuery.globalEval` so that it can fake a nonce-containing node\n // via an object.\n val = node[i] || node.getAttribute && node.getAttribute(i);\n\n if (val) {\n script.setAttribute(i, val);\n }\n }\n }\n\n doc.head.appendChild(script).parentNode.removeChild(script);\n }\n\n function toType(obj) {\n if (obj == null) {\n return obj + \"\";\n } // Support: Android <=2.3 only (functionish RegExp)\n\n\n return _typeof(obj) === \"object\" || typeof obj === \"function\" ? class2type[toString.call(obj)] || \"object\" : _typeof(obj);\n }\n /* global Symbol */\n // Defining this global in .eslintrc.json would create a danger of using the global\n // unguarded in another place, it seems safer to define global only for this module\n\n\n var version = \"3.6.0\",\n // Define a local copy of jQuery\n jQuery = function jQuery(selector, context) {\n // The jQuery object is actually just the init constructor 'enhanced'\n // Need init if jQuery is called (just allow error to be thrown if not included)\n return new jQuery.fn.init(selector, context);\n };\n\n jQuery.fn = jQuery.prototype = {\n // The current version of jQuery being used\n jquery: version,\n constructor: jQuery,\n // The default length of a jQuery object is 0\n length: 0,\n toArray: function toArray() {\n return _slice.call(this);\n },\n // Get the Nth element in the matched element set OR\n // Get the whole matched element set as a clean array\n get: function get(num) {\n // Return all the elements in a clean array\n if (num == null) {\n return _slice.call(this);\n } // Return just the one element from the set\n\n\n return num < 0 ? this[num + this.length] : this[num];\n },\n // Take an array of elements and push it onto the stack\n // (returning the new matched element set)\n pushStack: function pushStack(elems) {\n // Build a new jQuery matched element set\n var ret = jQuery.merge(this.constructor(), elems); // Add the old object onto the stack (as a reference)\n\n ret.prevObject = this; // Return the newly-formed element set\n\n return ret;\n },\n // Execute a callback for every element in the matched set.\n each: function each(callback) {\n return jQuery.each(this, callback);\n },\n map: function map(callback) {\n return this.pushStack(jQuery.map(this, function (elem, i) {\n return callback.call(elem, i, elem);\n }));\n },\n slice: function slice() {\n return this.pushStack(_slice.apply(this, arguments));\n },\n first: function first() {\n return this.eq(0);\n },\n last: function last() {\n return this.eq(-1);\n },\n even: function even() {\n return this.pushStack(jQuery.grep(this, function (_elem, i) {\n return (i + 1) % 2;\n }));\n },\n odd: function odd() {\n return this.pushStack(jQuery.grep(this, function (_elem, i) {\n return i % 2;\n }));\n },\n eq: function eq(i) {\n var len = this.length,\n j = +i + (i < 0 ? len : 0);\n return this.pushStack(j >= 0 && j < len ? [this[j]] : []);\n },\n end: function end() {\n return this.prevObject || this.constructor();\n },\n // For internal use only.\n // Behaves like an Array's method, not like a jQuery method.\n push: push,\n sort: arr.sort,\n splice: arr.splice\n };\n\n jQuery.extend = jQuery.fn.extend = function () {\n var options,\n name,\n src,\n copy,\n copyIsArray,\n clone,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length,\n deep = false; // Handle a deep copy situation\n\n if (typeof target === \"boolean\") {\n deep = target; // Skip the boolean and the target\n\n target = arguments[i] || {};\n i++;\n } // Handle case when target is a string or something (possible in deep copy)\n\n\n if (_typeof(target) !== \"object\" && !isFunction(target)) {\n target = {};\n } // Extend jQuery itself if only one argument is passed\n\n\n if (i === length) {\n target = this;\n i--;\n }\n\n for (; i < length; i++) {\n // Only deal with non-null/undefined values\n if ((options = arguments[i]) != null) {\n // Extend the base object\n for (name in options) {\n copy = options[name]; // Prevent Object.prototype pollution\n // Prevent never-ending loop\n\n if (name === \"__proto__\" || target === copy) {\n continue;\n } // Recurse if we're merging plain objects or arrays\n\n\n if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) {\n src = target[name]; // Ensure proper type for the source value\n\n if (copyIsArray && !Array.isArray(src)) {\n clone = [];\n } else if (!copyIsArray && !jQuery.isPlainObject(src)) {\n clone = {};\n } else {\n clone = src;\n }\n\n copyIsArray = false; // Never move original objects, clone them\n\n target[name] = jQuery.extend(deep, clone, copy); // Don't bring in undefined values\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n } // Return the modified object\n\n\n return target;\n };\n\n jQuery.extend({\n // Unique for each copy of jQuery on the page\n expando: \"jQuery\" + (version + Math.random()).replace(/\\D/g, \"\"),\n // Assume jQuery is ready without the ready module\n isReady: true,\n error: function error(msg) {\n throw new Error(msg);\n },\n noop: function noop() {},\n isPlainObject: function isPlainObject(obj) {\n var proto, Ctor; // Detect obvious negatives\n // Use toString instead of jQuery.type to catch host objects\n\n if (!obj || toString.call(obj) !== \"[object Object]\") {\n return false;\n }\n\n proto = getProto(obj); // Objects with no prototype (e.g., `Object.create( null )`) are plain\n\n if (!proto) {\n return true;\n } // Objects with prototype are plain iff they were constructed by a global Object function\n\n\n Ctor = hasOwn.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && fnToString.call(Ctor) === ObjectFunctionString;\n },\n isEmptyObject: function isEmptyObject(obj) {\n var name;\n\n for (name in obj) {\n return false;\n }\n\n return true;\n },\n // Evaluates a script in a provided context; falls back to the global one\n // if not specified.\n globalEval: function globalEval(code, options, doc) {\n DOMEval(code, {\n nonce: options && options.nonce\n }, doc);\n },\n each: function each(obj, callback) {\n var length,\n i = 0;\n\n if (isArrayLike(obj)) {\n length = obj.length;\n\n for (; i < length; i++) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n } else {\n for (i in obj) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n }\n\n return obj;\n },\n // results is for internal usage only\n makeArray: function makeArray(arr, results) {\n var ret = results || [];\n\n if (arr != null) {\n if (isArrayLike(Object(arr))) {\n jQuery.merge(ret, typeof arr === \"string\" ? [arr] : arr);\n } else {\n push.call(ret, arr);\n }\n }\n\n return ret;\n },\n inArray: function inArray(elem, arr, i) {\n return arr == null ? -1 : indexOf.call(arr, elem, i);\n },\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n merge: function merge(first, second) {\n var len = +second.length,\n j = 0,\n i = first.length;\n\n for (; j < len; j++) {\n first[i++] = second[j];\n }\n\n first.length = i;\n return first;\n },\n grep: function grep(elems, callback, invert) {\n var callbackInverse,\n matches = [],\n i = 0,\n length = elems.length,\n callbackExpect = !invert; // Go through the array, only saving the items\n // that pass the validator function\n\n for (; i < length; i++) {\n callbackInverse = !callback(elems[i], i);\n\n if (callbackInverse !== callbackExpect) {\n matches.push(elems[i]);\n }\n }\n\n return matches;\n },\n // arg is for internal usage only\n map: function map(elems, callback, arg) {\n var length,\n value,\n i = 0,\n ret = []; // Go through the array, translating each of the items to their new values\n\n if (isArrayLike(elems)) {\n length = elems.length;\n\n for (; i < length; i++) {\n value = callback(elems[i], i, arg);\n\n if (value != null) {\n ret.push(value);\n }\n } // Go through every key on the object,\n\n } else {\n for (i in elems) {\n value = callback(elems[i], i, arg);\n\n if (value != null) {\n ret.push(value);\n }\n }\n } // Flatten any nested arrays\n\n\n return flat(ret);\n },\n // A global GUID counter for objects\n guid: 1,\n // jQuery.support is not used in Core but other projects attach their\n // properties to it so it needs to exist.\n support: support\n });\n\n if (typeof Symbol === \"function\") {\n jQuery.fn[Symbol.iterator] = arr[Symbol.iterator];\n } // Populate the class2type map\n\n\n jQuery.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"), function (_i, name) {\n class2type[\"[object \" + name + \"]\"] = name.toLowerCase();\n });\n\n function isArrayLike(obj) {\n // Support: real iOS 8.2 only (not reproducible in simulator)\n // `in` check used to prevent JIT error (gh-2145)\n // hasOwn isn't used here due to false negatives\n // regarding Nodelist length in IE\n var length = !!obj && \"length\" in obj && obj.length,\n type = toType(obj);\n\n if (isFunction(obj) || isWindow(obj)) {\n return false;\n }\n\n return type === \"array\" || length === 0 || typeof length === \"number\" && length > 0 && length - 1 in obj;\n }\n\n var Sizzle =\n /*!\n * Sizzle CSS Selector Engine v2.3.6\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2021-02-16\n */\n function (window) {\n var i,\n support,\n Expr,\n getText,\n isXML,\n tokenize,\n compile,\n select,\n outermostContext,\n sortInput,\n hasDuplicate,\n // Local document vars\n setDocument,\n document,\n docElem,\n documentIsHTML,\n rbuggyQSA,\n rbuggyMatches,\n matches,\n contains,\n // Instance-specific data\n expando = \"sizzle\" + 1 * new Date(),\n preferredDoc = window.document,\n dirruns = 0,\n done = 0,\n classCache = createCache(),\n tokenCache = createCache(),\n compilerCache = createCache(),\n nonnativeSelectorCache = createCache(),\n sortOrder = function sortOrder(a, b) {\n if (a === b) {\n hasDuplicate = true;\n }\n\n return 0;\n },\n // Instance methods\n hasOwn = {}.hasOwnProperty,\n arr = [],\n pop = arr.pop,\n pushNative = arr.push,\n push = arr.push,\n slice = arr.slice,\n // Use a stripped-down indexOf as it's faster than native\n // https://jsperf.com/thor-indexof-vs-for/5\n indexOf = function indexOf(list, elem) {\n var i = 0,\n len = list.length;\n\n for (; i < len; i++) {\n if (list[i] === elem) {\n return i;\n }\n }\n\n return -1;\n },\n booleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" + \"ismap|loop|multiple|open|readonly|required|scoped\",\n // Regular expressions\n // http://www.w3.org/TR/css3-selectors/#whitespace\n whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n identifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n attributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace + // Operator (capture 2)\n \"*([*^$|!~]?=)\" + whitespace + // \"Attribute values must be CSS identifiers [capture 5]\n // or strings [capture 3 or capture 4]\"\n \"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace + \"*\\\\]\",\n pseudos = \":(\" + identifier + \")(?:\\\\((\" + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n // 1. quoted (capture 3; capture 4 or capture 5)\n \"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" + // 2. simple (capture 6)\n \"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" + // 3. anything else (capture 2)\n \".*\" + \")\\\\)|)\",\n // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n rwhitespace = new RegExp(whitespace + \"+\", \"g\"),\n rtrim = new RegExp(\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\"),\n rcomma = new RegExp(\"^\" + whitespace + \"*,\" + whitespace + \"*\"),\n rcombinators = new RegExp(\"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\"),\n rdescend = new RegExp(whitespace + \"|>\"),\n rpseudo = new RegExp(pseudos),\n ridentifier = new RegExp(\"^\" + identifier + \"$\"),\n matchExpr = {\n \"ID\": new RegExp(\"^#(\" + identifier + \")\"),\n \"CLASS\": new RegExp(\"^\\\\.(\" + identifier + \")\"),\n \"TAG\": new RegExp(\"^(\" + identifier + \"|[*])\"),\n \"ATTR\": new RegExp(\"^\" + attributes),\n \"PSEUDO\": new RegExp(\"^\" + pseudos),\n \"CHILD\": new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\"),\n \"bool\": new RegExp(\"^(?:\" + booleans + \")$\", \"i\"),\n // For use in libraries implementing .is()\n // We use this for POS matching in `select`\n \"needsContext\": new RegExp(\"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\")\n },\n rhtml = /HTML$/i,\n rinputs = /^(?:input|select|textarea|button)$/i,\n rheader = /^h\\d$/i,\n rnative = /^[^{]+\\{\\s*\\[native \\w/,\n // Easily-parseable/retrievable ID or TAG or CLASS selectors\n rquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n rsibling = /[+~]/,\n // CSS escapes\n // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n runescape = new RegExp(\"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\"),\n funescape = function funescape(escape, nonHex) {\n var high = \"0x\" + escape.slice(1) - 0x10000;\n return nonHex ? // Strip the backslash prefix from a non-hex escape sequence\n nonHex : // Replace a hexadecimal escape sequence with the encoded Unicode code point\n // Support: IE <=11+\n // For values outside the Basic Multilingual Plane (BMP), manually construct a\n // surrogate pair\n high < 0 ? String.fromCharCode(high + 0x10000) : String.fromCharCode(high >> 10 | 0xD800, high & 0x3FF | 0xDC00);\n },\n // CSS string/identifier serialization\n // https://drafts.csswg.org/cssom/#common-serializing-idioms\n rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n fcssescape = function fcssescape(ch, asCodePoint) {\n if (asCodePoint) {\n // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n if (ch === \"\\0\") {\n return \"\\uFFFD\";\n } // Control characters and (dependent upon position) numbers get escaped as code points\n\n\n return ch.slice(0, -1) + \"\\\\\" + ch.charCodeAt(ch.length - 1).toString(16) + \" \";\n } // Other potentially-special ASCII characters get backslash-escaped\n\n\n return \"\\\\\" + ch;\n },\n // Used for iframes\n // See setDocument()\n // Removing the function wrapper causes a \"Permission Denied\"\n // error in IE\n unloadHandler = function unloadHandler() {\n setDocument();\n },\n inDisabledFieldset = addCombinator(function (elem) {\n return elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n }, {\n dir: \"parentNode\",\n next: \"legend\"\n }); // Optimize for push.apply( _, NodeList )\n\n\n try {\n push.apply(arr = slice.call(preferredDoc.childNodes), preferredDoc.childNodes); // Support: Android<4.0\n // Detect silently failing push.apply\n // eslint-disable-next-line no-unused-expressions\n\n arr[preferredDoc.childNodes.length].nodeType;\n } catch (e) {\n push = {\n apply: arr.length ? // Leverage slice if possible\n function (target, els) {\n pushNative.apply(target, slice.call(els));\n } : // Support: IE<9\n // Otherwise append directly\n function (target, els) {\n var j = target.length,\n i = 0; // Can't trust NodeList.length\n\n while (target[j++] = els[i++]) {}\n\n target.length = j - 1;\n }\n };\n }\n\n function Sizzle(selector, context, results, seed) {\n var m,\n i,\n elem,\n nid,\n match,\n groups,\n newSelector,\n newContext = context && context.ownerDocument,\n // nodeType defaults to 9, since context defaults to document\n nodeType = context ? context.nodeType : 9;\n results = results || []; // Return early from calls with invalid selector or context\n\n if (typeof selector !== \"string\" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) {\n return results;\n } // Try to shortcut find operations (as opposed to filters) in HTML documents\n\n\n if (!seed) {\n setDocument(context);\n context = context || document;\n\n if (documentIsHTML) {\n // If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n // (excepting DocumentFragment context, where the methods don't exist)\n if (nodeType !== 11 && (match = rquickExpr.exec(selector))) {\n // ID selector\n if (m = match[1]) {\n // Document context\n if (nodeType === 9) {\n if (elem = context.getElementById(m)) {\n // Support: IE, Opera, Webkit\n // TODO: identify versions\n // getElementById can match elements by name instead of ID\n if (elem.id === m) {\n results.push(elem);\n return results;\n }\n } else {\n return results;\n } // Element context\n\n } else {\n // Support: IE, Opera, Webkit\n // TODO: identify versions\n // getElementById can match elements by name instead of ID\n if (newContext && (elem = newContext.getElementById(m)) && contains(context, elem) && elem.id === m) {\n results.push(elem);\n return results;\n }\n } // Type selector\n\n } else if (match[2]) {\n push.apply(results, context.getElementsByTagName(selector));\n return results; // Class selector\n } else if ((m = match[3]) && support.getElementsByClassName && context.getElementsByClassName) {\n push.apply(results, context.getElementsByClassName(m));\n return results;\n }\n } // Take advantage of querySelectorAll\n\n\n if (support.qsa && !nonnativeSelectorCache[selector + \" \"] && (!rbuggyQSA || !rbuggyQSA.test(selector)) && ( // Support: IE 8 only\n // Exclude object elements\n nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\")) {\n newSelector = selector;\n newContext = context; // qSA considers elements outside a scoping root when evaluating child or\n // descendant combinators, which is not what we want.\n // In such cases, we work around the behavior by prefixing every selector in the\n // list with an ID selector referencing the scope context.\n // The technique has to be used as well when a leading combinator is used\n // as such selectors are not recognized by querySelectorAll.\n // Thanks to Andrew Dupont for this technique.\n\n if (nodeType === 1 && (rdescend.test(selector) || rcombinators.test(selector))) {\n // Expand context for sibling selectors\n newContext = rsibling.test(selector) && testContext(context.parentNode) || context; // We can use :scope instead of the ID hack if the browser\n // supports it & if we're not changing the context.\n\n if (newContext !== context || !support.scope) {\n // Capture the context ID, setting it first if necessary\n if (nid = context.getAttribute(\"id\")) {\n nid = nid.replace(rcssescape, fcssescape);\n } else {\n context.setAttribute(\"id\", nid = expando);\n }\n } // Prefix every selector in the list\n\n\n groups = tokenize(selector);\n i = groups.length;\n\n while (i--) {\n groups[i] = (nid ? \"#\" + nid : \":scope\") + \" \" + toSelector(groups[i]);\n }\n\n newSelector = groups.join(\",\");\n }\n\n try {\n push.apply(results, newContext.querySelectorAll(newSelector));\n return results;\n } catch (qsaError) {\n nonnativeSelectorCache(selector, true);\n } finally {\n if (nid === expando) {\n context.removeAttribute(\"id\");\n }\n }\n }\n }\n } // All others\n\n\n return select(selector.replace(rtrim, \"$1\"), context, results, seed);\n }\n /**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\n\n\n function createCache() {\n var keys = [];\n\n function cache(key, value) {\n // Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n if (keys.push(key + \" \") > Expr.cacheLength) {\n // Only keep the most recent entries\n delete cache[keys.shift()];\n }\n\n return cache[key + \" \"] = value;\n }\n\n return cache;\n }\n /**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\n\n\n function markFunction(fn) {\n fn[expando] = true;\n return fn;\n }\n /**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\n\n\n function assert(fn) {\n var el = document.createElement(\"fieldset\");\n\n try {\n return !!fn(el);\n } catch (e) {\n return false;\n } finally {\n // Remove from its parent by default\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n } // release memory in IE\n\n\n el = null;\n }\n }\n /**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\n\n\n function addHandle(attrs, handler) {\n var arr = attrs.split(\"|\"),\n i = arr.length;\n\n while (i--) {\n Expr.attrHandle[arr[i]] = handler;\n }\n }\n /**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\n\n\n function siblingCheck(a, b) {\n var cur = b && a,\n diff = cur && a.nodeType === 1 && b.nodeType === 1 && a.sourceIndex - b.sourceIndex; // Use IE sourceIndex if available on both nodes\n\n if (diff) {\n return diff;\n } // Check if b follows a\n\n\n if (cur) {\n while (cur = cur.nextSibling) {\n if (cur === b) {\n return -1;\n }\n }\n }\n\n return a ? 1 : -1;\n }\n /**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\n\n\n function createInputPseudo(type) {\n return function (elem) {\n var name = elem.nodeName.toLowerCase();\n return name === \"input\" && elem.type === type;\n };\n }\n /**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\n\n\n function createButtonPseudo(type) {\n return function (elem) {\n var name = elem.nodeName.toLowerCase();\n return (name === \"input\" || name === \"button\") && elem.type === type;\n };\n }\n /**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\n\n\n function createDisabledPseudo(disabled) {\n // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n return function (elem) {\n // Only certain elements can match :enabled or :disabled\n // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n if (\"form\" in elem) {\n // Check for inherited disabledness on relevant non-disabled elements:\n // * listed form-associated elements in a disabled fieldset\n // https://html.spec.whatwg.org/multipage/forms.html#category-listed\n // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n // * option elements in a disabled optgroup\n // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n // All such elements have a \"form\" property.\n if (elem.parentNode && elem.disabled === false) {\n // Option elements defer to a parent optgroup if present\n if (\"label\" in elem) {\n if (\"label\" in elem.parentNode) {\n return elem.parentNode.disabled === disabled;\n } else {\n return elem.disabled === disabled;\n }\n } // Support: IE 6 - 11\n // Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\n\n return elem.isDisabled === disabled || // Where there is no isDisabled, check manually\n\n /* jshint -W018 */\n elem.isDisabled !== !disabled && inDisabledFieldset(elem) === disabled;\n }\n\n return elem.disabled === disabled; // Try to winnow out elements that can't be disabled before trusting the disabled property.\n // Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n // even exist on them, let alone have a boolean value.\n } else if (\"label\" in elem) {\n return elem.disabled === disabled;\n } // Remaining elements are neither :enabled nor :disabled\n\n\n return false;\n };\n }\n /**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\n\n\n function createPositionalPseudo(fn) {\n return markFunction(function (argument) {\n argument = +argument;\n return markFunction(function (seed, matches) {\n var j,\n matchIndexes = fn([], seed.length, argument),\n i = matchIndexes.length; // Match elements found at the specified indexes\n\n while (i--) {\n if (seed[j = matchIndexes[i]]) {\n seed[j] = !(matches[j] = seed[j]);\n }\n }\n });\n });\n }\n /**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\n\n\n function testContext(context) {\n return context && typeof context.getElementsByTagName !== \"undefined\" && context;\n } // Expose support vars for convenience\n\n\n support = Sizzle.support = {};\n /**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\n\n isXML = Sizzle.isXML = function (elem) {\n var namespace = elem && elem.namespaceURI,\n docElem = elem && (elem.ownerDocument || elem).documentElement; // Support: IE <=8\n // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n // https://bugs.jquery.com/ticket/4833\n\n return !rhtml.test(namespace || docElem && docElem.nodeName || \"HTML\");\n };\n /**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\n\n\n setDocument = Sizzle.setDocument = function (node) {\n var hasCompare,\n subWindow,\n doc = node ? node.ownerDocument || node : preferredDoc; // Return early if doc is invalid or already selected\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n\n if (doc == document || doc.nodeType !== 9 || !doc.documentElement) {\n return document;\n } // Update global variables\n\n\n document = doc;\n docElem = document.documentElement;\n documentIsHTML = !isXML(document); // Support: IE 9 - 11+, Edge 12 - 18+\n // Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n\n if (preferredDoc != document && (subWindow = document.defaultView) && subWindow.top !== subWindow) {\n // Support: IE 11, Edge\n if (subWindow.addEventListener) {\n subWindow.addEventListener(\"unload\", unloadHandler, false); // Support: IE 9 - 10 only\n } else if (subWindow.attachEvent) {\n subWindow.attachEvent(\"onunload\", unloadHandler);\n }\n } // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n // Safari 4 - 5 only, Opera <=11.6 - 12.x only\n // IE/Edge & older browsers don't support the :scope pseudo-class.\n // Support: Safari 6.0 only\n // Safari 6.0 supports :scope but it's an alias of :root there.\n\n\n support.scope = assert(function (el) {\n docElem.appendChild(el).appendChild(document.createElement(\"div\"));\n return typeof el.querySelectorAll !== \"undefined\" && !el.querySelectorAll(\":scope fieldset div\").length;\n });\n /* Attributes\n ---------------------------------------------------------------------- */\n // Support: IE<8\n // Verify that getAttribute really returns attributes and not properties\n // (excepting IE8 booleans)\n\n support.attributes = assert(function (el) {\n el.className = \"i\";\n return !el.getAttribute(\"className\");\n });\n /* getElement(s)By*\n ---------------------------------------------------------------------- */\n // Check if getElementsByTagName(\"*\") returns only elements\n\n support.getElementsByTagName = assert(function (el) {\n el.appendChild(document.createComment(\"\"));\n return !el.getElementsByTagName(\"*\").length;\n }); // Support: IE<9\n\n support.getElementsByClassName = rnative.test(document.getElementsByClassName); // Support: IE<10\n // Check if getElementById returns elements by name\n // The broken getElementById methods don't pick up programmatically-set names,\n // so use a roundabout getElementsByName test\n\n support.getById = assert(function (el) {\n docElem.appendChild(el).id = expando;\n return !document.getElementsByName || !document.getElementsByName(expando).length;\n }); // ID filter and find\n\n if (support.getById) {\n Expr.filter[\"ID\"] = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n return elem.getAttribute(\"id\") === attrId;\n };\n };\n\n Expr.find[\"ID\"] = function (id, context) {\n if (typeof context.getElementById !== \"undefined\" && documentIsHTML) {\n var elem = context.getElementById(id);\n return elem ? [elem] : [];\n }\n };\n } else {\n Expr.filter[\"ID\"] = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n var node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n return node && node.value === attrId;\n };\n }; // Support: IE 6 - 7 only\n // getElementById is not reliable as a find shortcut\n\n\n Expr.find[\"ID\"] = function (id, context) {\n if (typeof context.getElementById !== \"undefined\" && documentIsHTML) {\n var node,\n i,\n elems,\n elem = context.getElementById(id);\n\n if (elem) {\n // Verify the id attribute\n node = elem.getAttributeNode(\"id\");\n\n if (node && node.value === id) {\n return [elem];\n } // Fall back on getElementsByName\n\n\n elems = context.getElementsByName(id);\n i = 0;\n\n while (elem = elems[i++]) {\n node = elem.getAttributeNode(\"id\");\n\n if (node && node.value === id) {\n return [elem];\n }\n }\n }\n\n return [];\n }\n };\n } // Tag\n\n\n Expr.find[\"TAG\"] = support.getElementsByTagName ? function (tag, context) {\n if (typeof context.getElementsByTagName !== \"undefined\") {\n return context.getElementsByTagName(tag); // DocumentFragment nodes don't have gEBTN\n } else if (support.qsa) {\n return context.querySelectorAll(tag);\n }\n } : function (tag, context) {\n var elem,\n tmp = [],\n i = 0,\n // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n results = context.getElementsByTagName(tag); // Filter out possible comments\n\n if (tag === \"*\") {\n while (elem = results[i++]) {\n if (elem.nodeType === 1) {\n tmp.push(elem);\n }\n }\n\n return tmp;\n }\n\n return results;\n }; // Class\n\n Expr.find[\"CLASS\"] = support.getElementsByClassName && function (className, context) {\n if (typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML) {\n return context.getElementsByClassName(className);\n }\n };\n /* QSA/matchesSelector\n ---------------------------------------------------------------------- */\n // QSA and matchesSelector support\n // matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\n\n rbuggyMatches = []; // qSa(:focus) reports false when true (Chrome 21)\n // We allow this because of a bug in IE8/9 that throws an error\n // whenever `document.activeElement` is accessed on an iframe\n // So, we allow :focus to pass through QSA all the time to avoid the IE error\n // See https://bugs.jquery.com/ticket/13378\n\n rbuggyQSA = [];\n\n if (support.qsa = rnative.test(document.querySelectorAll)) {\n // Build QSA regex\n // Regex strategy adopted from Diego Perini\n assert(function (el) {\n var input; // Select is set to empty string on purpose\n // This is to test IE's treatment of not explicitly\n // setting a boolean content attribute,\n // since its presence should be enough\n // https://bugs.jquery.com/ticket/12359\n\n docElem.appendChild(el).innerHTML = \" \" + \"\" + \" \"; // Support: IE8, Opera 11-12.16\n // Nothing should be selected when empty strings follow ^= or $= or *=\n // The test attribute must be unknown in Opera but \"safe\" for WinRT\n // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\n if (el.querySelectorAll(\"[msallowcapture^='']\").length) {\n rbuggyQSA.push(\"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\");\n } // Support: IE8\n // Boolean attributes and \"value\" are not treated correctly\n\n\n if (!el.querySelectorAll(\"[selected]\").length) {\n rbuggyQSA.push(\"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\");\n } // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\n\n if (!el.querySelectorAll(\"[id~=\" + expando + \"-]\").length) {\n rbuggyQSA.push(\"~=\");\n } // Support: IE 11+, Edge 15 - 18+\n // IE 11/Edge don't find elements on a `[name='']` query in some cases.\n // Adding a temporary attribute to the document before the selection works\n // around the issue.\n // Interestingly, IE 10 & older don't seem to have the issue.\n\n\n input = document.createElement(\"input\");\n input.setAttribute(\"name\", \"\");\n el.appendChild(input);\n\n if (!el.querySelectorAll(\"[name='']\").length) {\n rbuggyQSA.push(\"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" + whitespace + \"*(?:''|\\\"\\\")\");\n } // Webkit/Opera - :checked should return selected option elements\n // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n // IE8 throws error here and will not see later tests\n\n\n if (!el.querySelectorAll(\":checked\").length) {\n rbuggyQSA.push(\":checked\");\n } // Support: Safari 8+, iOS 8+\n // https://bugs.webkit.org/show_bug.cgi?id=136851\n // In-page `selector#id sibling-combinator selector` fails\n\n\n if (!el.querySelectorAll(\"a#\" + expando + \"+*\").length) {\n rbuggyQSA.push(\".#.+[+~]\");\n } // Support: Firefox <=3.6 - 5 only\n // Old Firefox doesn't throw on a badly-escaped identifier.\n\n\n el.querySelectorAll(\"\\\\\\f\");\n rbuggyQSA.push(\"[\\\\r\\\\n\\\\f]\");\n });\n assert(function (el) {\n el.innerHTML = \" \" + \" \"; // Support: Windows 8 Native Apps\n // The type and name attributes are restricted during .innerHTML assignment\n\n var input = document.createElement(\"input\");\n input.setAttribute(\"type\", \"hidden\");\n el.appendChild(input).setAttribute(\"name\", \"D\"); // Support: IE8\n // Enforce case-sensitivity of name attribute\n\n if (el.querySelectorAll(\"[name=d]\").length) {\n rbuggyQSA.push(\"name\" + whitespace + \"*[*^$|!~]?=\");\n } // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n // IE8 throws error here and will not see later tests\n\n\n if (el.querySelectorAll(\":enabled\").length !== 2) {\n rbuggyQSA.push(\":enabled\", \":disabled\");\n } // Support: IE9-11+\n // IE's :disabled selector does not pick up the children of disabled fieldsets\n\n\n docElem.appendChild(el).disabled = true;\n\n if (el.querySelectorAll(\":disabled\").length !== 2) {\n rbuggyQSA.push(\":enabled\", \":disabled\");\n } // Support: Opera 10 - 11 only\n // Opera 10-11 does not throw on post-comma invalid pseudos\n\n\n el.querySelectorAll(\"*,:x\");\n rbuggyQSA.push(\",.*:\");\n });\n }\n\n if (support.matchesSelector = rnative.test(matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector)) {\n assert(function (el) {\n // Check to see if it's possible to do matchesSelector\n // on a disconnected node (IE 9)\n support.disconnectedMatch = matches.call(el, \"*\"); // This should fail with an exception\n // Gecko does not error, returns false instead\n\n matches.call(el, \"[s!='']:x\");\n rbuggyMatches.push(\"!=\", pseudos);\n });\n }\n\n rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join(\"|\"));\n rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join(\"|\"));\n /* Contains\n ---------------------------------------------------------------------- */\n\n hasCompare = rnative.test(docElem.compareDocumentPosition); // Element contains another\n // Purposefully self-exclusive\n // As in, an element does not contain itself\n\n contains = hasCompare || rnative.test(docElem.contains) ? function (a, b) {\n var adown = a.nodeType === 9 ? a.documentElement : a,\n bup = b && b.parentNode;\n return a === bup || !!(bup && bup.nodeType === 1 && (adown.contains ? adown.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16));\n } : function (a, b) {\n if (b) {\n while (b = b.parentNode) {\n if (b === a) {\n return true;\n }\n }\n }\n\n return false;\n };\n /* Sorting\n ---------------------------------------------------------------------- */\n // Document order sorting\n\n sortOrder = hasCompare ? function (a, b) {\n // Flag for duplicate removal\n if (a === b) {\n hasDuplicate = true;\n return 0;\n } // Sort on method existence if only one input has compareDocumentPosition\n\n\n var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\n if (compare) {\n return compare;\n } // Calculate position if both inputs belong to the same document\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n\n\n compare = (a.ownerDocument || a) == (b.ownerDocument || b) ? a.compareDocumentPosition(b) : // Otherwise we know they are disconnected\n 1; // Disconnected nodes\n\n if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) {\n // Choose the first element that is related to our preferred document\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (a == document || a.ownerDocument == preferredDoc && contains(preferredDoc, a)) {\n return -1;\n } // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n\n\n if (b == document || b.ownerDocument == preferredDoc && contains(preferredDoc, b)) {\n return 1;\n } // Maintain original order\n\n\n return sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0;\n }\n\n return compare & 4 ? -1 : 1;\n } : function (a, b) {\n // Exit early if the nodes are identical\n if (a === b) {\n hasDuplicate = true;\n return 0;\n }\n\n var cur,\n i = 0,\n aup = a.parentNode,\n bup = b.parentNode,\n ap = [a],\n bp = [b]; // Parentless nodes are either documents or disconnected\n\n if (!aup || !bup) {\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n\n /* eslint-disable eqeqeq */\n return a == document ? -1 : b == document ? 1 :\n /* eslint-enable eqeqeq */\n aup ? -1 : bup ? 1 : sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0; // If the nodes are siblings, we can do a quick check\n } else if (aup === bup) {\n return siblingCheck(a, b);\n } // Otherwise we need full lists of their ancestors for comparison\n\n\n cur = a;\n\n while (cur = cur.parentNode) {\n ap.unshift(cur);\n }\n\n cur = b;\n\n while (cur = cur.parentNode) {\n bp.unshift(cur);\n } // Walk down the tree looking for a discrepancy\n\n\n while (ap[i] === bp[i]) {\n i++;\n }\n\n return i ? // Do a sibling check if the nodes have a common ancestor\n siblingCheck(ap[i], bp[i]) : // Otherwise nodes in our document sort first\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n\n /* eslint-disable eqeqeq */\n ap[i] == preferredDoc ? -1 : bp[i] == preferredDoc ? 1 :\n /* eslint-enable eqeqeq */\n 0;\n };\n return document;\n };\n\n Sizzle.matches = function (expr, elements) {\n return Sizzle(expr, null, null, elements);\n };\n\n Sizzle.matchesSelector = function (elem, expr) {\n setDocument(elem);\n\n if (support.matchesSelector && documentIsHTML && !nonnativeSelectorCache[expr + \" \"] && (!rbuggyMatches || !rbuggyMatches.test(expr)) && (!rbuggyQSA || !rbuggyQSA.test(expr))) {\n try {\n var ret = matches.call(elem, expr); // IE 9's matchesSelector returns false on disconnected nodes\n\n if (ret || support.disconnectedMatch || // As well, disconnected nodes are said to be in a document\n // fragment in IE 9\n elem.document && elem.document.nodeType !== 11) {\n return ret;\n }\n } catch (e) {\n nonnativeSelectorCache(expr, true);\n }\n }\n\n return Sizzle(expr, document, null, [elem]).length > 0;\n };\n\n Sizzle.contains = function (context, elem) {\n // Set document vars if needed\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if ((context.ownerDocument || context) != document) {\n setDocument(context);\n }\n\n return contains(context, elem);\n };\n\n Sizzle.attr = function (elem, name) {\n // Set document vars if needed\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if ((elem.ownerDocument || elem) != document) {\n setDocument(elem);\n }\n\n var fn = Expr.attrHandle[name.toLowerCase()],\n // Don't get fooled by Object.prototype properties (jQuery #13807)\n val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : undefined;\n return val !== undefined ? val : support.attributes || !documentIsHTML ? elem.getAttribute(name) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;\n };\n\n Sizzle.escape = function (sel) {\n return (sel + \"\").replace(rcssescape, fcssescape);\n };\n\n Sizzle.error = function (msg) {\n throw new Error(\"Syntax error, unrecognized expression: \" + msg);\n };\n /**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\n\n\n Sizzle.uniqueSort = function (results) {\n var elem,\n duplicates = [],\n j = 0,\n i = 0; // Unless we *know* we can detect duplicates, assume their presence\n\n hasDuplicate = !support.detectDuplicates;\n sortInput = !support.sortStable && results.slice(0);\n results.sort(sortOrder);\n\n if (hasDuplicate) {\n while (elem = results[i++]) {\n if (elem === results[i]) {\n j = duplicates.push(i);\n }\n }\n\n while (j--) {\n results.splice(duplicates[j], 1);\n }\n } // Clear input after sorting to release objects\n // See https://github.com/jquery/sizzle/pull/225\n\n\n sortInput = null;\n return results;\n };\n /**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\n\n\n getText = Sizzle.getText = function (elem) {\n var node,\n ret = \"\",\n i = 0,\n nodeType = elem.nodeType;\n\n if (!nodeType) {\n // If no nodeType, this is expected to be an array\n while (node = elem[i++]) {\n // Do not traverse comment nodes\n ret += getText(node);\n }\n } else if (nodeType === 1 || nodeType === 9 || nodeType === 11) {\n // Use textContent for elements\n // innerText usage removed for consistency of new lines (jQuery #11153)\n if (typeof elem.textContent === \"string\") {\n return elem.textContent;\n } else {\n // Traverse its children\n for (elem = elem.firstChild; elem; elem = elem.nextSibling) {\n ret += getText(elem);\n }\n }\n } else if (nodeType === 3 || nodeType === 4) {\n return elem.nodeValue;\n } // Do not include comment or processing instruction nodes\n\n\n return ret;\n };\n\n Expr = Sizzle.selectors = {\n // Can be adjusted by the user\n cacheLength: 50,\n createPseudo: markFunction,\n match: matchExpr,\n attrHandle: {},\n find: {},\n relative: {\n \">\": {\n dir: \"parentNode\",\n first: true\n },\n \" \": {\n dir: \"parentNode\"\n },\n \"+\": {\n dir: \"previousSibling\",\n first: true\n },\n \"~\": {\n dir: \"previousSibling\"\n }\n },\n preFilter: {\n \"ATTR\": function ATTR(match) {\n match[1] = match[1].replace(runescape, funescape); // Move the given value to match[3] whether quoted or unquoted\n\n match[3] = (match[3] || match[4] || match[5] || \"\").replace(runescape, funescape);\n\n if (match[2] === \"~=\") {\n match[3] = \" \" + match[3] + \" \";\n }\n\n return match.slice(0, 4);\n },\n \"CHILD\": function CHILD(match) {\n /* matches from matchExpr[\"CHILD\"]\n \t1 type (only|nth|...)\n \t2 what (child|of-type)\n \t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n \t4 xn-component of xn+y argument ([+-]?\\d*n|)\n \t5 sign of xn-component\n \t6 x of xn-component\n \t7 sign of y-component\n \t8 y of y-component\n */\n match[1] = match[1].toLowerCase();\n\n if (match[1].slice(0, 3) === \"nth\") {\n // nth-* requires argument\n if (!match[3]) {\n Sizzle.error(match[0]);\n } // numeric x and y parameters for Expr.filter.CHILD\n // remember that false/true cast respectively to 0/1\n\n\n match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === \"even\" || match[3] === \"odd\"));\n match[5] = +(match[7] + match[8] || match[3] === \"odd\"); // other types prohibit arguments\n } else if (match[3]) {\n Sizzle.error(match[0]);\n }\n\n return match;\n },\n \"PSEUDO\": function PSEUDO(match) {\n var excess,\n unquoted = !match[6] && match[2];\n\n if (matchExpr[\"CHILD\"].test(match[0])) {\n return null;\n } // Accept quoted arguments as-is\n\n\n if (match[3]) {\n match[2] = match[4] || match[5] || \"\"; // Strip excess characters from unquoted arguments\n } else if (unquoted && rpseudo.test(unquoted) && ( // Get excess from tokenize (recursively)\n excess = tokenize(unquoted, true)) && ( // advance to the next closing parenthesis\n excess = unquoted.indexOf(\")\", unquoted.length - excess) - unquoted.length)) {\n // excess is a negative index\n match[0] = match[0].slice(0, excess);\n match[2] = unquoted.slice(0, excess);\n } // Return only captures needed by the pseudo filter method (type and argument)\n\n\n return match.slice(0, 3);\n }\n },\n filter: {\n \"TAG\": function TAG(nodeNameSelector) {\n var nodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();\n return nodeNameSelector === \"*\" ? function () {\n return true;\n } : function (elem) {\n return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n };\n },\n \"CLASS\": function CLASS(className) {\n var pattern = classCache[className + \" \"];\n return pattern || (pattern = new RegExp(\"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\")) && classCache(className, function (elem) {\n return pattern.test(typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\");\n });\n },\n \"ATTR\": function ATTR(name, operator, check) {\n return function (elem) {\n var result = Sizzle.attr(elem, name);\n\n if (result == null) {\n return operator === \"!=\";\n }\n\n if (!operator) {\n return true;\n }\n\n result += \"\";\n /* eslint-disable max-len */\n\n return operator === \"=\" ? result === check : operator === \"!=\" ? result !== check : operator === \"^=\" ? check && result.indexOf(check) === 0 : operator === \"*=\" ? check && result.indexOf(check) > -1 : operator === \"$=\" ? check && result.slice(-check.length) === check : operator === \"~=\" ? (\" \" + result.replace(rwhitespace, \" \") + \" \").indexOf(check) > -1 : operator === \"|=\" ? result === check || result.slice(0, check.length + 1) === check + \"-\" : false;\n /* eslint-enable max-len */\n };\n },\n \"CHILD\": function CHILD(type, what, _argument, first, last) {\n var simple = type.slice(0, 3) !== \"nth\",\n forward = type.slice(-4) !== \"last\",\n ofType = what === \"of-type\";\n return first === 1 && last === 0 ? // Shortcut for :nth-*(n)\n function (elem) {\n return !!elem.parentNode;\n } : function (elem, _context, xml) {\n var cache,\n uniqueCache,\n outerCache,\n node,\n nodeIndex,\n start,\n dir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n parent = elem.parentNode,\n name = ofType && elem.nodeName.toLowerCase(),\n useCache = !xml && !ofType,\n diff = false;\n\n if (parent) {\n // :(first|last|only)-(child|of-type)\n if (simple) {\n while (dir) {\n node = elem;\n\n while (node = node[dir]) {\n if (ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) {\n return false;\n }\n } // Reverse direction for :only-* (if we haven't yet done so)\n\n\n start = dir = type === \"only\" && !start && \"nextSibling\";\n }\n\n return true;\n }\n\n start = [forward ? parent.firstChild : parent.lastChild]; // non-xml :nth-child(...) stores cache data on `parent`\n\n if (forward && useCache) {\n // Seek `elem` from a previously-cached index\n // ...in a gzip-friendly way\n node = parent;\n outerCache = node[expando] || (node[expando] = {}); // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n\n uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});\n cache = uniqueCache[type] || [];\n nodeIndex = cache[0] === dirruns && cache[1];\n diff = nodeIndex && cache[2];\n node = nodeIndex && parent.childNodes[nodeIndex];\n\n while (node = ++nodeIndex && node && node[dir] || ( // Fallback to seeking `elem` from the start\n diff = nodeIndex = 0) || start.pop()) {\n // When found, cache indexes on `parent` and break\n if (node.nodeType === 1 && ++diff && node === elem) {\n uniqueCache[type] = [dirruns, nodeIndex, diff];\n break;\n }\n }\n } else {\n // Use previously-cached element index if available\n if (useCache) {\n // ...in a gzip-friendly way\n node = elem;\n outerCache = node[expando] || (node[expando] = {}); // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n\n uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});\n cache = uniqueCache[type] || [];\n nodeIndex = cache[0] === dirruns && cache[1];\n diff = nodeIndex;\n } // xml :nth-child(...)\n // or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\n\n if (diff === false) {\n // Use the same loop as above to seek `elem` from the start\n while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {\n if ((ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) && ++diff) {\n // Cache the index of each encountered element\n if (useCache) {\n outerCache = node[expando] || (node[expando] = {}); // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n\n uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});\n uniqueCache[type] = [dirruns, diff];\n }\n\n if (node === elem) {\n break;\n }\n }\n }\n }\n } // Incorporate the offset, then check against cycle size\n\n\n diff -= last;\n return diff === first || diff % first === 0 && diff / first >= 0;\n }\n };\n },\n \"PSEUDO\": function PSEUDO(pseudo, argument) {\n // pseudo-class names are case-insensitive\n // http://www.w3.org/TR/selectors/#pseudo-classes\n // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n // Remember that setFilters inherits from pseudos\n var args,\n fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle.error(\"unsupported pseudo: \" + pseudo); // The user may use createPseudo to indicate that\n // arguments are needed to create the filter function\n // just as Sizzle does\n\n if (fn[expando]) {\n return fn(argument);\n } // But maintain support for old signatures\n\n\n if (fn.length > 1) {\n args = [pseudo, pseudo, \"\", argument];\n return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function (seed, matches) {\n var idx,\n matched = fn(seed, argument),\n i = matched.length;\n\n while (i--) {\n idx = indexOf(seed, matched[i]);\n seed[idx] = !(matches[idx] = matched[i]);\n }\n }) : function (elem) {\n return fn(elem, 0, args);\n };\n }\n\n return fn;\n }\n },\n pseudos: {\n // Potentially complex pseudos\n \"not\": markFunction(function (selector) {\n // Trim the selector passed to compile\n // to avoid treating leading and trailing\n // spaces as combinators\n var input = [],\n results = [],\n matcher = compile(selector.replace(rtrim, \"$1\"));\n return matcher[expando] ? markFunction(function (seed, matches, _context, xml) {\n var elem,\n unmatched = matcher(seed, null, xml, []),\n i = seed.length; // Match elements unmatched by `matcher`\n\n while (i--) {\n if (elem = unmatched[i]) {\n seed[i] = !(matches[i] = elem);\n }\n }\n }) : function (elem, _context, xml) {\n input[0] = elem;\n matcher(input, null, xml, results); // Don't keep the element (issue #299)\n\n input[0] = null;\n return !results.pop();\n };\n }),\n \"has\": markFunction(function (selector) {\n return function (elem) {\n return Sizzle(selector, elem).length > 0;\n };\n }),\n \"contains\": markFunction(function (text) {\n text = text.replace(runescape, funescape);\n return function (elem) {\n return (elem.textContent || getText(elem)).indexOf(text) > -1;\n };\n }),\n // \"Whether an element is represented by a :lang() selector\n // is based solely on the element's language value\n // being equal to the identifier C,\n // or beginning with the identifier C immediately followed by \"-\".\n // The matching of C against the element's language value is performed case-insensitively.\n // The identifier C does not have to be a valid language name.\"\n // http://www.w3.org/TR/selectors/#lang-pseudo\n \"lang\": markFunction(function (lang) {\n // lang value must be a valid identifier\n if (!ridentifier.test(lang || \"\")) {\n Sizzle.error(\"unsupported lang: \" + lang);\n }\n\n lang = lang.replace(runescape, funescape).toLowerCase();\n return function (elem) {\n var elemLang;\n\n do {\n if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) {\n elemLang = elemLang.toLowerCase();\n return elemLang === lang || elemLang.indexOf(lang + \"-\") === 0;\n }\n } while ((elem = elem.parentNode) && elem.nodeType === 1);\n\n return false;\n };\n }),\n // Miscellaneous\n \"target\": function target(elem) {\n var hash = window.location && window.location.hash;\n return hash && hash.slice(1) === elem.id;\n },\n \"root\": function root(elem) {\n return elem === docElem;\n },\n \"focus\": function focus(elem) {\n return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n },\n // Boolean properties\n \"enabled\": createDisabledPseudo(false),\n \"disabled\": createDisabledPseudo(true),\n \"checked\": function checked(elem) {\n // In CSS3, :checked should return both checked and selected elements\n // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n var nodeName = elem.nodeName.toLowerCase();\n return nodeName === \"input\" && !!elem.checked || nodeName === \"option\" && !!elem.selected;\n },\n \"selected\": function selected(elem) {\n // Accessing this property makes selected-by-default\n // options in Safari work properly\n if (elem.parentNode) {\n // eslint-disable-next-line no-unused-expressions\n elem.parentNode.selectedIndex;\n }\n\n return elem.selected === true;\n },\n // Contents\n \"empty\": function empty(elem) {\n // http://www.w3.org/TR/selectors/#empty-pseudo\n // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n // but not by others (comment: 8; processing instruction: 7; etc.)\n // nodeType < 6 works because attributes (2) do not appear as children\n for (elem = elem.firstChild; elem; elem = elem.nextSibling) {\n if (elem.nodeType < 6) {\n return false;\n }\n }\n\n return true;\n },\n \"parent\": function parent(elem) {\n return !Expr.pseudos[\"empty\"](elem);\n },\n // Element/input types\n \"header\": function header(elem) {\n return rheader.test(elem.nodeName);\n },\n \"input\": function input(elem) {\n return rinputs.test(elem.nodeName);\n },\n \"button\": function button(elem) {\n var name = elem.nodeName.toLowerCase();\n return name === \"input\" && elem.type === \"button\" || name === \"button\";\n },\n \"text\": function text(elem) {\n var attr;\n return elem.nodeName.toLowerCase() === \"input\" && elem.type === \"text\" && ( // Support: IE<8\n // New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\");\n },\n // Position-in-collection\n \"first\": createPositionalPseudo(function () {\n return [0];\n }),\n \"last\": createPositionalPseudo(function (_matchIndexes, length) {\n return [length - 1];\n }),\n \"eq\": createPositionalPseudo(function (_matchIndexes, length, argument) {\n return [argument < 0 ? argument + length : argument];\n }),\n \"even\": createPositionalPseudo(function (matchIndexes, length) {\n var i = 0;\n\n for (; i < length; i += 2) {\n matchIndexes.push(i);\n }\n\n return matchIndexes;\n }),\n \"odd\": createPositionalPseudo(function (matchIndexes, length) {\n var i = 1;\n\n for (; i < length; i += 2) {\n matchIndexes.push(i);\n }\n\n return matchIndexes;\n }),\n \"lt\": createPositionalPseudo(function (matchIndexes, length, argument) {\n var i = argument < 0 ? argument + length : argument > length ? length : argument;\n\n for (; --i >= 0;) {\n matchIndexes.push(i);\n }\n\n return matchIndexes;\n }),\n \"gt\": createPositionalPseudo(function (matchIndexes, length, argument) {\n var i = argument < 0 ? argument + length : argument;\n\n for (; ++i < length;) {\n matchIndexes.push(i);\n }\n\n return matchIndexes;\n })\n }\n };\n Expr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"]; // Add button/input type pseudos\n\n for (i in {\n radio: true,\n checkbox: true,\n file: true,\n password: true,\n image: true\n }) {\n Expr.pseudos[i] = createInputPseudo(i);\n }\n\n for (i in {\n submit: true,\n reset: true\n }) {\n Expr.pseudos[i] = createButtonPseudo(i);\n } // Easy API for creating new setFilters\n\n\n function setFilters() {}\n\n setFilters.prototype = Expr.filters = Expr.pseudos;\n Expr.setFilters = new setFilters();\n\n tokenize = Sizzle.tokenize = function (selector, parseOnly) {\n var matched,\n match,\n tokens,\n type,\n soFar,\n groups,\n preFilters,\n cached = tokenCache[selector + \" \"];\n\n if (cached) {\n return parseOnly ? 0 : cached.slice(0);\n }\n\n soFar = selector;\n groups = [];\n preFilters = Expr.preFilter;\n\n while (soFar) {\n // Comma and first run\n if (!matched || (match = rcomma.exec(soFar))) {\n if (match) {\n // Don't consume trailing commas as valid\n soFar = soFar.slice(match[0].length) || soFar;\n }\n\n groups.push(tokens = []);\n }\n\n matched = false; // Combinators\n\n if (match = rcombinators.exec(soFar)) {\n matched = match.shift();\n tokens.push({\n value: matched,\n // Cast descendant combinators to space\n type: match[0].replace(rtrim, \" \")\n });\n soFar = soFar.slice(matched.length);\n } // Filters\n\n\n for (type in Expr.filter) {\n if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) {\n matched = match.shift();\n tokens.push({\n value: matched,\n type: type,\n matches: match\n });\n soFar = soFar.slice(matched.length);\n }\n }\n\n if (!matched) {\n break;\n }\n } // Return the length of the invalid excess\n // if we're just parsing\n // Otherwise, throw an error or return tokens\n\n\n return parseOnly ? soFar.length : soFar ? Sizzle.error(selector) : // Cache the tokens\n tokenCache(selector, groups).slice(0);\n };\n\n function toSelector(tokens) {\n var i = 0,\n len = tokens.length,\n selector = \"\";\n\n for (; i < len; i++) {\n selector += tokens[i].value;\n }\n\n return selector;\n }\n\n function addCombinator(matcher, combinator, base) {\n var dir = combinator.dir,\n skip = combinator.next,\n key = skip || dir,\n checkNonElements = base && key === \"parentNode\",\n doneName = done++;\n return combinator.first ? // Check against closest ancestor/preceding element\n function (elem, context, xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n return matcher(elem, context, xml);\n }\n }\n\n return false;\n } : // Check against all ancestor/preceding elements\n function (elem, context, xml) {\n var oldCache,\n uniqueCache,\n outerCache,\n newCache = [dirruns, doneName]; // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\n if (xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n if (matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n } else {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n outerCache = elem[expando] || (elem[expando] = {}); // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n\n uniqueCache = outerCache[elem.uniqueID] || (outerCache[elem.uniqueID] = {});\n\n if (skip && skip === elem.nodeName.toLowerCase()) {\n elem = elem[dir] || elem;\n } else if ((oldCache = uniqueCache[key]) && oldCache[0] === dirruns && oldCache[1] === doneName) {\n // Assign to newCache so results back-propagate to previous elements\n return newCache[2] = oldCache[2];\n } else {\n // Reuse newcache so results back-propagate to previous elements\n uniqueCache[key] = newCache; // A match means we're done; a fail means we have to keep checking\n\n if (newCache[2] = matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n }\n }\n\n return false;\n };\n }\n\n function elementMatcher(matchers) {\n return matchers.length > 1 ? function (elem, context, xml) {\n var i = matchers.length;\n\n while (i--) {\n if (!matchers[i](elem, context, xml)) {\n return false;\n }\n }\n\n return true;\n } : matchers[0];\n }\n\n function multipleContexts(selector, contexts, results) {\n var i = 0,\n len = contexts.length;\n\n for (; i < len; i++) {\n Sizzle(selector, contexts[i], results);\n }\n\n return results;\n }\n\n function condense(unmatched, map, filter, context, xml) {\n var elem,\n newUnmatched = [],\n i = 0,\n len = unmatched.length,\n mapped = map != null;\n\n for (; i < len; i++) {\n if (elem = unmatched[i]) {\n if (!filter || filter(elem, context, xml)) {\n newUnmatched.push(elem);\n\n if (mapped) {\n map.push(i);\n }\n }\n }\n }\n\n return newUnmatched;\n }\n\n function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {\n if (postFilter && !postFilter[expando]) {\n postFilter = setMatcher(postFilter);\n }\n\n if (postFinder && !postFinder[expando]) {\n postFinder = setMatcher(postFinder, postSelector);\n }\n\n return markFunction(function (seed, results, context, xml) {\n var temp,\n i,\n elem,\n preMap = [],\n postMap = [],\n preexisting = results.length,\n // Get initial elements from seed or context\n elems = seed || multipleContexts(selector || \"*\", context.nodeType ? [context] : context, []),\n // Prefilter to get matcher input, preserving a map for seed-results synchronization\n matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems,\n matcherOut = matcher ? // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n postFinder || (seed ? preFilter : preexisting || postFilter) ? // ...intermediate processing is necessary\n [] : // ...otherwise use results directly\n results : matcherIn; // Find primary matches\n\n if (matcher) {\n matcher(matcherIn, matcherOut, context, xml);\n } // Apply postFilter\n\n\n if (postFilter) {\n temp = condense(matcherOut, postMap);\n postFilter(temp, [], context, xml); // Un-match failing elements by moving them back to matcherIn\n\n i = temp.length;\n\n while (i--) {\n if (elem = temp[i]) {\n matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem);\n }\n }\n }\n\n if (seed) {\n if (postFinder || preFilter) {\n if (postFinder) {\n // Get the final matcherOut by condensing this intermediate into postFinder contexts\n temp = [];\n i = matcherOut.length;\n\n while (i--) {\n if (elem = matcherOut[i]) {\n // Restore matcherIn since elem is not yet a final match\n temp.push(matcherIn[i] = elem);\n }\n }\n\n postFinder(null, matcherOut = [], temp, xml);\n } // Move matched elements from seed to results to keep them synchronized\n\n\n i = matcherOut.length;\n\n while (i--) {\n if ((elem = matcherOut[i]) && (temp = postFinder ? indexOf(seed, elem) : preMap[i]) > -1) {\n seed[temp] = !(results[temp] = elem);\n }\n }\n } // Add elements to results, through postFinder if defined\n\n } else {\n matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut);\n\n if (postFinder) {\n postFinder(null, results, matcherOut, xml);\n } else {\n push.apply(results, matcherOut);\n }\n }\n });\n }\n\n function matcherFromTokens(tokens) {\n var checkContext,\n matcher,\n j,\n len = tokens.length,\n leadingRelative = Expr.relative[tokens[0].type],\n implicitRelative = leadingRelative || Expr.relative[\" \"],\n i = leadingRelative ? 1 : 0,\n // The foundational matcher ensures that elements are reachable from top-level context(s)\n matchContext = addCombinator(function (elem) {\n return elem === checkContext;\n }, implicitRelative, true),\n matchAnyContext = addCombinator(function (elem) {\n return indexOf(checkContext, elem) > -1;\n }, implicitRelative, true),\n matchers = [function (elem, context, xml) {\n var ret = !leadingRelative && (xml || context !== outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml)); // Avoid hanging onto element (issue #299)\n\n checkContext = null;\n return ret;\n }];\n\n for (; i < len; i++) {\n if (matcher = Expr.relative[tokens[i].type]) {\n matchers = [addCombinator(elementMatcher(matchers), matcher)];\n } else {\n matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches); // Return special upon seeing a positional matcher\n\n if (matcher[expando]) {\n // Find the next relative operator (if any) for proper handling\n j = ++i;\n\n for (; j < len; j++) {\n if (Expr.relative[tokens[j].type]) {\n break;\n }\n }\n\n return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector( // If the preceding token was a descendant combinator, insert an implicit any-element `*`\n tokens.slice(0, i - 1).concat({\n value: tokens[i - 2].type === \" \" ? \"*\" : \"\"\n })).replace(rtrim, \"$1\"), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens));\n }\n\n matchers.push(matcher);\n }\n }\n\n return elementMatcher(matchers);\n }\n\n function matcherFromGroupMatchers(elementMatchers, setMatchers) {\n var bySet = setMatchers.length > 0,\n byElement = elementMatchers.length > 0,\n superMatcher = function superMatcher(seed, context, xml, results, outermost) {\n var elem,\n j,\n matcher,\n matchedCount = 0,\n i = \"0\",\n unmatched = seed && [],\n setMatched = [],\n contextBackup = outermostContext,\n // We must always have either seed elements or outermost context\n elems = seed || byElement && Expr.find[\"TAG\"](\"*\", outermost),\n // Use integer dirruns iff this is the outermost matcher\n dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1,\n len = elems.length;\n\n if (outermost) {\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n outermostContext = context == document || context || outermost;\n } // Add elements passing elementMatchers directly to results\n // Support: IE<9, Safari\n // Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\n\n for (; i !== len && (elem = elems[i]) != null; i++) {\n if (byElement && elem) {\n j = 0; // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n\n if (!context && elem.ownerDocument != document) {\n setDocument(elem);\n xml = !documentIsHTML;\n }\n\n while (matcher = elementMatchers[j++]) {\n if (matcher(elem, context || document, xml)) {\n results.push(elem);\n break;\n }\n }\n\n if (outermost) {\n dirruns = dirrunsUnique;\n }\n } // Track unmatched elements for set filters\n\n\n if (bySet) {\n // They will have gone through all possible matchers\n if (elem = !matcher && elem) {\n matchedCount--;\n } // Lengthen the array for every element, matched or not\n\n\n if (seed) {\n unmatched.push(elem);\n }\n }\n } // `i` is now the count of elements visited above, and adding it to `matchedCount`\n // makes the latter nonnegative.\n\n\n matchedCount += i; // Apply set filters to unmatched elements\n // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n // equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n // no element matchers and no seed.\n // Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n // case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n // numerically zero.\n\n if (bySet && i !== matchedCount) {\n j = 0;\n\n while (matcher = setMatchers[j++]) {\n matcher(unmatched, setMatched, context, xml);\n }\n\n if (seed) {\n // Reintegrate element matches to eliminate the need for sorting\n if (matchedCount > 0) {\n while (i--) {\n if (!(unmatched[i] || setMatched[i])) {\n setMatched[i] = pop.call(results);\n }\n }\n } // Discard index placeholder values to get only actual matches\n\n\n setMatched = condense(setMatched);\n } // Add matches to results\n\n\n push.apply(results, setMatched); // Seedless set matches succeeding multiple successful matchers stipulate sorting\n\n if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) {\n Sizzle.uniqueSort(results);\n }\n } // Override manipulation of globals by nested matchers\n\n\n if (outermost) {\n dirruns = dirrunsUnique;\n outermostContext = contextBackup;\n }\n\n return unmatched;\n };\n\n return bySet ? markFunction(superMatcher) : superMatcher;\n }\n\n compile = Sizzle.compile = function (selector, match\n /* Internal Use Only */\n ) {\n var i,\n setMatchers = [],\n elementMatchers = [],\n cached = compilerCache[selector + \" \"];\n\n if (!cached) {\n // Generate a function of recursive functions that can be used to check each element\n if (!match) {\n match = tokenize(selector);\n }\n\n i = match.length;\n\n while (i--) {\n cached = matcherFromTokens(match[i]);\n\n if (cached[expando]) {\n setMatchers.push(cached);\n } else {\n elementMatchers.push(cached);\n }\n } // Cache the compiled function\n\n\n cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers)); // Save selector and tokenization\n\n cached.selector = selector;\n }\n\n return cached;\n };\n /**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\n\n\n select = Sizzle.select = function (selector, context, results, seed) {\n var i,\n tokens,\n token,\n type,\n find,\n compiled = typeof selector === \"function\" && selector,\n match = !seed && tokenize(selector = compiled.selector || selector);\n results = results || []; // Try to minimize operations if there is only one selector in the list and no seed\n // (the latter of which guarantees us context)\n\n if (match.length === 1) {\n // Reduce context if the leading compound selector is an ID\n tokens = match[0] = match[0].slice(0);\n\n if (tokens.length > 2 && (token = tokens[0]).type === \"ID\" && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) {\n context = (Expr.find[\"ID\"](token.matches[0].replace(runescape, funescape), context) || [])[0];\n\n if (!context) {\n return results; // Precompiled matchers will still verify ancestry, so step up a level\n } else if (compiled) {\n context = context.parentNode;\n }\n\n selector = selector.slice(tokens.shift().value.length);\n } // Fetch a seed set for right-to-left matching\n\n\n i = matchExpr[\"needsContext\"].test(selector) ? 0 : tokens.length;\n\n while (i--) {\n token = tokens[i]; // Abort if we hit a combinator\n\n if (Expr.relative[type = token.type]) {\n break;\n }\n\n if (find = Expr.find[type]) {\n // Search, expanding context for leading sibling combinators\n if (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context)) {\n // If seed is empty or no tokens remain, we can return early\n tokens.splice(i, 1);\n selector = seed.length && toSelector(tokens);\n\n if (!selector) {\n push.apply(results, seed);\n return results;\n }\n\n break;\n }\n }\n }\n } // Compile and execute a filtering function if one is not provided\n // Provide `match` to avoid retokenization if we modified the selector above\n\n\n (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, !context || rsibling.test(selector) && testContext(context.parentNode) || context);\n return results;\n }; // One-time assignments\n // Sort stability\n\n\n support.sortStable = expando.split(\"\").sort(sortOrder).join(\"\") === expando; // Support: Chrome 14-35+\n // Always assume duplicates if they aren't passed to the comparison function\n\n support.detectDuplicates = !!hasDuplicate; // Initialize against the default document\n\n setDocument(); // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n // Detached nodes confoundingly follow *each other*\n\n support.sortDetached = assert(function (el) {\n // Should return 1, but returns 4 (following)\n return el.compareDocumentPosition(document.createElement(\"fieldset\")) & 1;\n }); // Support: IE<8\n // Prevent attribute/property \"interpolation\"\n // https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\n\n if (!assert(function (el) {\n el.innerHTML = \" \";\n return el.firstChild.getAttribute(\"href\") === \"#\";\n })) {\n addHandle(\"type|href|height|width\", function (elem, name, isXML) {\n if (!isXML) {\n return elem.getAttribute(name, name.toLowerCase() === \"type\" ? 1 : 2);\n }\n });\n } // Support: IE<9\n // Use defaultValue in place of getAttribute(\"value\")\n\n\n if (!support.attributes || !assert(function (el) {\n el.innerHTML = \" \";\n el.firstChild.setAttribute(\"value\", \"\");\n return el.firstChild.getAttribute(\"value\") === \"\";\n })) {\n addHandle(\"value\", function (elem, _name, isXML) {\n if (!isXML && elem.nodeName.toLowerCase() === \"input\") {\n return elem.defaultValue;\n }\n });\n } // Support: IE<9\n // Use getAttributeNode to fetch booleans when getAttribute lies\n\n\n if (!assert(function (el) {\n return el.getAttribute(\"disabled\") == null;\n })) {\n addHandle(booleans, function (elem, name, isXML) {\n var val;\n\n if (!isXML) {\n return elem[name] === true ? name.toLowerCase() : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;\n }\n });\n }\n\n return Sizzle;\n }(window);\n\n jQuery.find = Sizzle;\n jQuery.expr = Sizzle.selectors; // Deprecated\n\n jQuery.expr[\":\"] = jQuery.expr.pseudos;\n jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\n jQuery.text = Sizzle.getText;\n jQuery.isXMLDoc = Sizzle.isXML;\n jQuery.contains = Sizzle.contains;\n jQuery.escapeSelector = Sizzle.escape;\n\n var dir = function dir(elem, _dir, until) {\n var matched = [],\n truncate = until !== undefined;\n\n while ((elem = elem[_dir]) && elem.nodeType !== 9) {\n if (elem.nodeType === 1) {\n if (truncate && jQuery(elem).is(until)) {\n break;\n }\n\n matched.push(elem);\n }\n }\n\n return matched;\n };\n\n var _siblings = function siblings(n, elem) {\n var matched = [];\n\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== elem) {\n matched.push(n);\n }\n }\n\n return matched;\n };\n\n var rneedsContext = jQuery.expr.match.needsContext;\n\n function nodeName(elem, name) {\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n }\n\n var rsingleTag = /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i; // Implement the identical functionality for filter and not\n\n function winnow(elements, qualifier, not) {\n if (isFunction(qualifier)) {\n return jQuery.grep(elements, function (elem, i) {\n return !!qualifier.call(elem, i, elem) !== not;\n });\n } // Single element\n\n\n if (qualifier.nodeType) {\n return jQuery.grep(elements, function (elem) {\n return elem === qualifier !== not;\n });\n } // Arraylike of elements (jQuery, arguments, Array)\n\n\n if (typeof qualifier !== \"string\") {\n return jQuery.grep(elements, function (elem) {\n return indexOf.call(qualifier, elem) > -1 !== not;\n });\n } // Filtered directly for both simple and complex selectors\n\n\n return jQuery.filter(qualifier, elements, not);\n }\n\n jQuery.filter = function (expr, elems, not) {\n var elem = elems[0];\n\n if (not) {\n expr = \":not(\" + expr + \")\";\n }\n\n if (elems.length === 1 && elem.nodeType === 1) {\n return jQuery.find.matchesSelector(elem, expr) ? [elem] : [];\n }\n\n return jQuery.find.matches(expr, jQuery.grep(elems, function (elem) {\n return elem.nodeType === 1;\n }));\n };\n\n jQuery.fn.extend({\n find: function find(selector) {\n var i,\n ret,\n len = this.length,\n self = this;\n\n if (typeof selector !== \"string\") {\n return this.pushStack(jQuery(selector).filter(function () {\n for (i = 0; i < len; i++) {\n if (jQuery.contains(self[i], this)) {\n return true;\n }\n }\n }));\n }\n\n ret = this.pushStack([]);\n\n for (i = 0; i < len; i++) {\n jQuery.find(selector, self[i], ret);\n }\n\n return len > 1 ? jQuery.uniqueSort(ret) : ret;\n },\n filter: function filter(selector) {\n return this.pushStack(winnow(this, selector || [], false));\n },\n not: function not(selector) {\n return this.pushStack(winnow(this, selector || [], true));\n },\n is: function is(selector) {\n return !!winnow(this, // If this is a positional/relative selector, check membership in the returned set\n // so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n typeof selector === \"string\" && rneedsContext.test(selector) ? jQuery(selector) : selector || [], false).length;\n }\n }); // Initialize a jQuery object\n // A central reference to the root jQuery(document)\n\n var rootjQuery,\n // A simple way to check for HTML strings\n // Prioritize #id over to avoid XSS via location.hash (#9521)\n // Strict HTML recognition (#11290: must start with <)\n // Shortcut simple #id case for speed\n rquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n init = jQuery.fn.init = function (selector, context, root) {\n var match, elem; // HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\n if (!selector) {\n return this;\n } // Method init() accepts an alternate rootjQuery\n // so migrate can support jQuery.sub (gh-2101)\n\n\n root = root || rootjQuery; // Handle HTML strings\n\n if (typeof selector === \"string\") {\n if (selector[0] === \"<\" && selector[selector.length - 1] === \">\" && selector.length >= 3) {\n // Assume that strings that start and end with <> are HTML and skip the regex check\n match = [null, selector, null];\n } else {\n match = rquickExpr.exec(selector);\n } // Match html or make sure no context is specified for #id\n\n\n if (match && (match[1] || !context)) {\n // HANDLE: $(html) -> $(array)\n if (match[1]) {\n context = context instanceof jQuery ? context[0] : context; // Option to run scripts is true for back-compat\n // Intentionally let the error be thrown if parseHTML is not present\n\n jQuery.merge(this, jQuery.parseHTML(match[1], context && context.nodeType ? context.ownerDocument || context : document, true)); // HANDLE: $(html, props)\n\n if (rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) {\n for (match in context) {\n // Properties of context are called as methods if possible\n if (isFunction(this[match])) {\n this[match](context[match]); // ...and otherwise set as attributes\n } else {\n this.attr(match, context[match]);\n }\n }\n }\n\n return this; // HANDLE: $(#id)\n } else {\n elem = document.getElementById(match[2]);\n\n if (elem) {\n // Inject the element directly into the jQuery object\n this[0] = elem;\n this.length = 1;\n }\n\n return this;\n } // HANDLE: $(expr, $(...))\n\n } else if (!context || context.jquery) {\n return (context || root).find(selector); // HANDLE: $(expr, context)\n // (which is just equivalent to: $(context).find(expr)\n } else {\n return this.constructor(context).find(selector);\n } // HANDLE: $(DOMElement)\n\n } else if (selector.nodeType) {\n this[0] = selector;\n this.length = 1;\n return this; // HANDLE: $(function)\n // Shortcut for document ready\n } else if (isFunction(selector)) {\n return root.ready !== undefined ? root.ready(selector) : // Execute immediately if ready is not present\n selector(jQuery);\n }\n\n return jQuery.makeArray(selector, this);\n }; // Give the init function the jQuery prototype for later instantiation\n\n\n init.prototype = jQuery.fn; // Initialize central reference\n\n rootjQuery = jQuery(document);\n var rparentsprev = /^(?:parents|prev(?:Until|All))/,\n // Methods guaranteed to produce a unique set when starting from a unique set\n guaranteedUnique = {\n children: true,\n contents: true,\n next: true,\n prev: true\n };\n jQuery.fn.extend({\n has: function has(target) {\n var targets = jQuery(target, this),\n l = targets.length;\n return this.filter(function () {\n var i = 0;\n\n for (; i < l; i++) {\n if (jQuery.contains(this, targets[i])) {\n return true;\n }\n }\n });\n },\n closest: function closest(selectors, context) {\n var cur,\n i = 0,\n l = this.length,\n matched = [],\n targets = typeof selectors !== \"string\" && jQuery(selectors); // Positional selectors never match, since there's no _selection_ context\n\n if (!rneedsContext.test(selectors)) {\n for (; i < l; i++) {\n for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) {\n // Always skip document fragments\n if (cur.nodeType < 11 && (targets ? targets.index(cur) > -1 : // Don't pass non-elements to Sizzle\n cur.nodeType === 1 && jQuery.find.matchesSelector(cur, selectors))) {\n matched.push(cur);\n break;\n }\n }\n }\n }\n\n return this.pushStack(matched.length > 1 ? jQuery.uniqueSort(matched) : matched);\n },\n // Determine the position of an element within the set\n index: function index(elem) {\n // No argument, return index in parent\n if (!elem) {\n return this[0] && this[0].parentNode ? this.first().prevAll().length : -1;\n } // Index in selector\n\n\n if (typeof elem === \"string\") {\n return indexOf.call(jQuery(elem), this[0]);\n } // Locate the position of the desired element\n\n\n return indexOf.call(this, // If it receives a jQuery object, the first element is used\n elem.jquery ? elem[0] : elem);\n },\n add: function add(selector, context) {\n return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(), jQuery(selector, context))));\n },\n addBack: function addBack(selector) {\n return this.add(selector == null ? this.prevObject : this.prevObject.filter(selector));\n }\n });\n\n function sibling(cur, dir) {\n while ((cur = cur[dir]) && cur.nodeType !== 1) {}\n\n return cur;\n }\n\n jQuery.each({\n parent: function parent(elem) {\n var parent = elem.parentNode;\n return parent && parent.nodeType !== 11 ? parent : null;\n },\n parents: function parents(elem) {\n return dir(elem, \"parentNode\");\n },\n parentsUntil: function parentsUntil(elem, _i, until) {\n return dir(elem, \"parentNode\", until);\n },\n next: function next(elem) {\n return sibling(elem, \"nextSibling\");\n },\n prev: function prev(elem) {\n return sibling(elem, \"previousSibling\");\n },\n nextAll: function nextAll(elem) {\n return dir(elem, \"nextSibling\");\n },\n prevAll: function prevAll(elem) {\n return dir(elem, \"previousSibling\");\n },\n nextUntil: function nextUntil(elem, _i, until) {\n return dir(elem, \"nextSibling\", until);\n },\n prevUntil: function prevUntil(elem, _i, until) {\n return dir(elem, \"previousSibling\", until);\n },\n siblings: function siblings(elem) {\n return _siblings((elem.parentNode || {}).firstChild, elem);\n },\n children: function children(elem) {\n return _siblings(elem.firstChild);\n },\n contents: function contents(elem) {\n if (elem.contentDocument != null && // Support: IE 11+\n // elements with no `data` attribute has an object\n // `contentDocument` with a `null` prototype.\n getProto(elem.contentDocument)) {\n return elem.contentDocument;\n } // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n // Treat the template element as a regular one in browsers that\n // don't support it.\n\n\n if (nodeName(elem, \"template\")) {\n elem = elem.content || elem;\n }\n\n return jQuery.merge([], elem.childNodes);\n }\n }, function (name, fn) {\n jQuery.fn[name] = function (until, selector) {\n var matched = jQuery.map(this, fn, until);\n\n if (name.slice(-5) !== \"Until\") {\n selector = until;\n }\n\n if (selector && typeof selector === \"string\") {\n matched = jQuery.filter(selector, matched);\n }\n\n if (this.length > 1) {\n // Remove duplicates\n if (!guaranteedUnique[name]) {\n jQuery.uniqueSort(matched);\n } // Reverse order for parents* and prev-derivatives\n\n\n if (rparentsprev.test(name)) {\n matched.reverse();\n }\n }\n\n return this.pushStack(matched);\n };\n });\n var rnothtmlwhite = /[^\\x20\\t\\r\\n\\f]+/g; // Convert String-formatted options into Object-formatted ones\n\n function createOptions(options) {\n var object = {};\n jQuery.each(options.match(rnothtmlwhite) || [], function (_, flag) {\n object[flag] = true;\n });\n return object;\n }\n /*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\n\n\n jQuery.Callbacks = function (options) {\n // Convert options from String-formatted to Object-formatted if needed\n // (we check in cache first)\n options = typeof options === \"string\" ? createOptions(options) : jQuery.extend({}, options);\n\n var // Flag to know if list is currently firing\n firing,\n // Last fire value for non-forgettable lists\n memory,\n // Flag to know if list was already fired\n _fired,\n // Flag to prevent firing\n _locked,\n // Actual callback list\n list = [],\n // Queue of execution data for repeatable lists\n queue = [],\n // Index of currently firing callback (modified by add/remove as needed)\n firingIndex = -1,\n // Fire callbacks\n fire = function fire() {\n // Enforce single-firing\n _locked = _locked || options.once; // Execute callbacks for all pending executions,\n // respecting firingIndex overrides and runtime changes\n\n _fired = firing = true;\n\n for (; queue.length; firingIndex = -1) {\n memory = queue.shift();\n\n while (++firingIndex < list.length) {\n // Run callback and check for early termination\n if (list[firingIndex].apply(memory[0], memory[1]) === false && options.stopOnFalse) {\n // Jump to end and forget the data so .add doesn't re-fire\n firingIndex = list.length;\n memory = false;\n }\n }\n } // Forget the data if we're done with it\n\n\n if (!options.memory) {\n memory = false;\n }\n\n firing = false; // Clean up if we're done firing for good\n\n if (_locked) {\n // Keep an empty list if we have data for future add calls\n if (memory) {\n list = []; // Otherwise, this object is spent\n } else {\n list = \"\";\n }\n }\n },\n // Actual Callbacks object\n self = {\n // Add a callback or a collection of callbacks to the list\n add: function add() {\n if (list) {\n // If we have memory from a past run, we should fire after adding\n if (memory && !firing) {\n firingIndex = list.length - 1;\n queue.push(memory);\n }\n\n (function add(args) {\n jQuery.each(args, function (_, arg) {\n if (isFunction(arg)) {\n if (!options.unique || !self.has(arg)) {\n list.push(arg);\n }\n } else if (arg && arg.length && toType(arg) !== \"string\") {\n // Inspect recursively\n add(arg);\n }\n });\n })(arguments);\n\n if (memory && !firing) {\n fire();\n }\n }\n\n return this;\n },\n // Remove a callback from the list\n remove: function remove() {\n jQuery.each(arguments, function (_, arg) {\n var index;\n\n while ((index = jQuery.inArray(arg, list, index)) > -1) {\n list.splice(index, 1); // Handle firing indexes\n\n if (index <= firingIndex) {\n firingIndex--;\n }\n }\n });\n return this;\n },\n // Check if a given callback is in the list.\n // If no argument is given, return whether or not list has callbacks attached.\n has: function has(fn) {\n return fn ? jQuery.inArray(fn, list) > -1 : list.length > 0;\n },\n // Remove all callbacks from the list\n empty: function empty() {\n if (list) {\n list = [];\n }\n\n return this;\n },\n // Disable .fire and .add\n // Abort any current/pending executions\n // Clear all callbacks and values\n disable: function disable() {\n _locked = queue = [];\n list = memory = \"\";\n return this;\n },\n disabled: function disabled() {\n return !list;\n },\n // Disable .fire\n // Also disable .add unless we have memory (since it would have no effect)\n // Abort any pending executions\n lock: function lock() {\n _locked = queue = [];\n\n if (!memory && !firing) {\n list = memory = \"\";\n }\n\n return this;\n },\n locked: function locked() {\n return !!_locked;\n },\n // Call all callbacks with the given context and arguments\n fireWith: function fireWith(context, args) {\n if (!_locked) {\n args = args || [];\n args = [context, args.slice ? args.slice() : args];\n queue.push(args);\n\n if (!firing) {\n fire();\n }\n }\n\n return this;\n },\n // Call all the callbacks with the given arguments\n fire: function fire() {\n self.fireWith(this, arguments);\n return this;\n },\n // To know if the callbacks have already been called at least once\n fired: function fired() {\n return !!_fired;\n }\n };\n\n return self;\n };\n\n function Identity(v) {\n return v;\n }\n\n function Thrower(ex) {\n throw ex;\n }\n\n function adoptValue(value, resolve, reject, noValue) {\n var method;\n\n try {\n // Check for promise aspect first to privilege synchronous behavior\n if (value && isFunction(method = value.promise)) {\n method.call(value).done(resolve).fail(reject); // Other thenables\n } else if (value && isFunction(method = value.then)) {\n method.call(value, resolve, reject); // Other non-thenables\n } else {\n // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n // * false: [ value ].slice( 0 ) => resolve( value )\n // * true: [ value ].slice( 1 ) => resolve()\n resolve.apply(undefined, [value].slice(noValue));\n } // For Promises/A+, convert exceptions into rejections\n // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n // Deferred#then to conditionally suppress rejection.\n\n } catch (value) {\n // Support: Android 4.0 only\n // Strict mode functions invoked without .call/.apply get global-object context\n reject.apply(undefined, [value]);\n }\n }\n\n jQuery.extend({\n Deferred: function Deferred(func) {\n var tuples = [// action, add listener, callbacks,\n // ... .then handlers, argument index, [final state]\n [\"notify\", \"progress\", jQuery.Callbacks(\"memory\"), jQuery.Callbacks(\"memory\"), 2], [\"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), jQuery.Callbacks(\"once memory\"), 0, \"resolved\"], [\"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), jQuery.Callbacks(\"once memory\"), 1, \"rejected\"]],\n _state = \"pending\",\n _promise = {\n state: function state() {\n return _state;\n },\n always: function always() {\n deferred.done(arguments).fail(arguments);\n return this;\n },\n \"catch\": function _catch(fn) {\n return _promise.then(null, fn);\n },\n // Keep pipe for back-compat\n pipe: function\n /* fnDone, fnFail, fnProgress */\n pipe() {\n var fns = arguments;\n return jQuery.Deferred(function (newDefer) {\n jQuery.each(tuples, function (_i, tuple) {\n // Map tuples (progress, done, fail) to arguments (done, fail, progress)\n var fn = isFunction(fns[tuple[4]]) && fns[tuple[4]]; // deferred.progress(function() { bind to newDefer or newDefer.notify })\n // deferred.done(function() { bind to newDefer or newDefer.resolve })\n // deferred.fail(function() { bind to newDefer or newDefer.reject })\n\n deferred[tuple[1]](function () {\n var returned = fn && fn.apply(this, arguments);\n\n if (returned && isFunction(returned.promise)) {\n returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject);\n } else {\n newDefer[tuple[0] + \"With\"](this, fn ? [returned] : arguments);\n }\n });\n });\n fns = null;\n }).promise();\n },\n then: function then(onFulfilled, onRejected, onProgress) {\n var maxDepth = 0;\n\n function resolve(depth, deferred, handler, special) {\n return function () {\n var that = this,\n args = arguments,\n mightThrow = function mightThrow() {\n var returned, then; // Support: Promises/A+ section 2.3.3.3.3\n // https://promisesaplus.com/#point-59\n // Ignore double-resolution attempts\n\n if (depth < maxDepth) {\n return;\n }\n\n returned = handler.apply(that, args); // Support: Promises/A+ section 2.3.1\n // https://promisesaplus.com/#point-48\n\n if (returned === deferred.promise()) {\n throw new TypeError(\"Thenable self-resolution\");\n } // Support: Promises/A+ sections 2.3.3.1, 3.5\n // https://promisesaplus.com/#point-54\n // https://promisesaplus.com/#point-75\n // Retrieve `then` only once\n\n\n then = returned && ( // Support: Promises/A+ section 2.3.4\n // https://promisesaplus.com/#point-64\n // Only check objects and functions for thenability\n _typeof(returned) === \"object\" || typeof returned === \"function\") && returned.then; // Handle a returned thenable\n\n if (isFunction(then)) {\n // Special processors (notify) just wait for resolution\n if (special) {\n then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special)); // Normal processors (resolve) also hook into progress\n } else {\n // ...and disregard older resolution values\n maxDepth++;\n then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special), resolve(maxDepth, deferred, Identity, deferred.notifyWith));\n } // Handle all other returned values\n\n } else {\n // Only substitute handlers pass on context\n // and multiple values (non-spec behavior)\n if (handler !== Identity) {\n that = undefined;\n args = [returned];\n } // Process the value(s)\n // Default process is resolve\n\n\n (special || deferred.resolveWith)(that, args);\n }\n },\n // Only normal processors (resolve) catch and reject exceptions\n process = special ? mightThrow : function () {\n try {\n mightThrow();\n } catch (e) {\n if (jQuery.Deferred.exceptionHook) {\n jQuery.Deferred.exceptionHook(e, process.stackTrace);\n } // Support: Promises/A+ section 2.3.3.3.4.1\n // https://promisesaplus.com/#point-61\n // Ignore post-resolution exceptions\n\n\n if (depth + 1 >= maxDepth) {\n // Only substitute handlers pass on context\n // and multiple values (non-spec behavior)\n if (handler !== Thrower) {\n that = undefined;\n args = [e];\n }\n\n deferred.rejectWith(that, args);\n }\n }\n }; // Support: Promises/A+ section 2.3.3.3.1\n // https://promisesaplus.com/#point-57\n // Re-resolve promises immediately to dodge false rejection from\n // subsequent errors\n\n\n if (depth) {\n process();\n } else {\n // Call an optional hook to record the stack, in case of exception\n // since it's otherwise lost when execution goes async\n if (jQuery.Deferred.getStackHook) {\n process.stackTrace = jQuery.Deferred.getStackHook();\n }\n\n window.setTimeout(process);\n }\n };\n }\n\n return jQuery.Deferred(function (newDefer) {\n // progress_handlers.add( ... )\n tuples[0][3].add(resolve(0, newDefer, isFunction(onProgress) ? onProgress : Identity, newDefer.notifyWith)); // fulfilled_handlers.add( ... )\n\n tuples[1][3].add(resolve(0, newDefer, isFunction(onFulfilled) ? onFulfilled : Identity)); // rejected_handlers.add( ... )\n\n tuples[2][3].add(resolve(0, newDefer, isFunction(onRejected) ? onRejected : Thrower));\n }).promise();\n },\n // Get a promise for this deferred\n // If obj is provided, the promise aspect is added to the object\n promise: function promise(obj) {\n return obj != null ? jQuery.extend(obj, _promise) : _promise;\n }\n },\n deferred = {}; // Add list-specific methods\n\n jQuery.each(tuples, function (i, tuple) {\n var list = tuple[2],\n stateString = tuple[5]; // promise.progress = list.add\n // promise.done = list.add\n // promise.fail = list.add\n\n _promise[tuple[1]] = list.add; // Handle state\n\n if (stateString) {\n list.add(function () {\n // state = \"resolved\" (i.e., fulfilled)\n // state = \"rejected\"\n _state = stateString;\n }, // rejected_callbacks.disable\n // fulfilled_callbacks.disable\n tuples[3 - i][2].disable, // rejected_handlers.disable\n // fulfilled_handlers.disable\n tuples[3 - i][3].disable, // progress_callbacks.lock\n tuples[0][2].lock, // progress_handlers.lock\n tuples[0][3].lock);\n } // progress_handlers.fire\n // fulfilled_handlers.fire\n // rejected_handlers.fire\n\n\n list.add(tuple[3].fire); // deferred.notify = function() { deferred.notifyWith(...) }\n // deferred.resolve = function() { deferred.resolveWith(...) }\n // deferred.reject = function() { deferred.rejectWith(...) }\n\n deferred[tuple[0]] = function () {\n deferred[tuple[0] + \"With\"](this === deferred ? undefined : this, arguments);\n return this;\n }; // deferred.notifyWith = list.fireWith\n // deferred.resolveWith = list.fireWith\n // deferred.rejectWith = list.fireWith\n\n\n deferred[tuple[0] + \"With\"] = list.fireWith;\n }); // Make the deferred a promise\n\n _promise.promise(deferred); // Call given func if any\n\n\n if (func) {\n func.call(deferred, deferred);\n } // All done!\n\n\n return deferred;\n },\n // Deferred helper\n when: function when(singleValue) {\n var // count of uncompleted subordinates\n remaining = arguments.length,\n // count of unprocessed arguments\n i = remaining,\n // subordinate fulfillment data\n resolveContexts = Array(i),\n resolveValues = _slice.call(arguments),\n // the primary Deferred\n primary = jQuery.Deferred(),\n // subordinate callback factory\n updateFunc = function updateFunc(i) {\n return function (value) {\n resolveContexts[i] = this;\n resolveValues[i] = arguments.length > 1 ? _slice.call(arguments) : value;\n\n if (! --remaining) {\n primary.resolveWith(resolveContexts, resolveValues);\n }\n };\n }; // Single- and empty arguments are adopted like Promise.resolve\n\n\n if (remaining <= 1) {\n adoptValue(singleValue, primary.done(updateFunc(i)).resolve, primary.reject, !remaining); // Use .then() to unwrap secondary thenables (cf. gh-3000)\n\n if (primary.state() === \"pending\" || isFunction(resolveValues[i] && resolveValues[i].then)) {\n return primary.then();\n }\n } // Multiple arguments are aggregated like Promise.all array elements\n\n\n while (i--) {\n adoptValue(resolveValues[i], updateFunc(i), primary.reject);\n }\n\n return primary.promise();\n }\n }); // These usually indicate a programmer mistake during development,\n // warn about them ASAP rather than swallowing them by default.\n\n var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n jQuery.Deferred.exceptionHook = function (error, stack) {\n // Support: IE 8 - 9 only\n // Console exists when dev tools are open, which can happen at any time\n if (window.console && window.console.warn && error && rerrorNames.test(error.name)) {\n window.console.warn(\"jQuery.Deferred exception: \" + error.message, error.stack, stack);\n }\n };\n\n jQuery.readyException = function (error) {\n window.setTimeout(function () {\n throw error;\n });\n }; // The deferred used on DOM ready\n\n\n var readyList = jQuery.Deferred();\n\n jQuery.fn.ready = function (fn) {\n readyList.then(fn) // Wrap jQuery.readyException in a function so that the lookup\n // happens at the time of error handling instead of callback\n // registration.\n .catch(function (error) {\n jQuery.readyException(error);\n });\n return this;\n };\n\n jQuery.extend({\n // Is the DOM ready to be used? Set to true once it occurs.\n isReady: false,\n // A counter to track how many items to wait for before\n // the ready event fires. See #6781\n readyWait: 1,\n // Handle when the DOM is ready\n ready: function ready(wait) {\n // Abort if there are pending holds or we're already ready\n if (wait === true ? --jQuery.readyWait : jQuery.isReady) {\n return;\n } // Remember that the DOM is ready\n\n\n jQuery.isReady = true; // If a normal DOM Ready event fired, decrement, and wait if need be\n\n if (wait !== true && --jQuery.readyWait > 0) {\n return;\n } // If there are functions bound, to execute\n\n\n readyList.resolveWith(document, [jQuery]);\n }\n });\n jQuery.ready.then = readyList.then; // The ready event handler and self cleanup method\n\n function completed() {\n document.removeEventListener(\"DOMContentLoaded\", completed);\n window.removeEventListener(\"load\", completed);\n jQuery.ready();\n } // Catch cases where $(document).ready() is called\n // after the browser event has already occurred.\n // Support: IE <=9 - 10 only\n // Older IE sometimes signals \"interactive\" too soon\n\n\n if (document.readyState === \"complete\" || document.readyState !== \"loading\" && !document.documentElement.doScroll) {\n // Handle it asynchronously to allow scripts the opportunity to delay ready\n window.setTimeout(jQuery.ready);\n } else {\n // Use the handy event callback\n document.addEventListener(\"DOMContentLoaded\", completed); // A fallback to window.onload, that will always work\n\n window.addEventListener(\"load\", completed);\n } // Multifunctional method to get and set values of a collection\n // The value/s can optionally be executed if it's a function\n\n\n var access = function access(elems, fn, key, value, chainable, emptyGet, raw) {\n var i = 0,\n len = elems.length,\n bulk = key == null; // Sets many values\n\n if (toType(key) === \"object\") {\n chainable = true;\n\n for (i in key) {\n access(elems, fn, i, key[i], true, emptyGet, raw);\n } // Sets one value\n\n } else if (value !== undefined) {\n chainable = true;\n\n if (!isFunction(value)) {\n raw = true;\n }\n\n if (bulk) {\n // Bulk operations run against the entire set\n if (raw) {\n fn.call(elems, value);\n fn = null; // ...except when executing function values\n } else {\n bulk = fn;\n\n fn = function fn(elem, _key, value) {\n return bulk.call(jQuery(elem), value);\n };\n }\n }\n\n if (fn) {\n for (; i < len; i++) {\n fn(elems[i], key, raw ? value : value.call(elems[i], i, fn(elems[i], key)));\n }\n }\n }\n\n if (chainable) {\n return elems;\n } // Gets\n\n\n if (bulk) {\n return fn.call(elems);\n }\n\n return len ? fn(elems[0], key) : emptyGet;\n }; // Matches dashed string for camelizing\n\n\n var rmsPrefix = /^-ms-/,\n rdashAlpha = /-([a-z])/g; // Used by camelCase as callback to replace()\n\n function fcamelCase(_all, letter) {\n return letter.toUpperCase();\n } // Convert dashed to camelCase; used by the css and data modules\n // Support: IE <=9 - 11, Edge 12 - 15\n // Microsoft forgot to hump their vendor prefix (#9572)\n\n\n function camelCase(string) {\n return string.replace(rmsPrefix, \"ms-\").replace(rdashAlpha, fcamelCase);\n }\n\n var acceptData = function acceptData(owner) {\n // Accepts only:\n // - Node\n // - Node.ELEMENT_NODE\n // - Node.DOCUMENT_NODE\n // - Object\n // - Any\n return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType;\n };\n\n function Data() {\n this.expando = jQuery.expando + Data.uid++;\n }\n\n Data.uid = 1;\n Data.prototype = {\n cache: function cache(owner) {\n // Check if the owner object already has a cache\n var value = owner[this.expando]; // If not, create one\n\n if (!value) {\n value = {}; // We can accept data for non-element nodes in modern browsers,\n // but we should not, see #8335.\n // Always return an empty object.\n\n if (acceptData(owner)) {\n // If it is a node unlikely to be stringify-ed or looped over\n // use plain assignment\n if (owner.nodeType) {\n owner[this.expando] = value; // Otherwise secure it in a non-enumerable property\n // configurable must be true to allow the property to be\n // deleted when data is removed\n } else {\n Object.defineProperty(owner, this.expando, {\n value: value,\n configurable: true\n });\n }\n }\n }\n\n return value;\n },\n set: function set(owner, data, value) {\n var prop,\n cache = this.cache(owner); // Handle: [ owner, key, value ] args\n // Always use camelCase key (gh-2257)\n\n if (typeof data === \"string\") {\n cache[camelCase(data)] = value; // Handle: [ owner, { properties } ] args\n } else {\n // Copy the properties one-by-one to the cache object\n for (prop in data) {\n cache[camelCase(prop)] = data[prop];\n }\n }\n\n return cache;\n },\n get: function get(owner, key) {\n return key === undefined ? this.cache(owner) : // Always use camelCase key (gh-2257)\n owner[this.expando] && owner[this.expando][camelCase(key)];\n },\n access: function access(owner, key, value) {\n // In cases where either:\n //\n // 1. No key was specified\n // 2. A string key was specified, but no value provided\n //\n // Take the \"read\" path and allow the get method to determine\n // which value to return, respectively either:\n //\n // 1. The entire cache object\n // 2. The data stored at the key\n //\n if (key === undefined || key && typeof key === \"string\" && value === undefined) {\n return this.get(owner, key);\n } // When the key is not a string, or both a key and value\n // are specified, set or extend (existing objects) with either:\n //\n // 1. An object of properties\n // 2. A key and value\n //\n\n\n this.set(owner, key, value); // Since the \"set\" path can have two possible entry points\n // return the expected data based on which path was taken[*]\n\n return value !== undefined ? value : key;\n },\n remove: function remove(owner, key) {\n var i,\n cache = owner[this.expando];\n\n if (cache === undefined) {\n return;\n }\n\n if (key !== undefined) {\n // Support array or space separated string of keys\n if (Array.isArray(key)) {\n // If key is an array of keys...\n // We always set camelCase keys, so remove that.\n key = key.map(camelCase);\n } else {\n key = camelCase(key); // If a key with the spaces exists, use it.\n // Otherwise, create an array by matching non-whitespace\n\n key = key in cache ? [key] : key.match(rnothtmlwhite) || [];\n }\n\n i = key.length;\n\n while (i--) {\n delete cache[key[i]];\n }\n } // Remove the expando if there's no more data\n\n\n if (key === undefined || jQuery.isEmptyObject(cache)) {\n // Support: Chrome <=35 - 45\n // Webkit & Blink performance suffers when deleting properties\n // from DOM nodes, so set to undefined instead\n // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n if (owner.nodeType) {\n owner[this.expando] = undefined;\n } else {\n delete owner[this.expando];\n }\n }\n },\n hasData: function hasData(owner) {\n var cache = owner[this.expando];\n return cache !== undefined && !jQuery.isEmptyObject(cache);\n }\n };\n var dataPriv = new Data();\n var dataUser = new Data(); //\tImplementation Summary\n //\n //\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n //\t2. Improve the module's maintainability by reducing the storage\n //\t\tpaths to a single mechanism.\n //\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n //\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n //\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n //\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\n var rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n rmultiDash = /[A-Z]/g;\n\n function getData(data) {\n if (data === \"true\") {\n return true;\n }\n\n if (data === \"false\") {\n return false;\n }\n\n if (data === \"null\") {\n return null;\n } // Only convert to a number if it doesn't change the string\n\n\n if (data === +data + \"\") {\n return +data;\n }\n\n if (rbrace.test(data)) {\n return JSON.parse(data);\n }\n\n return data;\n }\n\n function dataAttr(elem, key, data) {\n var name; // If nothing was found internally, try to fetch any\n // data from the HTML5 data-* attribute\n\n if (data === undefined && elem.nodeType === 1) {\n name = \"data-\" + key.replace(rmultiDash, \"-$&\").toLowerCase();\n data = elem.getAttribute(name);\n\n if (typeof data === \"string\") {\n try {\n data = getData(data);\n } catch (e) {} // Make sure we set the data so it isn't changed later\n\n\n dataUser.set(elem, key, data);\n } else {\n data = undefined;\n }\n }\n\n return data;\n }\n\n jQuery.extend({\n hasData: function hasData(elem) {\n return dataUser.hasData(elem) || dataPriv.hasData(elem);\n },\n data: function data(elem, name, _data) {\n return dataUser.access(elem, name, _data);\n },\n removeData: function removeData(elem, name) {\n dataUser.remove(elem, name);\n },\n // TODO: Now that all calls to _data and _removeData have been replaced\n // with direct calls to dataPriv methods, these can be deprecated.\n _data: function _data(elem, name, data) {\n return dataPriv.access(elem, name, data);\n },\n _removeData: function _removeData(elem, name) {\n dataPriv.remove(elem, name);\n }\n });\n jQuery.fn.extend({\n data: function data(key, value) {\n var i,\n name,\n data,\n elem = this[0],\n attrs = elem && elem.attributes; // Gets all values\n\n if (key === undefined) {\n if (this.length) {\n data = dataUser.get(elem);\n\n if (elem.nodeType === 1 && !dataPriv.get(elem, \"hasDataAttrs\")) {\n i = attrs.length;\n\n while (i--) {\n // Support: IE 11 only\n // The attrs elements can be null (#14894)\n if (attrs[i]) {\n name = attrs[i].name;\n\n if (name.indexOf(\"data-\") === 0) {\n name = camelCase(name.slice(5));\n dataAttr(elem, name, data[name]);\n }\n }\n }\n\n dataPriv.set(elem, \"hasDataAttrs\", true);\n }\n }\n\n return data;\n } // Sets multiple values\n\n\n if (_typeof(key) === \"object\") {\n return this.each(function () {\n dataUser.set(this, key);\n });\n }\n\n return access(this, function (value) {\n var data; // The calling jQuery object (element matches) is not empty\n // (and therefore has an element appears at this[ 0 ]) and the\n // `value` parameter was not undefined. An empty jQuery object\n // will result in `undefined` for elem = this[ 0 ] which will\n // throw an exception if an attempt to read a data cache is made.\n\n if (elem && value === undefined) {\n // Attempt to get data from the cache\n // The key will always be camelCased in Data\n data = dataUser.get(elem, key);\n\n if (data !== undefined) {\n return data;\n } // Attempt to \"discover\" the data in\n // HTML5 custom data-* attrs\n\n\n data = dataAttr(elem, key);\n\n if (data !== undefined) {\n return data;\n } // We tried really hard, but the data doesn't exist.\n\n\n return;\n } // Set the data...\n\n\n this.each(function () {\n // We always store the camelCased key\n dataUser.set(this, key, value);\n });\n }, null, value, arguments.length > 1, null, true);\n },\n removeData: function removeData(key) {\n return this.each(function () {\n dataUser.remove(this, key);\n });\n }\n });\n jQuery.extend({\n queue: function queue(elem, type, data) {\n var queue;\n\n if (elem) {\n type = (type || \"fx\") + \"queue\";\n queue = dataPriv.get(elem, type); // Speed up dequeue by getting out quickly if this is just a lookup\n\n if (data) {\n if (!queue || Array.isArray(data)) {\n queue = dataPriv.access(elem, type, jQuery.makeArray(data));\n } else {\n queue.push(data);\n }\n }\n\n return queue || [];\n }\n },\n dequeue: function dequeue(elem, type) {\n type = type || \"fx\";\n\n var queue = jQuery.queue(elem, type),\n startLength = queue.length,\n fn = queue.shift(),\n hooks = jQuery._queueHooks(elem, type),\n next = function next() {\n jQuery.dequeue(elem, type);\n }; // If the fx queue is dequeued, always remove the progress sentinel\n\n\n if (fn === \"inprogress\") {\n fn = queue.shift();\n startLength--;\n }\n\n if (fn) {\n // Add a progress sentinel to prevent the fx queue from being\n // automatically dequeued\n if (type === \"fx\") {\n queue.unshift(\"inprogress\");\n } // Clear up the last queue stop function\n\n\n delete hooks.stop;\n fn.call(elem, next, hooks);\n }\n\n if (!startLength && hooks) {\n hooks.empty.fire();\n }\n },\n // Not public - generate a queueHooks object, or return the current one\n _queueHooks: function _queueHooks(elem, type) {\n var key = type + \"queueHooks\";\n return dataPriv.get(elem, key) || dataPriv.access(elem, key, {\n empty: jQuery.Callbacks(\"once memory\").add(function () {\n dataPriv.remove(elem, [type + \"queue\", key]);\n })\n });\n }\n });\n jQuery.fn.extend({\n queue: function queue(type, data) {\n var setter = 2;\n\n if (typeof type !== \"string\") {\n data = type;\n type = \"fx\";\n setter--;\n }\n\n if (arguments.length < setter) {\n return jQuery.queue(this[0], type);\n }\n\n return data === undefined ? this : this.each(function () {\n var queue = jQuery.queue(this, type, data); // Ensure a hooks for this queue\n\n jQuery._queueHooks(this, type);\n\n if (type === \"fx\" && queue[0] !== \"inprogress\") {\n jQuery.dequeue(this, type);\n }\n });\n },\n dequeue: function dequeue(type) {\n return this.each(function () {\n jQuery.dequeue(this, type);\n });\n },\n clearQueue: function clearQueue(type) {\n return this.queue(type || \"fx\", []);\n },\n // Get a promise resolved when queues of a certain type\n // are emptied (fx is the type by default)\n promise: function promise(type, obj) {\n var tmp,\n count = 1,\n defer = jQuery.Deferred(),\n elements = this,\n i = this.length,\n resolve = function resolve() {\n if (! --count) {\n defer.resolveWith(elements, [elements]);\n }\n };\n\n if (typeof type !== \"string\") {\n obj = type;\n type = undefined;\n }\n\n type = type || \"fx\";\n\n while (i--) {\n tmp = dataPriv.get(elements[i], type + \"queueHooks\");\n\n if (tmp && tmp.empty) {\n count++;\n tmp.empty.add(resolve);\n }\n }\n\n resolve();\n return defer.promise(obj);\n }\n });\n var pnum = /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source;\n var rcssNum = new RegExp(\"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\");\n var cssExpand = [\"Top\", \"Right\", \"Bottom\", \"Left\"];\n var documentElement = document.documentElement;\n\n var isAttached = function isAttached(elem) {\n return jQuery.contains(elem.ownerDocument, elem);\n },\n composed = {\n composed: true\n }; // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n // Check attachment across shadow DOM boundaries when possible (gh-3504)\n // Support: iOS 10.0-10.2 only\n // Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n // leading to errors. We need to check for `getRootNode`.\n\n\n if (documentElement.getRootNode) {\n isAttached = function isAttached(elem) {\n return jQuery.contains(elem.ownerDocument, elem) || elem.getRootNode(composed) === elem.ownerDocument;\n };\n }\n\n var isHiddenWithinTree = function isHiddenWithinTree(elem, el) {\n // isHiddenWithinTree might be called from jQuery#filter function;\n // in that case, element will be second argument\n elem = el || elem; // Inline style trumps all\n\n return elem.style.display === \"none\" || elem.style.display === \"\" && // Otherwise, check computed style\n // Support: Firefox <=43 - 45\n // Disconnected elements can have computed display: none, so first confirm that elem is\n // in the document.\n isAttached(elem) && jQuery.css(elem, \"display\") === \"none\";\n };\n\n function adjustCSS(elem, prop, valueParts, tween) {\n var adjusted,\n scale,\n maxIterations = 20,\n currentValue = tween ? function () {\n return tween.cur();\n } : function () {\n return jQuery.css(elem, prop, \"\");\n },\n initial = currentValue(),\n unit = valueParts && valueParts[3] || (jQuery.cssNumber[prop] ? \"\" : \"px\"),\n // Starting value computation is required for potential unit mismatches\n initialInUnit = elem.nodeType && (jQuery.cssNumber[prop] || unit !== \"px\" && +initial) && rcssNum.exec(jQuery.css(elem, prop));\n\n if (initialInUnit && initialInUnit[3] !== unit) {\n // Support: Firefox <=54\n // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n initial = initial / 2; // Trust units reported by jQuery.css\n\n unit = unit || initialInUnit[3]; // Iteratively approximate from a nonzero starting point\n\n initialInUnit = +initial || 1;\n\n while (maxIterations--) {\n // Evaluate and update our best guess (doubling guesses that zero out).\n // Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n jQuery.style(elem, prop, initialInUnit + unit);\n\n if ((1 - scale) * (1 - (scale = currentValue() / initial || 0.5)) <= 0) {\n maxIterations = 0;\n }\n\n initialInUnit = initialInUnit / scale;\n }\n\n initialInUnit = initialInUnit * 2;\n jQuery.style(elem, prop, initialInUnit + unit); // Make sure we update the tween properties later on\n\n valueParts = valueParts || [];\n }\n\n if (valueParts) {\n initialInUnit = +initialInUnit || +initial || 0; // Apply relative offset (+=/-=) if specified\n\n adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] : +valueParts[2];\n\n if (tween) {\n tween.unit = unit;\n tween.start = initialInUnit;\n tween.end = adjusted;\n }\n }\n\n return adjusted;\n }\n\n var defaultDisplayMap = {};\n\n function getDefaultDisplay(elem) {\n var temp,\n doc = elem.ownerDocument,\n nodeName = elem.nodeName,\n display = defaultDisplayMap[nodeName];\n\n if (display) {\n return display;\n }\n\n temp = doc.body.appendChild(doc.createElement(nodeName));\n display = jQuery.css(temp, \"display\");\n temp.parentNode.removeChild(temp);\n\n if (display === \"none\") {\n display = \"block\";\n }\n\n defaultDisplayMap[nodeName] = display;\n return display;\n }\n\n function showHide(elements, show) {\n var display,\n elem,\n values = [],\n index = 0,\n length = elements.length; // Determine new display value for elements that need to change\n\n for (; index < length; index++) {\n elem = elements[index];\n\n if (!elem.style) {\n continue;\n }\n\n display = elem.style.display;\n\n if (show) {\n // Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n // check is required in this first loop unless we have a nonempty display value (either\n // inline or about-to-be-restored)\n if (display === \"none\") {\n values[index] = dataPriv.get(elem, \"display\") || null;\n\n if (!values[index]) {\n elem.style.display = \"\";\n }\n }\n\n if (elem.style.display === \"\" && isHiddenWithinTree(elem)) {\n values[index] = getDefaultDisplay(elem);\n }\n } else {\n if (display !== \"none\") {\n values[index] = \"none\"; // Remember what we're overwriting\n\n dataPriv.set(elem, \"display\", display);\n }\n }\n } // Set the display of the elements in a second loop to avoid constant reflow\n\n\n for (index = 0; index < length; index++) {\n if (values[index] != null) {\n elements[index].style.display = values[index];\n }\n }\n\n return elements;\n }\n\n jQuery.fn.extend({\n show: function show() {\n return showHide(this, true);\n },\n hide: function hide() {\n return showHide(this);\n },\n toggle: function toggle(state) {\n if (typeof state === \"boolean\") {\n return state ? this.show() : this.hide();\n }\n\n return this.each(function () {\n if (isHiddenWithinTree(this)) {\n jQuery(this).show();\n } else {\n jQuery(this).hide();\n }\n });\n }\n });\n var rcheckableType = /^(?:checkbox|radio)$/i;\n var rtagName = /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i;\n var rscriptType = /^$|^module$|\\/(?:java|ecma)script/i;\n\n (function () {\n var fragment = document.createDocumentFragment(),\n div = fragment.appendChild(document.createElement(\"div\")),\n input = document.createElement(\"input\"); // Support: Android 4.0 - 4.3 only\n // Check state lost if the name is set (#11217)\n // Support: Windows Web Apps (WWA)\n // `name` and `type` must use .setAttribute for WWA (#14901)\n\n input.setAttribute(\"type\", \"radio\");\n input.setAttribute(\"checked\", \"checked\");\n input.setAttribute(\"name\", \"t\");\n div.appendChild(input); // Support: Android <=4.1 only\n // Older WebKit doesn't clone checked state correctly in fragments\n\n support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked; // Support: IE <=11 only\n // Make sure textarea (and checkbox) defaultValue is properly cloned\n\n div.innerHTML = \"\";\n support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue; // Support: IE <=9 only\n // IE <=9 replaces tags with their contents when inserted outside of\n // the select element.\n\n div.innerHTML = \" \";\n support.option = !!div.lastChild;\n })(); // We have to close these tags to support XHTML (#13200)\n\n\n var wrapMap = {\n // XHTML parsers do not magically insert elements in the\n // same way that tag soup parsers do. So we cannot shorten\n // this by omitting or other required elements.\n thead: [1, \"\"],\n col: [2, \"\"],\n tr: [2, \"\"],\n td: [3, \"\"],\n _default: [0, \"\", \"\"]\n };\n wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\n wrapMap.th = wrapMap.td; // Support: IE <=9 only\n\n if (!support.option) {\n wrapMap.optgroup = wrapMap.option = [1, \"\", \" \"];\n }\n\n function getAll(context, tag) {\n // Support: IE <=9 - 11 only\n // Use typeof to avoid zero-argument method invocation on host objects (#15151)\n var ret;\n\n if (typeof context.getElementsByTagName !== \"undefined\") {\n ret = context.getElementsByTagName(tag || \"*\");\n } else if (typeof context.querySelectorAll !== \"undefined\") {\n ret = context.querySelectorAll(tag || \"*\");\n } else {\n ret = [];\n }\n\n if (tag === undefined || tag && nodeName(context, tag)) {\n return jQuery.merge([context], ret);\n }\n\n return ret;\n } // Mark scripts as having already been evaluated\n\n\n function setGlobalEval(elems, refElements) {\n var i = 0,\n l = elems.length;\n\n for (; i < l; i++) {\n dataPriv.set(elems[i], \"globalEval\", !refElements || dataPriv.get(refElements[i], \"globalEval\"));\n }\n }\n\n var rhtml = /<|?\\w+;/;\n\n function buildFragment(elems, context, scripts, selection, ignored) {\n var elem,\n tmp,\n tag,\n wrap,\n attached,\n j,\n fragment = context.createDocumentFragment(),\n nodes = [],\n i = 0,\n l = elems.length;\n\n for (; i < l; i++) {\n elem = elems[i];\n\n if (elem || elem === 0) {\n // Add nodes directly\n if (toType(elem) === \"object\") {\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(nodes, elem.nodeType ? [elem] : elem); // Convert non-html into a text node\n } else if (!rhtml.test(elem)) {\n nodes.push(context.createTextNode(elem)); // Convert html into DOM nodes\n } else {\n tmp = tmp || fragment.appendChild(context.createElement(\"div\")); // Deserialize a standard representation\n\n tag = (rtagName.exec(elem) || [\"\", \"\"])[1].toLowerCase();\n wrap = wrapMap[tag] || wrapMap._default;\n tmp.innerHTML = wrap[1] + jQuery.htmlPrefilter(elem) + wrap[2]; // Descend through wrappers to the right content\n\n j = wrap[0];\n\n while (j--) {\n tmp = tmp.lastChild;\n } // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n\n\n jQuery.merge(nodes, tmp.childNodes); // Remember the top-level container\n\n tmp = fragment.firstChild; // Ensure the created nodes are orphaned (#12392)\n\n tmp.textContent = \"\";\n }\n }\n } // Remove wrapper from fragment\n\n\n fragment.textContent = \"\";\n i = 0;\n\n while (elem = nodes[i++]) {\n // Skip elements already in the context collection (trac-4087)\n if (selection && jQuery.inArray(elem, selection) > -1) {\n if (ignored) {\n ignored.push(elem);\n }\n\n continue;\n }\n\n attached = isAttached(elem); // Append to fragment\n\n tmp = getAll(fragment.appendChild(elem), \"script\"); // Preserve script evaluation history\n\n if (attached) {\n setGlobalEval(tmp);\n } // Capture executables\n\n\n if (scripts) {\n j = 0;\n\n while (elem = tmp[j++]) {\n if (rscriptType.test(elem.type || \"\")) {\n scripts.push(elem);\n }\n }\n }\n }\n\n return fragment;\n }\n\n var rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\n function returnTrue() {\n return true;\n }\n\n function returnFalse() {\n return false;\n } // Support: IE <=9 - 11+\n // focus() and blur() are asynchronous, except when they are no-op.\n // So expect focus to be synchronous when the element is already active,\n // and blur to be synchronous when the element is not already active.\n // (focus and blur are always synchronous in other supported browsers,\n // this just defines when we can count on it).\n\n\n function expectSync(elem, type) {\n return elem === safeActiveElement() === (type === \"focus\");\n } // Support: IE <=9 only\n // Accessing document.activeElement can throw unexpectedly\n // https://bugs.jquery.com/ticket/13393\n\n\n function safeActiveElement() {\n try {\n return document.activeElement;\n } catch (err) {}\n }\n\n function _on(elem, types, selector, data, fn, one) {\n var origFn, type; // Types can be a map of types/handlers\n\n if (_typeof(types) === \"object\") {\n // ( types-Object, selector, data )\n if (typeof selector !== \"string\") {\n // ( types-Object, data )\n data = data || selector;\n selector = undefined;\n }\n\n for (type in types) {\n _on(elem, type, selector, data, types[type], one);\n }\n\n return elem;\n }\n\n if (data == null && fn == null) {\n // ( types, fn )\n fn = selector;\n data = selector = undefined;\n } else if (fn == null) {\n if (typeof selector === \"string\") {\n // ( types, selector, fn )\n fn = data;\n data = undefined;\n } else {\n // ( types, data, fn )\n fn = data;\n data = selector;\n selector = undefined;\n }\n }\n\n if (fn === false) {\n fn = returnFalse;\n } else if (!fn) {\n return elem;\n }\n\n if (one === 1) {\n origFn = fn;\n\n fn = function fn(event) {\n // Can use an empty set, since event contains the info\n jQuery().off(event);\n return origFn.apply(this, arguments);\n }; // Use same guid so caller can remove using origFn\n\n\n fn.guid = origFn.guid || (origFn.guid = jQuery.guid++);\n }\n\n return elem.each(function () {\n jQuery.event.add(this, types, fn, data, selector);\n });\n }\n /*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\n\n\n jQuery.event = {\n global: {},\n add: function add(elem, types, handler, data, selector) {\n var handleObjIn,\n eventHandle,\n tmp,\n events,\n t,\n handleObj,\n special,\n handlers,\n type,\n namespaces,\n origType,\n elemData = dataPriv.get(elem); // Only attach events to objects that accept data\n\n if (!acceptData(elem)) {\n return;\n } // Caller can pass in an object of custom data in lieu of the handler\n\n\n if (handler.handler) {\n handleObjIn = handler;\n handler = handleObjIn.handler;\n selector = handleObjIn.selector;\n } // Ensure that invalid selectors throw exceptions at attach time\n // Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\n\n if (selector) {\n jQuery.find.matchesSelector(documentElement, selector);\n } // Make sure that the handler has a unique ID, used to find/remove it later\n\n\n if (!handler.guid) {\n handler.guid = jQuery.guid++;\n } // Init the element's event structure and main handler, if this is the first\n\n\n if (!(events = elemData.events)) {\n events = elemData.events = Object.create(null);\n }\n\n if (!(eventHandle = elemData.handle)) {\n eventHandle = elemData.handle = function (e) {\n // Discard the second event of a jQuery.event.trigger() and\n // when an event is called after a page has unloaded\n return typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply(elem, arguments) : undefined;\n };\n } // Handle multiple events separated by a space\n\n\n types = (types || \"\").match(rnothtmlwhite) || [\"\"];\n t = types.length;\n\n while (t--) {\n tmp = rtypenamespace.exec(types[t]) || [];\n type = origType = tmp[1];\n namespaces = (tmp[2] || \"\").split(\".\").sort(); // There *must* be a type, no attaching namespace-only handlers\n\n if (!type) {\n continue;\n } // If event changes its type, use the special event handlers for the changed type\n\n\n special = jQuery.event.special[type] || {}; // If selector defined, determine special event api type, otherwise given type\n\n type = (selector ? special.delegateType : special.bindType) || type; // Update special based on newly reset type\n\n special = jQuery.event.special[type] || {}; // handleObj is passed to all event handlers\n\n handleObj = jQuery.extend({\n type: type,\n origType: origType,\n data: data,\n handler: handler,\n guid: handler.guid,\n selector: selector,\n needsContext: selector && jQuery.expr.match.needsContext.test(selector),\n namespace: namespaces.join(\".\")\n }, handleObjIn); // Init the event handler queue if we're the first\n\n if (!(handlers = events[type])) {\n handlers = events[type] = [];\n handlers.delegateCount = 0; // Only use addEventListener if the special events handler returns false\n\n if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) {\n if (elem.addEventListener) {\n elem.addEventListener(type, eventHandle);\n }\n }\n }\n\n if (special.add) {\n special.add.call(elem, handleObj);\n\n if (!handleObj.handler.guid) {\n handleObj.handler.guid = handler.guid;\n }\n } // Add to the element's handler list, delegates in front\n\n\n if (selector) {\n handlers.splice(handlers.delegateCount++, 0, handleObj);\n } else {\n handlers.push(handleObj);\n } // Keep track of which events have ever been used, for event optimization\n\n\n jQuery.event.global[type] = true;\n }\n },\n // Detach an event or set of events from an element\n remove: function remove(elem, types, handler, selector, mappedTypes) {\n var j,\n origCount,\n tmp,\n events,\n t,\n handleObj,\n special,\n handlers,\n type,\n namespaces,\n origType,\n elemData = dataPriv.hasData(elem) && dataPriv.get(elem);\n\n if (!elemData || !(events = elemData.events)) {\n return;\n } // Once for each type.namespace in types; type may be omitted\n\n\n types = (types || \"\").match(rnothtmlwhite) || [\"\"];\n t = types.length;\n\n while (t--) {\n tmp = rtypenamespace.exec(types[t]) || [];\n type = origType = tmp[1];\n namespaces = (tmp[2] || \"\").split(\".\").sort(); // Unbind all events (on this namespace, if provided) for the element\n\n if (!type) {\n for (type in events) {\n jQuery.event.remove(elem, type + types[t], handler, selector, true);\n }\n\n continue;\n }\n\n special = jQuery.event.special[type] || {};\n type = (selector ? special.delegateType : special.bindType) || type;\n handlers = events[type] || [];\n tmp = tmp[2] && new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\"); // Remove matching events\n\n origCount = j = handlers.length;\n\n while (j--) {\n handleObj = handlers[j];\n\n if ((mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector)) {\n handlers.splice(j, 1);\n\n if (handleObj.selector) {\n handlers.delegateCount--;\n }\n\n if (special.remove) {\n special.remove.call(elem, handleObj);\n }\n }\n } // Remove generic event handler if we removed something and no more handlers exist\n // (avoids potential for endless recursion during removal of special event handlers)\n\n\n if (origCount && !handlers.length) {\n if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) {\n jQuery.removeEvent(elem, type, elemData.handle);\n }\n\n delete events[type];\n }\n } // Remove data and the expando if it's no longer used\n\n\n if (jQuery.isEmptyObject(events)) {\n dataPriv.remove(elem, \"handle events\");\n }\n },\n dispatch: function dispatch(nativeEvent) {\n var i,\n j,\n ret,\n matched,\n handleObj,\n handlerQueue,\n args = new Array(arguments.length),\n // Make a writable jQuery.Event from the native event object\n event = jQuery.event.fix(nativeEvent),\n handlers = (dataPriv.get(this, \"events\") || Object.create(null))[event.type] || [],\n special = jQuery.event.special[event.type] || {}; // Use the fix-ed jQuery.Event rather than the (read-only) native event\n\n args[0] = event;\n\n for (i = 1; i < arguments.length; i++) {\n args[i] = arguments[i];\n }\n\n event.delegateTarget = this; // Call the preDispatch hook for the mapped type, and let it bail if desired\n\n if (special.preDispatch && special.preDispatch.call(this, event) === false) {\n return;\n } // Determine handlers\n\n\n handlerQueue = jQuery.event.handlers.call(this, event, handlers); // Run delegates first; they may want to stop propagation beneath us\n\n i = 0;\n\n while ((matched = handlerQueue[i++]) && !event.isPropagationStopped()) {\n event.currentTarget = matched.elem;\n j = 0;\n\n while ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) {\n // If the event is namespaced, then each handler is only invoked if it is\n // specially universal or its namespaces are a superset of the event's.\n if (!event.rnamespace || handleObj.namespace === false || event.rnamespace.test(handleObj.namespace)) {\n event.handleObj = handleObj;\n event.data = handleObj.data;\n ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args);\n\n if (ret !== undefined) {\n if ((event.result = ret) === false) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n }\n } // Call the postDispatch hook for the mapped type\n\n\n if (special.postDispatch) {\n special.postDispatch.call(this, event);\n }\n\n return event.result;\n },\n handlers: function handlers(event, _handlers) {\n var i,\n handleObj,\n sel,\n matchedHandlers,\n matchedSelectors,\n handlerQueue = [],\n delegateCount = _handlers.delegateCount,\n cur = event.target; // Find delegate handlers\n\n if (delegateCount && // Support: IE <=9\n // Black-hole SVG instance trees (trac-13180)\n cur.nodeType && // Support: Firefox <=42\n // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n // Support: IE 11 only\n // ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n !(event.type === \"click\" && event.button >= 1)) {\n for (; cur !== this; cur = cur.parentNode || this) {\n // Don't check non-elements (#13208)\n // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n if (cur.nodeType === 1 && !(event.type === \"click\" && cur.disabled === true)) {\n matchedHandlers = [];\n matchedSelectors = {};\n\n for (i = 0; i < delegateCount; i++) {\n handleObj = _handlers[i]; // Don't conflict with Object.prototype properties (#13203)\n\n sel = handleObj.selector + \" \";\n\n if (matchedSelectors[sel] === undefined) {\n matchedSelectors[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) > -1 : jQuery.find(sel, this, null, [cur]).length;\n }\n\n if (matchedSelectors[sel]) {\n matchedHandlers.push(handleObj);\n }\n }\n\n if (matchedHandlers.length) {\n handlerQueue.push({\n elem: cur,\n handlers: matchedHandlers\n });\n }\n }\n }\n } // Add the remaining (directly-bound) handlers\n\n\n cur = this;\n\n if (delegateCount < _handlers.length) {\n handlerQueue.push({\n elem: cur,\n handlers: _handlers.slice(delegateCount)\n });\n }\n\n return handlerQueue;\n },\n addProp: function addProp(name, hook) {\n Object.defineProperty(jQuery.Event.prototype, name, {\n enumerable: true,\n configurable: true,\n get: isFunction(hook) ? function () {\n if (this.originalEvent) {\n return hook(this.originalEvent);\n }\n } : function () {\n if (this.originalEvent) {\n return this.originalEvent[name];\n }\n },\n set: function set(value) {\n Object.defineProperty(this, name, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: value\n });\n }\n });\n },\n fix: function fix(originalEvent) {\n return originalEvent[jQuery.expando] ? originalEvent : new jQuery.Event(originalEvent);\n },\n special: {\n load: {\n // Prevent triggered image.load events from bubbling to window.load\n noBubble: true\n },\n click: {\n // Utilize native event to ensure correct state for checkable inputs\n setup: function setup(data) {\n // For mutual compressibility with _default, replace `this` access with a local var.\n // `|| data` is dead code meant only to preserve the variable through minification.\n var el = this || data; // Claim the first handler\n\n if (rcheckableType.test(el.type) && el.click && nodeName(el, \"input\")) {\n // dataPriv.set( el, \"click\", ... )\n leverageNative(el, \"click\", returnTrue);\n } // Return false to allow normal processing in the caller\n\n\n return false;\n },\n trigger: function trigger(data) {\n // For mutual compressibility with _default, replace `this` access with a local var.\n // `|| data` is dead code meant only to preserve the variable through minification.\n var el = this || data; // Force setup before triggering a click\n\n if (rcheckableType.test(el.type) && el.click && nodeName(el, \"input\")) {\n leverageNative(el, \"click\");\n } // Return non-false to allow normal event-path propagation\n\n\n return true;\n },\n // For cross-browser consistency, suppress native .click() on links\n // Also prevent it if we're currently inside a leveraged native-event stack\n _default: function _default(event) {\n var target = event.target;\n return rcheckableType.test(target.type) && target.click && nodeName(target, \"input\") && dataPriv.get(target, \"click\") || nodeName(target, \"a\");\n }\n },\n beforeunload: {\n postDispatch: function postDispatch(event) {\n // Support: Firefox 20+\n // Firefox doesn't alert if the returnValue field is not set.\n if (event.result !== undefined && event.originalEvent) {\n event.originalEvent.returnValue = event.result;\n }\n }\n }\n }\n }; // Ensure the presence of an event listener that handles manually-triggered\n // synthetic events by interrupting progress until reinvoked in response to\n // *native* events that it fires directly, ensuring that state changes have\n // already occurred before other listeners are invoked.\n\n function leverageNative(el, type, expectSync) {\n // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n if (!expectSync) {\n if (dataPriv.get(el, type) === undefined) {\n jQuery.event.add(el, type, returnTrue);\n }\n\n return;\n } // Register the controller as a special universal handler for all event namespaces\n\n\n dataPriv.set(el, type, false);\n jQuery.event.add(el, type, {\n namespace: false,\n handler: function handler(event) {\n var notAsync,\n result,\n saved = dataPriv.get(this, type);\n\n if (event.isTrigger & 1 && this[type]) {\n // Interrupt processing of the outer synthetic .trigger()ed event\n // Saved data should be false in such cases, but might be a leftover capture object\n // from an async native handler (gh-4350)\n if (!saved.length) {\n // Store arguments for use when handling the inner native event\n // There will always be at least one argument (an event object), so this array\n // will not be confused with a leftover capture object.\n saved = _slice.call(arguments);\n dataPriv.set(this, type, saved); // Trigger the native event and capture its result\n // Support: IE <=9 - 11+\n // focus() and blur() are asynchronous\n\n notAsync = expectSync(this, type);\n this[type]();\n result = dataPriv.get(this, type);\n\n if (saved !== result || notAsync) {\n dataPriv.set(this, type, false);\n } else {\n result = {};\n }\n\n if (saved !== result) {\n // Cancel the outer synthetic event\n event.stopImmediatePropagation();\n event.preventDefault(); // Support: Chrome 86+\n // In Chrome, if an element having a focusout handler is blurred by\n // clicking outside of it, it invokes the handler synchronously. If\n // that handler calls `.remove()` on the element, the data is cleared,\n // leaving `result` undefined. We need to guard against this.\n\n return result && result.value;\n } // If this is an inner synthetic event for an event with a bubbling surrogate\n // (focus or blur), assume that the surrogate already propagated from triggering the\n // native event and prevent that from happening again here.\n // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n // bubbling surrogate propagates *after* the non-bubbling base), but that seems\n // less bad than duplication.\n\n } else if ((jQuery.event.special[type] || {}).delegateType) {\n event.stopPropagation();\n } // If this is a native event triggered above, everything is now in order\n // Fire an inner synthetic event with the original arguments\n\n } else if (saved.length) {\n // ...and capture the result\n dataPriv.set(this, type, {\n value: jQuery.event.trigger( // Support: IE <=9 - 11+\n // Extend with the prototype to reset the above stopImmediatePropagation()\n jQuery.extend(saved[0], jQuery.Event.prototype), saved.slice(1), this)\n }); // Abort handling of the native event\n\n event.stopImmediatePropagation();\n }\n }\n });\n }\n\n jQuery.removeEvent = function (elem, type, handle) {\n // This \"if\" is needed for plain objects\n if (elem.removeEventListener) {\n elem.removeEventListener(type, handle);\n }\n };\n\n jQuery.Event = function (src, props) {\n // Allow instantiation without the 'new' keyword\n if (!(this instanceof jQuery.Event)) {\n return new jQuery.Event(src, props);\n } // Event object\n\n\n if (src && src.type) {\n this.originalEvent = src;\n this.type = src.type; // Events bubbling up the document may have been marked as prevented\n // by a handler lower down the tree; reflect the correct value.\n\n this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined && // Support: Android <=2.3 only\n src.returnValue === false ? returnTrue : returnFalse; // Create target properties\n // Support: Safari <=6 - 7 only\n // Target should not be a text node (#504, #13143)\n\n this.target = src.target && src.target.nodeType === 3 ? src.target.parentNode : src.target;\n this.currentTarget = src.currentTarget;\n this.relatedTarget = src.relatedTarget; // Event type\n } else {\n this.type = src;\n } // Put explicitly provided properties onto the event object\n\n\n if (props) {\n jQuery.extend(this, props);\n } // Create a timestamp if incoming event doesn't have one\n\n\n this.timeStamp = src && src.timeStamp || Date.now(); // Mark it as fixed\n\n this[jQuery.expando] = true;\n }; // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n // https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\n\n\n jQuery.Event.prototype = {\n constructor: jQuery.Event,\n isDefaultPrevented: returnFalse,\n isPropagationStopped: returnFalse,\n isImmediatePropagationStopped: returnFalse,\n isSimulated: false,\n preventDefault: function preventDefault() {\n var e = this.originalEvent;\n this.isDefaultPrevented = returnTrue;\n\n if (e && !this.isSimulated) {\n e.preventDefault();\n }\n },\n stopPropagation: function stopPropagation() {\n var e = this.originalEvent;\n this.isPropagationStopped = returnTrue;\n\n if (e && !this.isSimulated) {\n e.stopPropagation();\n }\n },\n stopImmediatePropagation: function stopImmediatePropagation() {\n var e = this.originalEvent;\n this.isImmediatePropagationStopped = returnTrue;\n\n if (e && !this.isSimulated) {\n e.stopImmediatePropagation();\n }\n\n this.stopPropagation();\n }\n }; // Includes all common event props including KeyEvent and MouseEvent specific props\n\n jQuery.each({\n altKey: true,\n bubbles: true,\n cancelable: true,\n changedTouches: true,\n ctrlKey: true,\n detail: true,\n eventPhase: true,\n metaKey: true,\n pageX: true,\n pageY: true,\n shiftKey: true,\n view: true,\n \"char\": true,\n code: true,\n charCode: true,\n key: true,\n keyCode: true,\n button: true,\n buttons: true,\n clientX: true,\n clientY: true,\n offsetX: true,\n offsetY: true,\n pointerId: true,\n pointerType: true,\n screenX: true,\n screenY: true,\n targetTouches: true,\n toElement: true,\n touches: true,\n which: true\n }, jQuery.event.addProp);\n jQuery.each({\n focus: \"focusin\",\n blur: \"focusout\"\n }, function (type, delegateType) {\n jQuery.event.special[type] = {\n // Utilize native event if possible so blur/focus sequence is correct\n setup: function setup() {\n // Claim the first handler\n // dataPriv.set( this, \"focus\", ... )\n // dataPriv.set( this, \"blur\", ... )\n leverageNative(this, type, expectSync); // Return false to allow normal processing in the caller\n\n return false;\n },\n trigger: function trigger() {\n // Force setup before trigger\n leverageNative(this, type); // Return non-false to allow normal event-path propagation\n\n return true;\n },\n // Suppress native focus or blur as it's already being fired\n // in leverageNative.\n _default: function _default() {\n return true;\n },\n delegateType: delegateType\n };\n }); // Create mouseenter/leave events using mouseover/out and event-time checks\n // so that event delegation works in jQuery.\n // Do the same for pointerenter/pointerleave and pointerover/pointerout\n //\n // Support: Safari 7 only\n // Safari sends mouseenter too often; see:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n // for the description of the bug (it existed in older Chrome versions as well).\n\n jQuery.each({\n mouseenter: \"mouseover\",\n mouseleave: \"mouseout\",\n pointerenter: \"pointerover\",\n pointerleave: \"pointerout\"\n }, function (orig, fix) {\n jQuery.event.special[orig] = {\n delegateType: fix,\n bindType: fix,\n handle: function handle(event) {\n var ret,\n target = this,\n related = event.relatedTarget,\n handleObj = event.handleObj; // For mouseenter/leave call the handler if related is outside the target.\n // NB: No relatedTarget if the mouse left/entered the browser window\n\n if (!related || related !== target && !jQuery.contains(target, related)) {\n event.type = handleObj.origType;\n ret = handleObj.handler.apply(this, arguments);\n event.type = fix;\n }\n\n return ret;\n }\n };\n });\n jQuery.fn.extend({\n on: function on(types, selector, data, fn) {\n return _on(this, types, selector, data, fn);\n },\n one: function one(types, selector, data, fn) {\n return _on(this, types, selector, data, fn, 1);\n },\n off: function off(types, selector, fn) {\n var handleObj, type;\n\n if (types && types.preventDefault && types.handleObj) {\n // ( event ) dispatched jQuery.Event\n handleObj = types.handleObj;\n jQuery(types.delegateTarget).off(handleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler);\n return this;\n }\n\n if (_typeof(types) === \"object\") {\n // ( types-object [, selector] )\n for (type in types) {\n this.off(type, selector, types[type]);\n }\n\n return this;\n }\n\n if (selector === false || typeof selector === \"function\") {\n // ( types [, fn] )\n fn = selector;\n selector = undefined;\n }\n\n if (fn === false) {\n fn = returnFalse;\n }\n\n return this.each(function () {\n jQuery.event.remove(this, types, fn, selector);\n });\n }\n });\n var // Support: IE <=10 - 11, Edge 12 - 13 only\n // In IE/Edge using regex groups here causes severe slowdowns.\n // See https://connect.microsoft.com/IE/feedback/details/1736512/\n rnoInnerhtml = /\n\n\n\n","import { render, staticRenderFns } from \"./Loading.vue?vue&type=template&id=8fd09e16&scoped=true&\"\nimport script from \"./Loading.vue?vue&type=script&lang=js&\"\nexport * from \"./Loading.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Loading.vue?vue&type=style&index=0&id=8fd09e16&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8fd09e16\",\n null\n \n)\n\nexport default component.exports","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export const propertyKindEnums = {\n mansion: \"マンション\",\n apartment: \"アパート\",\n detached_house: \"戸建て\",\n terraced_house: \"テラスハウス、タウンハウス\",\n};\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","export default function mergeClassNames() {\n return Array.prototype.slice.call(arguments).reduce(function (classList, arg) {\n return classList.concat(arg);\n }, []).filter(function (arg) {\n return typeof arg === 'string';\n }).join(' ');\n}","import once from 'lodash.once';\n\nfunction filterDuplicates(arr) {\n return arr.filter(function (el, index, self) {\n return self.indexOf(el) === index;\n });\n}\n\nfunction fixLowercaseProperties(arr) {\n return arr.map(function (el) {\n if (!el || el.indexOf('-') === -1 || el.toLowerCase() !== el) {\n return el;\n }\n\n var splitEl = el.split('-');\n return \"\".concat(splitEl[0], \"-\").concat(splitEl[1].toUpperCase());\n });\n}\n\nfunction getUserLocalesInternal() {\n var languageList = [];\n\n if (typeof window !== 'undefined') {\n if (window.navigator.languages) {\n languageList = languageList.concat(window.navigator.languages);\n }\n\n if (window.navigator.language) {\n languageList.push(window.navigator.language);\n }\n\n if (window.navigator.userLanguage) {\n languageList.push(window.navigator.userLanguage);\n }\n\n if (window.navigator.browserLanguage) {\n languageList.push(window.navigator.browserLanguage);\n }\n\n if (window.navigator.systemLanguage) {\n languageList.push(window.navigator.systemLanguage);\n }\n }\n\n languageList.push('en-US'); // Fallback\n\n return fixLowercaseProperties(filterDuplicates(languageList));\n}\n\nexport var getUserLocales = once(getUserLocalesInternal);\n\nfunction getUserLocaleInternal() {\n return getUserLocales()[0];\n}\n\nexport var getUserLocale = once(getUserLocaleInternal);\nexport default getUserLocale;","/**\n * Utils\n */\nfunction makeGetEdgeOfNeighbor(getPeriod, getEdgeOfPeriod, defaultOffset) {\n return function makeGetEdgeOfNeighborInternal(date) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultOffset;\n var previousPeriod = getPeriod(date) + offset;\n return getEdgeOfPeriod(previousPeriod);\n };\n}\n\nfunction makeGetEnd(getBeginOfNextPeriod) {\n return function makeGetEndInternal(date) {\n return new Date(getBeginOfNextPeriod(date).getTime() - 1);\n };\n}\n\nfunction makeGetRange(functions) {\n return function makeGetRangeInternal(date) {\n return functions.map(function (fn) {\n return fn(date);\n });\n };\n}\n/**\n * Simple getters - getting a property of a given point in time\n */\n\n/**\n * Gets year from date.\n *\n * @param {Date|number|string} date Date to get year from.\n */\n\n\nexport function getYear(date) {\n if (date instanceof Date) {\n return date.getFullYear();\n }\n\n if (typeof date === 'number') {\n return date;\n }\n\n var year = parseInt(date, 10);\n\n if (typeof date === 'string' && !isNaN(year)) {\n return year;\n }\n\n throw new Error(\"Failed to get year from date: \".concat(date, \".\"));\n}\n/**\n * Gets month from date.\n *\n * @param {Date} date Date to get month from.\n */\n\nexport function getMonth(date) {\n if (date instanceof Date) {\n return date.getMonth();\n }\n\n throw new Error(\"Failed to get month from date: \".concat(date, \".\"));\n}\n/**\n * Gets human-readable month from date.\n *\n * @param {Date} date Date to get human-readable month from.\n */\n\nexport function getMonthHuman(date) {\n if (date instanceof Date) {\n return date.getMonth() + 1;\n }\n\n throw new Error(\"Failed to get human-readable month from date: \".concat(date, \".\"));\n}\n/**\n * Gets human-readable day of the month from date.\n *\n * @param {Date} date Date to get day of the month from.\n */\n\nexport function getDate(date) {\n if (date instanceof Date) {\n return date.getDate();\n }\n\n throw new Error(\"Failed to get year from date: \".concat(date, \".\"));\n}\n/**\n * Gets hours from date.\n *\n * @param {Date|string} date Date to get hours from.\n */\n\nexport function getHours(date) {\n if (date instanceof Date) {\n return date.getHours();\n }\n\n if (typeof date === 'string') {\n var datePieces = date.split(':');\n\n if (datePieces.length >= 2) {\n var hoursString = datePieces[0];\n var hours = parseInt(hoursString, 10);\n\n if (!isNaN(hours)) {\n return hours;\n }\n }\n }\n\n throw new Error(\"Failed to get hours from date: \".concat(date, \".\"));\n}\n/**\n * Gets minutes from date.\n *\n * @param {Date|string} date Date to get minutes from.\n */\n\nexport function getMinutes(date) {\n if (date instanceof Date) {\n return date.getMinutes();\n }\n\n if (typeof date === 'string') {\n var datePieces = date.split(':');\n\n if (datePieces.length >= 2) {\n var minutesString = datePieces[1] || 0;\n var minutes = parseInt(minutesString, 10);\n\n if (!isNaN(minutes)) {\n return minutes;\n }\n }\n }\n\n throw new Error(\"Failed to get minutes from date: \".concat(date, \".\"));\n}\n/**\n * Gets seconds from date.\n *\n * @param {Date|string} date Date to get seconds from.\n */\n\nexport function getSeconds(date) {\n if (date instanceof Date) {\n return date.getSeconds();\n }\n\n if (typeof date === 'string') {\n var datePieces = date.split(':');\n\n if (datePieces.length >= 2) {\n var secondsString = datePieces[2] || 0;\n var seconds = parseInt(secondsString, 10);\n\n if (!isNaN(seconds)) {\n return seconds;\n }\n }\n }\n\n throw new Error(\"Failed to get seconds from date: \".concat(date, \".\"));\n}\n/**\n * Century\n */\n\nexport function getCenturyStart(date) {\n var year = getYear(date);\n var centuryStartYear = year + (-year + 1) % 100;\n var centuryStartDate = new Date();\n centuryStartDate.setFullYear(centuryStartYear, 0, 1);\n centuryStartDate.setHours(0, 0, 0, 0);\n return centuryStartDate;\n}\nexport var getPreviousCenturyStart = makeGetEdgeOfNeighbor(getYear, getCenturyStart, -100);\nexport var getNextCenturyStart = makeGetEdgeOfNeighbor(getYear, getCenturyStart, 100);\nexport var getCenturyEnd = makeGetEnd(getNextCenturyStart);\nexport var getPreviousCenturyEnd = makeGetEdgeOfNeighbor(getYear, getCenturyEnd, -100);\nexport var getNextCenturyEnd = makeGetEdgeOfNeighbor(getYear, getCenturyEnd, 100);\nexport var getCenturyRange = makeGetRange([getCenturyStart, getCenturyEnd]);\n/**\n * Decade\n */\n\nexport function getDecadeStart(date) {\n var year = getYear(date);\n var decadeStartYear = year + (-year + 1) % 10;\n var decadeStartDate = new Date();\n decadeStartDate.setFullYear(decadeStartYear, 0, 1);\n decadeStartDate.setHours(0, 0, 0, 0);\n return decadeStartDate;\n}\nexport var getPreviousDecadeStart = makeGetEdgeOfNeighbor(getYear, getDecadeStart, -10);\nexport var getNextDecadeStart = makeGetEdgeOfNeighbor(getYear, getDecadeStart, 10);\nexport var getDecadeEnd = makeGetEnd(getNextDecadeStart);\nexport var getPreviousDecadeEnd = makeGetEdgeOfNeighbor(getYear, getDecadeEnd, -10);\nexport var getNextDecadeEnd = makeGetEdgeOfNeighbor(getYear, getDecadeEnd, 10);\nexport var getDecadeRange = makeGetRange([getDecadeStart, getDecadeEnd]);\n/**\n * Year\n */\n\nexport function getYearStart(date) {\n var year = getYear(date);\n var yearStartDate = new Date();\n yearStartDate.setFullYear(year, 0, 1);\n yearStartDate.setHours(0, 0, 0, 0);\n return yearStartDate;\n}\nexport var getPreviousYearStart = makeGetEdgeOfNeighbor(getYear, getYearStart, -1);\nexport var getNextYearStart = makeGetEdgeOfNeighbor(getYear, getYearStart, 1);\nexport var getYearEnd = makeGetEnd(getNextYearStart);\nexport var getPreviousYearEnd = makeGetEdgeOfNeighbor(getYear, getYearEnd, -1);\nexport var getNextYearEnd = makeGetEdgeOfNeighbor(getYear, getYearEnd, 1);\nexport var getYearRange = makeGetRange([getYearStart, getYearEnd]);\n/**\n * Month\n */\n\nfunction makeGetEdgeOfNeighborMonth(getEdgeOfPeriod, defaultOffset) {\n return function makeGetEdgeOfNeighborMonthInternal(date) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultOffset;\n var year = getYear(date);\n var month = getMonth(date) + offset;\n var previousPeriod = new Date();\n previousPeriod.setFullYear(year, month, 1);\n previousPeriod.setHours(0, 0, 0, 0);\n return getEdgeOfPeriod(previousPeriod);\n };\n}\n\nexport function getMonthStart(date) {\n var year = getYear(date);\n var month = getMonth(date);\n var monthStartDate = new Date();\n monthStartDate.setFullYear(year, month, 1);\n monthStartDate.setHours(0, 0, 0, 0);\n return monthStartDate;\n}\nexport var getPreviousMonthStart = makeGetEdgeOfNeighborMonth(getMonthStart, -1);\nexport var getNextMonthStart = makeGetEdgeOfNeighborMonth(getMonthStart, 1);\nexport var getMonthEnd = makeGetEnd(getNextMonthStart);\nexport var getPreviousMonthEnd = makeGetEdgeOfNeighborMonth(getMonthEnd, -1);\nexport var getNextMonthEnd = makeGetEdgeOfNeighborMonth(getMonthEnd, 1);\nexport var getMonthRange = makeGetRange([getMonthStart, getMonthEnd]);\n/**\n * Day\n */\n\nfunction makeGetEdgeOfNeighborDay(getEdgeOfPeriod, defaultOffset) {\n return function makeGetEdgeOfNeighborDayInternal(date) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultOffset;\n var year = getYear(date);\n var month = getMonth(date);\n var day = getDate(date) + offset;\n var previousPeriod = new Date();\n previousPeriod.setFullYear(year, month, day);\n previousPeriod.setHours(0, 0, 0, 0);\n return getEdgeOfPeriod(previousPeriod);\n };\n}\n\nexport function getDayStart(date) {\n var year = getYear(date);\n var month = getMonth(date);\n var day = getDate(date);\n var dayStartDate = new Date();\n dayStartDate.setFullYear(year, month, day);\n dayStartDate.setHours(0, 0, 0, 0);\n return dayStartDate;\n}\nexport var getPreviousDayStart = makeGetEdgeOfNeighborDay(getDayStart, -1);\nexport var getNextDayStart = makeGetEdgeOfNeighborDay(getDayStart, 1);\nexport var getDayEnd = makeGetEnd(getNextDayStart);\nexport var getPreviousDayEnd = makeGetEdgeOfNeighborDay(getDayEnd, -1);\nexport var getNextDayEnd = makeGetEdgeOfNeighborDay(getDayEnd, 1);\nexport var getDayRange = makeGetRange([getDayStart, getDayEnd]);\n/**\n * Other\n */\n\n/**\n * Returns a number of days in a month of a given date.\n *\n * @param {Date} date Date.\n */\n\nexport function getDaysInMonth(date) {\n return getDate(getMonthEnd(date));\n}\n\nfunction padStart(num) {\n var val = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n var numStr = \"\".concat(num);\n\n if (numStr.length >= val) {\n return num;\n }\n\n return \"0000\".concat(numStr).slice(-val);\n}\n/**\n * Returns local hours and minutes (hh:mm).\n */\n\n\nexport function getHoursMinutes(date) {\n var hours = padStart(getHours(date));\n var minutes = padStart(getMinutes(date));\n return \"\".concat(hours, \":\").concat(minutes);\n}\n/**\n * Returns local hours, minutes and seconds (hh:mm:ss).\n */\n\nexport function getHoursMinutesSeconds(date) {\n var hours = padStart(getHours(date));\n var minutes = padStart(getMinutes(date));\n var seconds = padStart(getSeconds(date));\n return \"\".concat(hours, \":\").concat(minutes, \":\").concat(seconds);\n}\n/**\n * Returns local month in ISO-like format (YYYY-MM).\n */\n\nexport function getISOLocalMonth(date) {\n var year = padStart(getYear(date), 4);\n var month = padStart(getMonthHuman(date));\n return \"\".concat(year, \"-\").concat(month);\n}\n/**\n * Returns local date in ISO-like format (YYYY-MM-DD).\n */\n\nexport function getISOLocalDate(date) {\n var year = padStart(getYear(date), 4);\n var month = padStart(getMonthHuman(date));\n var day = padStart(getDate(date));\n return \"\".concat(year, \"-\").concat(month, \"-\").concat(day);\n}\n/**\n * Returns local date & time in ISO-like format (YYYY-MM-DDThh:mm:ss).\n */\n\nexport function getISOLocalDateTime(date) {\n return \"\".concat(getISOLocalDate(date), \"T\").concat(getHoursMinutesSeconds(date));\n}","var _CALENDAR_TYPE_LOCALE;\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nexport var CALENDAR_TYPES = {\n ARABIC: 'Arabic',\n HEBREW: 'Hebrew',\n ISO_8601: 'ISO 8601',\n US: 'US'\n};\nexport var CALENDAR_TYPE_LOCALES = (_CALENDAR_TYPE_LOCALE = {}, _defineProperty(_CALENDAR_TYPE_LOCALE, CALENDAR_TYPES.US, ['en-CA', 'en-US', 'es-AR', 'es-BO', 'es-CL', 'es-CO', 'es-CR', 'es-DO', 'es-EC', 'es-GT', 'es-HN', 'es-MX', 'es-NI', 'es-PA', 'es-PE', 'es-PR', 'es-SV', 'es-VE', 'pt-BR']), _defineProperty(_CALENDAR_TYPE_LOCALE, CALENDAR_TYPES.ARABIC, [// ar-LB, ar-MA intentionally missing\n'ar', 'ar-AE', 'ar-BH', 'ar-DZ', 'ar-EG', 'ar-IQ', 'ar-JO', 'ar-KW', 'ar-LY', 'ar-OM', 'ar-QA', 'ar-SA', 'ar-SD', 'ar-SY', 'ar-YE', 'dv', 'dv-MV', 'ps', 'ps-AR']), _defineProperty(_CALENDAR_TYPE_LOCALE, CALENDAR_TYPES.HEBREW, ['he', 'he-IL']), _CALENDAR_TYPE_LOCALE);\nexport var WEEKDAYS = _toConsumableArray(Array(7)).map(function (el, index) {\n return index;\n});","import getUserLocale from 'get-user-locale';\nvar formatterCache = new Map();\n\nfunction getFormatter(options) {\n return function (locale, date) {\n var localeWithDefault = locale || getUserLocale();\n\n if (!formatterCache.has(localeWithDefault)) {\n formatterCache.set(localeWithDefault, new Map());\n }\n\n var formatterCacheLocale = formatterCache.get(localeWithDefault);\n\n if (!formatterCacheLocale.has(options)) {\n formatterCacheLocale.set(options, new Intl.DateTimeFormat(localeWithDefault, options).format);\n }\n\n return formatterCacheLocale.get(options)(date);\n };\n}\n/**\n * Changes the hour in a Date to ensure right date formatting even if DST is messed up.\n * Workaround for bug in WebKit and Firefox with historical dates.\n * For more details, see:\n * https://bugs.chromium.org/p/chromium/issues/detail?id=750465\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1385643\n *\n * @param {Date} date Date.\n */\n\n\nfunction toSafeHour(date) {\n var safeDate = new Date(date);\n return new Date(safeDate.setHours(12));\n}\n\nfunction getSafeFormatter(options) {\n return function (locale, date) {\n return getFormatter(options)(locale, toSafeHour(date));\n };\n}\n\nvar formatDateOptions = {\n day: 'numeric',\n month: 'numeric',\n year: 'numeric'\n};\nvar formatDayOptions = {\n day: 'numeric'\n};\nvar formatLongDateOptions = {\n day: 'numeric',\n month: 'long',\n year: 'numeric'\n};\nvar formatMonthOptions = {\n month: 'long'\n};\nvar formatMonthYearOptions = {\n month: 'long',\n year: 'numeric'\n};\nvar formatShortWeekdayOptions = {\n weekday: 'short'\n};\nvar formatWeekdayOptions = {\n weekday: 'long'\n};\nvar formatYearOptions = {\n year: 'numeric'\n};\nexport var formatDate = getSafeFormatter(formatDateOptions);\nexport var formatDay = getSafeFormatter(formatDayOptions);\nexport var formatLongDate = getSafeFormatter(formatLongDateOptions);\nexport var formatMonth = getSafeFormatter(formatMonthOptions);\nexport var formatMonthYear = getSafeFormatter(formatMonthYearOptions);\nexport var formatShortWeekday = getSafeFormatter(formatShortWeekdayOptions);\nexport var formatWeekday = getSafeFormatter(formatWeekdayOptions);\nexport var formatYear = getSafeFormatter(formatYearOptions);","import { getYear, getMonth as getMonthIndex, getCenturyStart, getPreviousCenturyStart, getNextCenturyStart, getCenturyEnd, getPreviousCenturyEnd, getCenturyRange, getDecadeStart, getPreviousDecadeStart, getNextDecadeStart, getDecadeEnd, getPreviousDecadeEnd, getDecadeRange, getYearStart, getPreviousYearStart, getNextYearStart, getYearEnd, getPreviousYearEnd, getYearRange, getMonthStart, getPreviousMonthStart, getNextMonthStart, getMonthEnd, getPreviousMonthEnd, getMonthRange, getDayStart, getDayEnd, getDayRange } from '@wojtekmaj/date-utils';\nimport { CALENDAR_TYPES, WEEKDAYS } from './const';\nimport { formatYear as defaultFormatYear } from './dateFormatter';\nvar SUNDAY = WEEKDAYS[0];\nvar FRIDAY = WEEKDAYS[5];\nvar SATURDAY = WEEKDAYS[6];\n/* Simple getters - getting a property of a given point in time */\n\nexport function getDayOfWeek(date) {\n var calendarType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : CALENDAR_TYPES.ISO_8601;\n var weekday = date.getDay();\n\n switch (calendarType) {\n case CALENDAR_TYPES.ISO_8601:\n // Shifts days of the week so that Monday is 0, Sunday is 6\n return (weekday + 6) % 7;\n\n case CALENDAR_TYPES.ARABIC:\n return (weekday + 1) % 7;\n\n case CALENDAR_TYPES.HEBREW:\n case CALENDAR_TYPES.US:\n return weekday;\n\n default:\n throw new Error('Unsupported calendar type.');\n }\n}\n/**\n * Century\n */\n\nexport function getBeginOfCenturyYear(date) {\n var beginOfCentury = getCenturyStart(date);\n return getYear(beginOfCentury);\n}\n/**\n * Decade\n */\n\nexport function getBeginOfDecadeYear(date) {\n var beginOfDecade = getDecadeStart(date);\n return getYear(beginOfDecade);\n}\n/**\n * Week\n */\n\n/**\n * Returns the beginning of a given week.\n *\n * @param {Date} date Date.\n * @param {string} calendarType Calendar type. Can be ISO 8601 or US.\n */\n\nexport function getBeginOfWeek(date) {\n var calendarType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : CALENDAR_TYPES.ISO_8601;\n var year = getYear(date);\n var monthIndex = getMonthIndex(date);\n var day = date.getDate() - getDayOfWeek(date, calendarType);\n return new Date(year, monthIndex, day);\n}\n/**\n * Gets week number according to ISO 8601 or US standard.\n * In ISO 8601, Arabic and Hebrew week 1 is the one with January 4.\n * In US calendar week 1 is the one with January 1.\n *\n * @param {Date} date Date.\n * @param {string} calendarType Calendar type. Can be ISO 8601 or US.\n */\n\nexport function getWeekNumber(date) {\n var calendarType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : CALENDAR_TYPES.ISO_8601;\n var calendarTypeForWeekNumber = calendarType === CALENDAR_TYPES.US ? CALENDAR_TYPES.US : CALENDAR_TYPES.ISO_8601;\n var beginOfWeek = getBeginOfWeek(date, calendarType);\n var year = getYear(date) + 1;\n var dayInWeekOne;\n var beginOfFirstWeek; // Look for the first week one that does not come after a given date\n\n do {\n dayInWeekOne = new Date(year, 0, calendarTypeForWeekNumber === CALENDAR_TYPES.ISO_8601 ? 4 : 1);\n beginOfFirstWeek = getBeginOfWeek(dayInWeekOne, calendarType);\n year -= 1;\n } while (date < beginOfFirstWeek);\n\n return Math.round((beginOfWeek - beginOfFirstWeek) / (8.64e7 * 7)) + 1;\n}\n/**\n * Others\n */\n\n/**\n * Returns the beginning of a given range.\n *\n * @param {string} rangeType Range type (e.g. 'day')\n * @param {Date} date Date.\n */\n\nexport function getBegin(rangeType, date) {\n switch (rangeType) {\n case 'century':\n return getCenturyStart(date);\n\n case 'decade':\n return getDecadeStart(date);\n\n case 'year':\n return getYearStart(date);\n\n case 'month':\n return getMonthStart(date);\n\n case 'day':\n return getDayStart(date);\n\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n}\nexport function getBeginPrevious(rangeType, date) {\n switch (rangeType) {\n case 'century':\n return getPreviousCenturyStart(date);\n\n case 'decade':\n return getPreviousDecadeStart(date);\n\n case 'year':\n return getPreviousYearStart(date);\n\n case 'month':\n return getPreviousMonthStart(date);\n\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n}\nexport function getBeginNext(rangeType, date) {\n switch (rangeType) {\n case 'century':\n return getNextCenturyStart(date);\n\n case 'decade':\n return getNextDecadeStart(date);\n\n case 'year':\n return getNextYearStart(date);\n\n case 'month':\n return getNextMonthStart(date);\n\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n}\nexport var getBeginPrevious2 = function getBeginPrevious2(rangeType, date) {\n switch (rangeType) {\n case 'decade':\n return getPreviousDecadeStart(date, -100);\n\n case 'year':\n return getPreviousYearStart(date, -10);\n\n case 'month':\n return getPreviousMonthStart(date, -12);\n\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n};\nexport var getBeginNext2 = function getBeginNext2(rangeType, date) {\n switch (rangeType) {\n case 'decade':\n return getNextDecadeStart(date, 100);\n\n case 'year':\n return getNextYearStart(date, 10);\n\n case 'month':\n return getNextMonthStart(date, 12);\n\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n};\n/**\n * Returns the end of a given range.\n *\n * @param {string} rangeType Range type (e.g. 'day')\n * @param {Date} date Date.\n */\n\nexport function getEnd(rangeType, date) {\n switch (rangeType) {\n case 'century':\n return getCenturyEnd(date);\n\n case 'decade':\n return getDecadeEnd(date);\n\n case 'year':\n return getYearEnd(date);\n\n case 'month':\n return getMonthEnd(date);\n\n case 'day':\n return getDayEnd(date);\n\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n}\nexport function getEndPrevious(rangeType, date) {\n switch (rangeType) {\n case 'century':\n return getPreviousCenturyEnd(date);\n\n case 'decade':\n return getPreviousDecadeEnd(date);\n\n case 'year':\n return getPreviousYearEnd(date);\n\n case 'month':\n return getPreviousMonthEnd(date);\n\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n}\nexport var getEndPrevious2 = function getEndPrevious2(rangeType, date) {\n switch (rangeType) {\n case 'decade':\n return getPreviousDecadeEnd(date, -100);\n\n case 'year':\n return getPreviousYearEnd(date, -10);\n\n case 'month':\n return getPreviousMonthEnd(date, -12);\n\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n};\n/**\n * Returns an array with the beginning and the end of a given range.\n *\n * @param {string} rangeType Range type (e.g. 'day')\n * @param {Date} date Date.\n */\n\nexport function getRange(rangeType, date) {\n switch (rangeType) {\n case 'century':\n return getCenturyRange(date);\n\n case 'decade':\n return getDecadeRange(date);\n\n case 'year':\n return getYearRange(date);\n\n case 'month':\n return getMonthRange(date);\n\n case 'day':\n return getDayRange(date);\n\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n}\n/**\n * Creates a range out of two values, ensuring they are in order and covering entire period ranges.\n *\n * @param {string} rangeType Range type (e.g. 'day')\n * @param {Date} date1 First date.\n * @param {Date} date2 Second date.\n */\n\nexport function getValueRange(rangeType, date1, date2) {\n var rawNextValue = [date1, date2].sort(function (a, b) {\n return a - b;\n });\n return [getBegin(rangeType, rawNextValue[0]), getEnd(rangeType, rawNextValue[1])];\n}\n\nfunction toYearLabel(locale) {\n var formatYear = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultFormatYear;\n var dates = arguments.length > 2 ? arguments[2] : undefined;\n return dates.map(function (date) {\n return formatYear(locale, date);\n }).join(' – ');\n}\n/**\n * Returns a string labelling a century of a given date.\n * For example, for 2017 it will return 2001-2100.\n *\n * @param {Date|String|Number} date Date or a year as a string or as a number.\n */\n\n\nexport function getCenturyLabel(locale, formatYear, date) {\n return toYearLabel(locale, formatYear, getCenturyRange(date));\n}\n/**\n * Returns a string labelling a century of a given date.\n * For example, for 2017 it will return 2011-2020.\n *\n * @param {Date|String|Number} date Date or a year as a string or as a number.\n */\n\nexport function getDecadeLabel(locale, formatYear, date) {\n return toYearLabel(locale, formatYear, getDecadeRange(date));\n}\n/**\n * Returns a boolean determining whether a given date is on Saturday or Sunday.\n *\n * @param {Date} date Date.\n */\n\nexport function isWeekend(date) {\n var calendarType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : CALENDAR_TYPES.ISO_8601;\n var weekday = date.getDay();\n\n switch (calendarType) {\n case CALENDAR_TYPES.ARABIC:\n case CALENDAR_TYPES.HEBREW:\n return weekday === FRIDAY || weekday === SATURDAY;\n\n case CALENDAR_TYPES.ISO_8601:\n case CALENDAR_TYPES.US:\n return weekday === SATURDAY || weekday === SUNDAY;\n\n default:\n throw new Error('Unsupported calendar type.');\n }\n}","import React from 'react';\nimport { getUserLocale } from 'get-user-locale';\nimport { getCenturyLabel, getDecadeLabel, getBeginNext, getBeginNext2, getBeginPrevious, getBeginPrevious2, getEndPrevious, getEndPrevious2 } from '../shared/dates';\nimport { formatMonthYear as defaultFormatMonthYear, formatYear as defaultFormatYear } from '../shared/dateFormatter';\nimport { isView, isViews } from '../shared/propTypes';\nvar className = 'react-calendar__navigation';\nexport default function Navigation(_ref) {\n var activeStartDate = _ref.activeStartDate,\n drillUp = _ref.drillUp,\n _ref$formatMonthYear = _ref.formatMonthYear,\n formatMonthYear = _ref$formatMonthYear === void 0 ? defaultFormatMonthYear : _ref$formatMonthYear,\n _ref$formatYear = _ref.formatYear,\n formatYear = _ref$formatYear === void 0 ? defaultFormatYear : _ref$formatYear,\n locale = _ref.locale,\n maxDate = _ref.maxDate,\n minDate = _ref.minDate,\n _ref$navigationAriaLa = _ref.navigationAriaLabel,\n navigationAriaLabel = _ref$navigationAriaLa === void 0 ? '' : _ref$navigationAriaLa,\n navigationAriaLive = _ref.navigationAriaLive,\n navigationLabel = _ref.navigationLabel,\n _ref$next2AriaLabel = _ref.next2AriaLabel,\n next2AriaLabel = _ref$next2AriaLabel === void 0 ? '' : _ref$next2AriaLabel,\n _ref$next2Label = _ref.next2Label,\n next2Label = _ref$next2Label === void 0 ? '»' : _ref$next2Label,\n _ref$nextAriaLabel = _ref.nextAriaLabel,\n nextAriaLabel = _ref$nextAriaLabel === void 0 ? '' : _ref$nextAriaLabel,\n _ref$nextLabel = _ref.nextLabel,\n nextLabel = _ref$nextLabel === void 0 ? '›' : _ref$nextLabel,\n _ref$prev2AriaLabel = _ref.prev2AriaLabel,\n prev2AriaLabel = _ref$prev2AriaLabel === void 0 ? '' : _ref$prev2AriaLabel,\n _ref$prev2Label = _ref.prev2Label,\n prev2Label = _ref$prev2Label === void 0 ? '«' : _ref$prev2Label,\n _ref$prevAriaLabel = _ref.prevAriaLabel,\n prevAriaLabel = _ref$prevAriaLabel === void 0 ? '' : _ref$prevAriaLabel,\n _ref$prevLabel = _ref.prevLabel,\n prevLabel = _ref$prevLabel === void 0 ? '‹' : _ref$prevLabel,\n setActiveStartDate = _ref.setActiveStartDate,\n showDoubleView = _ref.showDoubleView,\n view = _ref.view,\n views = _ref.views;\n var drillUpAvailable = views.indexOf(view) > 0;\n var shouldShowPrevNext2Buttons = view !== 'century';\n var previousActiveStartDate = getBeginPrevious(view, activeStartDate);\n var previousActiveStartDate2 = shouldShowPrevNext2Buttons && getBeginPrevious2(view, activeStartDate);\n var nextActiveStartDate = getBeginNext(view, activeStartDate);\n var nextActiveStartDate2 = shouldShowPrevNext2Buttons && getBeginNext2(view, activeStartDate);\n\n var prevButtonDisabled = function () {\n if (previousActiveStartDate.getFullYear() < 0) {\n return true;\n }\n\n var previousActiveEndDate = getEndPrevious(view, activeStartDate);\n return minDate && minDate >= previousActiveEndDate;\n }();\n\n var prev2ButtonDisabled = shouldShowPrevNext2Buttons && function () {\n if (previousActiveStartDate2.getFullYear() < 0) {\n return true;\n }\n\n var previousActiveEndDate = getEndPrevious2(view, activeStartDate);\n return minDate && minDate >= previousActiveEndDate;\n }();\n\n var nextButtonDisabled = maxDate && maxDate < nextActiveStartDate;\n var next2ButtonDisabled = shouldShowPrevNext2Buttons && maxDate && maxDate < nextActiveStartDate2;\n\n function onClickPrevious() {\n setActiveStartDate(previousActiveStartDate, 'prev');\n }\n\n function onClickPrevious2() {\n setActiveStartDate(previousActiveStartDate2, 'prev2');\n }\n\n function onClickNext() {\n setActiveStartDate(nextActiveStartDate, 'next');\n }\n\n function onClickNext2() {\n setActiveStartDate(nextActiveStartDate2, 'next2');\n }\n\n function renderLabel(date) {\n var label = function () {\n switch (view) {\n case 'century':\n return getCenturyLabel(locale, formatYear, date);\n\n case 'decade':\n return getDecadeLabel(locale, formatYear, date);\n\n case 'year':\n return formatYear(locale, date);\n\n case 'month':\n return formatMonthYear(locale, date);\n\n default:\n throw new Error(\"Invalid view: \".concat(view, \".\"));\n }\n }();\n\n return navigationLabel ? navigationLabel({\n date: date,\n label: label,\n locale: locale || getUserLocale(),\n view: view\n }) : label;\n }\n\n function renderButton() {\n var labelClassName = \"\".concat(className, \"__label\");\n return /*#__PURE__*/React.createElement(\"button\", {\n \"aria-label\": navigationAriaLabel,\n \"aria-live\": navigationAriaLive,\n className: labelClassName,\n disabled: !drillUpAvailable,\n onClick: drillUp,\n style: {\n flexGrow: 1\n },\n type: \"button\"\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(labelClassName, \"__labelText \").concat(labelClassName, \"__labelText--from\")\n }, renderLabel(activeStartDate)), showDoubleView && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(labelClassName, \"__divider\")\n }, \" \\u2013 \"), /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(labelClassName, \"__labelText \").concat(labelClassName, \"__labelText--to\")\n }, renderLabel(nextActiveStartDate))));\n }\n\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className\n }, prev2Label !== null && shouldShowPrevNext2Buttons && /*#__PURE__*/React.createElement(\"button\", {\n \"aria-label\": prev2AriaLabel,\n className: \"\".concat(className, \"__arrow \").concat(className, \"__prev2-button\"),\n disabled: prev2ButtonDisabled,\n onClick: onClickPrevious2,\n type: \"button\"\n }, prev2Label), prevLabel !== null && /*#__PURE__*/React.createElement(\"button\", {\n \"aria-label\": prevAriaLabel,\n className: \"\".concat(className, \"__arrow \").concat(className, \"__prev-button\"),\n disabled: prevButtonDisabled,\n onClick: onClickPrevious,\n type: \"button\"\n }, prevLabel), renderButton(), nextLabel !== null && /*#__PURE__*/React.createElement(\"button\", {\n \"aria-label\": nextAriaLabel,\n className: \"\".concat(className, \"__arrow \").concat(className, \"__next-button\"),\n disabled: nextButtonDisabled,\n onClick: onClickNext,\n type: \"button\"\n }, nextLabel), next2Label !== null && shouldShowPrevNext2Buttons && /*#__PURE__*/React.createElement(\"button\", {\n \"aria-label\": next2AriaLabel,\n className: \"\".concat(className, \"__arrow \").concat(className, \"__next2-button\"),\n disabled: next2ButtonDisabled,\n onClick: onClickNext2,\n type: \"button\"\n }, next2Label));\n}","var _excluded = [\"children\", \"className\", \"direction\", \"count\", \"offset\", \"style\", \"wrap\"];\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nimport React from 'react';\n\nfunction toPercent(num) {\n return \"\".concat(num, \"%\");\n}\n\nexport default function Flex(_ref) {\n var children = _ref.children,\n className = _ref.className,\n direction = _ref.direction,\n count = _ref.count,\n offset = _ref.offset,\n style = _ref.style,\n wrap = _ref.wrap,\n otherProps = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: className,\n style: _objectSpread({\n display: 'flex',\n flexDirection: direction,\n flexWrap: wrap ? 'wrap' : 'no-wrap'\n }, style)\n }, otherProps), React.Children.map(children, function (child, index) {\n return /*#__PURE__*/React.cloneElement(child, _objectSpread(_objectSpread({}, child.props), {}, {\n style: {\n flexBasis: toPercent(100 / count),\n flexShrink: 0,\n flexGrow: 0,\n overflow: 'hidden',\n marginLeft: offset && index === 0 ? toPercent(100 * offset / count) : null\n }\n }));\n }));\n}","function _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nimport { getRange } from './dates';\n/**\n * Returns a value no smaller than min and no larger than max.\n *\n * @param {*} value Value to return.\n * @param {*} min Minimum return value.\n * @param {*} max Maximum return value.\n */\n\nexport function between(value, min, max) {\n if (min && min > value) {\n return min;\n }\n\n if (max && max < value) {\n return max;\n }\n\n return value;\n}\nexport function isValueWithinRange(value, range) {\n return range[0] <= value && range[1] >= value;\n}\nexport function isRangeWithinRange(greaterRange, smallerRange) {\n return greaterRange[0] <= smallerRange[0] && greaterRange[1] >= smallerRange[1];\n}\nexport function doRangesOverlap(range1, range2) {\n return isValueWithinRange(range1[0], range2) || isValueWithinRange(range1[1], range2);\n}\n\nfunction getRangeClassNames(valueRange, dateRange, baseClassName) {\n var isRange = doRangesOverlap(dateRange, valueRange);\n var classes = [];\n\n if (isRange) {\n classes.push(baseClassName);\n var isRangeStart = isValueWithinRange(valueRange[0], dateRange);\n var isRangeEnd = isValueWithinRange(valueRange[1], dateRange);\n\n if (isRangeStart) {\n classes.push(\"\".concat(baseClassName, \"Start\"));\n }\n\n if (isRangeEnd) {\n classes.push(\"\".concat(baseClassName, \"End\"));\n }\n\n if (isRangeStart && isRangeEnd) {\n classes.push(\"\".concat(baseClassName, \"BothEnds\"));\n }\n }\n\n return classes;\n}\n\nexport function getTileClasses() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n value = _ref.value,\n valueType = _ref.valueType,\n date = _ref.date,\n dateType = _ref.dateType,\n hover = _ref.hover;\n\n var className = 'react-calendar__tile';\n var classes = [className];\n\n if (!date) {\n return classes;\n }\n\n if (!Array.isArray(date) && !dateType) {\n throw new Error('getTileClasses(): Unable to get tile activity classes because one or more required arguments were not passed.');\n }\n\n var now = new Date();\n var dateRange = Array.isArray(date) ? date : getRange(dateType, date);\n\n if (isValueWithinRange(now, dateRange)) {\n classes.push(\"\".concat(className, \"--now\"));\n }\n\n if (!value) {\n return classes;\n }\n\n if (!Array.isArray(value) && !valueType) {\n throw new Error('getTileClasses(): Unable to get tile activity classes because one or more required arguments were not passed.');\n }\n\n var valueRange = Array.isArray(value) ? value : getRange(valueType, value);\n\n if (isRangeWithinRange(valueRange, dateRange)) {\n classes.push(\"\".concat(className, \"--active\"));\n } else if (doRangesOverlap(valueRange, dateRange)) {\n classes.push(\"\".concat(className, \"--hasActive\"));\n }\n\n var valueRangeClassNames = getRangeClassNames(valueRange, dateRange, \"\".concat(className, \"--range\"));\n classes.push.apply(classes, _toConsumableArray(valueRangeClassNames));\n var valueArray = [].concat(value);\n\n if (hover && valueArray.length === 1) {\n var hoverRange = hover > valueRange[0] ? [valueRange[0], hover] : [hover, valueRange[0]];\n var hoverRangeClassNames = getRangeClassNames(hoverRange, dateRange, \"\".concat(className, \"--hover\"));\n classes.push.apply(classes, _toConsumableArray(hoverRangeClassNames));\n }\n\n return classes;\n}","var _excluded = [\"className\", \"count\", \"dateTransform\", \"dateType\", \"end\", \"hover\", \"offset\", \"start\", \"step\", \"tile\", \"value\", \"valueType\"];\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nimport React from 'react';\nimport Flex from './Flex';\nimport { getTileClasses } from './shared/utils';\nimport { tileGroupProps } from './shared/propTypes';\nexport default function TileGroup(_ref) {\n var className = _ref.className,\n _ref$count = _ref.count,\n count = _ref$count === void 0 ? 3 : _ref$count,\n dateTransform = _ref.dateTransform,\n dateType = _ref.dateType,\n end = _ref.end,\n hover = _ref.hover,\n offset = _ref.offset,\n start = _ref.start,\n _ref$step = _ref.step,\n step = _ref$step === void 0 ? 1 : _ref$step,\n Tile = _ref.tile,\n value = _ref.value,\n valueType = _ref.valueType,\n tileProps = _objectWithoutProperties(_ref, _excluded);\n\n var tiles = [];\n\n for (var point = start; point <= end; point += step) {\n var date = dateTransform(point);\n tiles.push( /*#__PURE__*/React.createElement(Tile, _extends({\n key: date.getTime(),\n classes: getTileClasses({\n value: value,\n valueType: valueType,\n date: date,\n dateType: dateType,\n hover: hover\n }),\n date: date,\n point: point\n }, tileProps)));\n }\n\n return /*#__PURE__*/React.createElement(Flex, {\n className: className,\n count: count,\n offset: offset,\n wrap: true\n }, tiles);\n}","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nimport React, { Component } from 'react';\nimport mergeClassNames from 'merge-class-names';\nimport { tileProps } from './shared/propTypes';\n\nfunction datesAreDifferent(date1, date2) {\n return date1 && !date2 || !date1 && date2 || date1 && date2 && date1.getTime() !== date2.getTime();\n}\n\nfunction getValue(nextProps, prop) {\n var activeStartDate = nextProps.activeStartDate,\n date = nextProps.date,\n view = nextProps.view;\n return typeof prop === 'function' ? prop({\n activeStartDate: activeStartDate,\n date: date,\n view: view\n }) : prop;\n}\n\nvar Tile = /*#__PURE__*/function (_Component) {\n _inherits(Tile, _Component);\n\n var _super = _createSuper(Tile);\n\n function Tile() {\n var _this;\n\n _classCallCheck(this, Tile);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {});\n\n return _this;\n }\n\n _createClass(Tile, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n activeStartDate = _this$props.activeStartDate,\n children = _this$props.children,\n classes = _this$props.classes,\n date = _this$props.date,\n formatAbbr = _this$props.formatAbbr,\n locale = _this$props.locale,\n maxDate = _this$props.maxDate,\n maxDateTransform = _this$props.maxDateTransform,\n minDate = _this$props.minDate,\n minDateTransform = _this$props.minDateTransform,\n onClick = _this$props.onClick,\n onMouseOver = _this$props.onMouseOver,\n style = _this$props.style,\n tileDisabled = _this$props.tileDisabled,\n view = _this$props.view;\n var _this$state = this.state,\n tileClassName = _this$state.tileClassName,\n tileContent = _this$state.tileContent;\n return /*#__PURE__*/React.createElement(\"button\", {\n className: mergeClassNames(classes, tileClassName),\n disabled: minDate && minDateTransform(minDate) > date || maxDate && maxDateTransform(maxDate) < date || tileDisabled && tileDisabled({\n activeStartDate: activeStartDate,\n date: date,\n view: view\n }),\n onClick: onClick && function (event) {\n return onClick(date, event);\n },\n onFocus: onMouseOver && function () {\n return onMouseOver(date);\n },\n onMouseOver: onMouseOver && function () {\n return onMouseOver(date);\n },\n style: style,\n type: \"button\"\n }, formatAbbr ? /*#__PURE__*/React.createElement(\"abbr\", {\n \"aria-label\": formatAbbr(locale, date)\n }, children) : children, tileContent);\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n var activeStartDate = nextProps.activeStartDate,\n tileClassName = nextProps.tileClassName,\n tileContent = nextProps.tileContent;\n var nextState = {};\n\n if (tileClassName !== prevState.tileClassNameProps || datesAreDifferent(activeStartDate, prevState.activeStartDateProps)) {\n nextState.tileClassName = getValue(nextProps, tileClassName);\n nextState.tileClassNameProps = tileClassName;\n }\n\n if (tileContent !== prevState.tileContentProps || datesAreDifferent(activeStartDate, prevState.activeStartDateProps)) {\n nextState.tileContent = getValue(nextProps, tileContent);\n nextState.tileContentProps = tileContent;\n }\n\n nextState.activeStartDateProps = activeStartDate;\n return nextState;\n }\n }]);\n\n return Tile;\n}(Component);\n\nexport { Tile as default };","var _excluded = [\"classes\", \"formatYear\"];\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nimport React from 'react';\nimport { getDecadeStart, getDecadeEnd } from '@wojtekmaj/date-utils';\nimport Tile from '../Tile';\nimport { getDecadeLabel } from '../shared/dates';\nimport { formatYear as defaultFormatYear } from '../shared/dateFormatter';\nimport { tileProps } from '../shared/propTypes';\nvar className = 'react-calendar__century-view__decades__decade';\nexport default function Decade(_ref) {\n var classes = _ref.classes,\n _ref$formatYear = _ref.formatYear,\n formatYear = _ref$formatYear === void 0 ? defaultFormatYear : _ref$formatYear,\n otherProps = _objectWithoutProperties(_ref, _excluded);\n\n var date = otherProps.date,\n locale = otherProps.locale;\n return /*#__PURE__*/React.createElement(Tile, _extends({}, otherProps, {\n classes: [].concat(classes, className),\n maxDateTransform: getDecadeEnd,\n minDateTransform: getDecadeStart,\n view: \"century\"\n }), getDecadeLabel(locale, formatYear, date));\n}","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nimport React from 'react';\nimport { getDecadeStart } from '@wojtekmaj/date-utils';\nimport TileGroup from '../TileGroup';\nimport Decade from './Decade';\nimport { getBeginOfCenturyYear } from '../shared/dates';\nimport { tileGroupProps } from '../shared/propTypes';\nexport default function Decades(props) {\n var activeStartDate = props.activeStartDate;\n var start = getBeginOfCenturyYear(activeStartDate);\n var end = start + 99;\n return /*#__PURE__*/React.createElement(TileGroup, _extends({}, props, {\n className: \"react-calendar__century-view__decades\",\n dateTransform: getDecadeStart,\n dateType: \"decade\",\n end: end,\n start: start,\n step: 10,\n tile: Decade\n }));\n}","import React from 'react';\nimport Decades from './CenturyView/Decades';\nexport default function CenturyView(props) {\n function renderDecades() {\n return /*#__PURE__*/React.createElement(Decades, props);\n }\n\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"react-calendar__century-view\"\n }, renderDecades());\n}","var _excluded = [\"classes\", \"formatYear\"];\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nimport React from 'react';\nimport { getYearStart, getYearEnd } from '@wojtekmaj/date-utils';\nimport Tile from '../Tile';\nimport { formatYear as defaultFormatYear } from '../shared/dateFormatter';\nimport { tileProps } from '../shared/propTypes';\nvar className = 'react-calendar__decade-view__years__year';\nexport default function Year(_ref) {\n var classes = _ref.classes,\n _ref$formatYear = _ref.formatYear,\n formatYear = _ref$formatYear === void 0 ? defaultFormatYear : _ref$formatYear,\n otherProps = _objectWithoutProperties(_ref, _excluded);\n\n var date = otherProps.date,\n locale = otherProps.locale;\n return /*#__PURE__*/React.createElement(Tile, _extends({}, otherProps, {\n classes: [].concat(classes, className),\n maxDateTransform: getYearEnd,\n minDateTransform: getYearStart,\n view: \"decade\"\n }), formatYear(locale, date));\n}","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nimport React from 'react';\nimport TileGroup from '../TileGroup';\nimport Year from './Year';\nimport { getBeginOfDecadeYear } from '../shared/dates';\nimport { tileGroupProps } from '../shared/propTypes';\nexport default function Years(props) {\n var activeStartDate = props.activeStartDate;\n var start = getBeginOfDecadeYear(activeStartDate);\n var end = start + 9;\n return /*#__PURE__*/React.createElement(TileGroup, _extends({}, props, {\n className: \"react-calendar__decade-view__years\",\n dateTransform: function dateTransform(year) {\n var date = new Date();\n date.setFullYear(year, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n },\n dateType: \"year\",\n end: end,\n start: start,\n tile: Year\n }));\n}","import React from 'react';\nimport Years from './DecadeView/Years';\nexport default function DecadeView(props) {\n function renderYears() {\n return /*#__PURE__*/React.createElement(Years, props);\n }\n\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"react-calendar__decade-view\"\n }, renderYears());\n}","var _excluded = [\"classes\", \"formatMonth\", \"formatMonthYear\"];\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nimport React from 'react';\nimport { getMonthStart, getMonthEnd } from '@wojtekmaj/date-utils';\nimport Tile from '../Tile';\nimport { formatMonth as defaultFormatMonth, formatMonthYear as defaultFormatMonthYear } from '../shared/dateFormatter';\nimport { tileProps } from '../shared/propTypes';\nvar className = 'react-calendar__year-view__months__month';\nexport default function Month(_ref) {\n var classes = _ref.classes,\n _ref$formatMonth = _ref.formatMonth,\n formatMonth = _ref$formatMonth === void 0 ? defaultFormatMonth : _ref$formatMonth,\n _ref$formatMonthYear = _ref.formatMonthYear,\n formatMonthYear = _ref$formatMonthYear === void 0 ? defaultFormatMonthYear : _ref$formatMonthYear,\n otherProps = _objectWithoutProperties(_ref, _excluded);\n\n var date = otherProps.date,\n locale = otherProps.locale;\n return /*#__PURE__*/React.createElement(Tile, _extends({}, otherProps, {\n classes: [].concat(classes, className),\n formatAbbr: formatMonthYear,\n maxDateTransform: getMonthEnd,\n minDateTransform: getMonthStart,\n view: \"year\"\n }), formatMonth(locale, date));\n}","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nimport React from 'react';\nimport { getYear } from '@wojtekmaj/date-utils';\nimport TileGroup from '../TileGroup';\nimport Month from './Month';\nimport { tileGroupProps } from '../shared/propTypes';\nexport default function Months(props) {\n var activeStartDate = props.activeStartDate;\n var start = 0;\n var end = 11;\n var year = getYear(activeStartDate);\n return /*#__PURE__*/React.createElement(TileGroup, _extends({}, props, {\n className: \"react-calendar__year-view__months\",\n dateTransform: function dateTransform(monthIndex) {\n var date = new Date();\n date.setFullYear(year, monthIndex, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n },\n dateType: \"month\",\n end: end,\n start: start,\n tile: Month\n }));\n}","import React from 'react';\nimport Months from './YearView/Months';\nexport default function YearView(props) {\n function renderMonths() {\n return /*#__PURE__*/React.createElement(Months, props);\n }\n\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"react-calendar__year-view\"\n }, renderMonths());\n}","var _excluded = [\"formatDay\", \"formatLongDate\", \"calendarType\", \"classes\", \"currentMonthIndex\"];\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nimport React from 'react';\nimport { getDayStart, getDayEnd } from '@wojtekmaj/date-utils';\nimport Tile from '../Tile';\nimport { isWeekend } from '../shared/dates';\nimport { formatDay as defaultFormatDay, formatLongDate as defaultFormatLongDate } from '../shared/dateFormatter';\nimport { tileProps } from '../shared/propTypes';\nvar className = 'react-calendar__month-view__days__day';\nexport default function Day(_ref) {\n var _ref$formatDay = _ref.formatDay,\n formatDay = _ref$formatDay === void 0 ? defaultFormatDay : _ref$formatDay,\n _ref$formatLongDate = _ref.formatLongDate,\n formatLongDate = _ref$formatLongDate === void 0 ? defaultFormatLongDate : _ref$formatLongDate,\n calendarType = _ref.calendarType,\n classes = _ref.classes,\n currentMonthIndex = _ref.currentMonthIndex,\n otherProps = _objectWithoutProperties(_ref, _excluded);\n\n var date = otherProps.date,\n locale = otherProps.locale;\n return /*#__PURE__*/React.createElement(Tile, _extends({}, otherProps, {\n classes: [].concat(classes, className, isWeekend(date, calendarType) ? \"\".concat(className, \"--weekend\") : null, date.getMonth() !== currentMonthIndex ? \"\".concat(className, \"--neighboringMonth\") : null),\n formatAbbr: formatLongDate,\n maxDateTransform: getDayEnd,\n minDateTransform: getDayStart,\n view: \"month\"\n }), formatDay(locale, date));\n}","var _excluded = [\"showFixedNumberOfWeeks\", \"showNeighboringMonth\"];\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nimport React from 'react';\nimport { getYear, getMonth, getDaysInMonth } from '@wojtekmaj/date-utils';\nimport TileGroup from '../TileGroup';\nimport Day from './Day';\nimport { getDayOfWeek } from '../shared/dates';\nimport { isCalendarType, tileGroupProps } from '../shared/propTypes';\nexport default function Days(props) {\n var activeStartDate = props.activeStartDate,\n calendarType = props.calendarType;\n\n var showFixedNumberOfWeeks = props.showFixedNumberOfWeeks,\n showNeighboringMonth = props.showNeighboringMonth,\n otherProps = _objectWithoutProperties(props, _excluded);\n\n var year = getYear(activeStartDate);\n var monthIndex = getMonth(activeStartDate);\n var hasFixedNumberOfWeeks = showFixedNumberOfWeeks || showNeighboringMonth;\n var dayOfWeek = getDayOfWeek(activeStartDate, calendarType);\n var offset = hasFixedNumberOfWeeks ? 0 : dayOfWeek;\n /**\n * Defines on which day of the month the grid shall start. If we simply show current\n * month, we obviously start on day one, but if showNeighboringMonth is set to\n * true, we need to find the beginning of the week the first day of the month is in.\n */\n\n var start = (hasFixedNumberOfWeeks ? -dayOfWeek : 0) + 1;\n /**\n * Defines on which day of the month the grid shall end. If we simply show current\n * month, we need to stop on the last day of the month, but if showNeighboringMonth\n * is set to true, we need to find the end of the week the last day of the month is in.\n */\n\n var end = function () {\n if (showFixedNumberOfWeeks) {\n // Always show 6 weeks\n return start + 6 * 7 - 1;\n }\n\n var daysInMonth = getDaysInMonth(activeStartDate);\n\n if (showNeighboringMonth) {\n var activeEndDate = new Date();\n activeEndDate.setFullYear(year, monthIndex, daysInMonth);\n activeEndDate.setHours(0, 0, 0, 0);\n var daysUntilEndOfTheWeek = 7 - getDayOfWeek(activeEndDate, calendarType) - 1;\n return daysInMonth + daysUntilEndOfTheWeek;\n }\n\n return daysInMonth;\n }();\n\n return /*#__PURE__*/React.createElement(TileGroup, _extends({}, otherProps, {\n className: \"react-calendar__month-view__days\",\n count: 7,\n currentMonthIndex: monthIndex,\n dateTransform: function dateTransform(day) {\n var date = new Date();\n date.setFullYear(year, monthIndex, day);\n date.setHours(0, 0, 0, 0);\n return date;\n },\n dateType: \"day\",\n end: end,\n offset: offset,\n start: start,\n tile: Day\n }));\n}","import React from 'react';\nimport { getYear, getMonth, getMonthStart } from '@wojtekmaj/date-utils';\nimport Flex from '../Flex';\nimport { getDayOfWeek } from '../shared/dates';\nimport { formatWeekday, formatShortWeekday as defaultFormatShortWeekday } from '../shared/dateFormatter';\nimport { isCalendarType } from '../shared/propTypes';\nvar className = 'react-calendar__month-view__weekdays';\nexport default function Weekdays(props) {\n var calendarType = props.calendarType,\n _props$formatShortWee = props.formatShortWeekday,\n formatShortWeekday = _props$formatShortWee === void 0 ? defaultFormatShortWeekday : _props$formatShortWee,\n locale = props.locale,\n onMouseLeave = props.onMouseLeave;\n var anyDate = new Date();\n var beginOfMonth = getMonthStart(anyDate);\n var year = getYear(beginOfMonth);\n var monthIndex = getMonth(beginOfMonth);\n var weekdays = [];\n\n for (var weekday = 1; weekday <= 7; weekday += 1) {\n var weekdayDate = new Date(year, monthIndex, weekday - getDayOfWeek(beginOfMonth, calendarType));\n var abbr = formatWeekday(locale, weekdayDate);\n weekdays.push( /*#__PURE__*/React.createElement(\"div\", {\n key: weekday,\n className: \"\".concat(className, \"__weekday\")\n }, /*#__PURE__*/React.createElement(\"abbr\", {\n \"aria-label\": abbr,\n title: abbr\n }, formatShortWeekday(locale, weekdayDate).replace('.', ''))));\n }\n\n return /*#__PURE__*/React.createElement(Flex, {\n className: className,\n count: 7,\n onFocus: onMouseLeave,\n onMouseOver: onMouseLeave\n }, weekdays);\n}","var _excluded = [\"date\", \"onClickWeekNumber\", \"weekNumber\"];\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nimport React from 'react';\nvar className = 'react-calendar__tile';\nexport default function WeekNumber(_ref) {\n var date = _ref.date,\n onClickWeekNumber = _ref.onClickWeekNumber,\n weekNumber = _ref.weekNumber,\n otherProps = _objectWithoutProperties(_ref, _excluded);\n\n var props = _objectSpread({\n className: className\n }, otherProps);\n\n var children = /*#__PURE__*/React.createElement(\"span\", null, weekNumber);\n return onClickWeekNumber ? /*#__PURE__*/React.createElement(\"button\", _extends({}, props, {\n onClick: function onClick(event) {\n return onClickWeekNumber(weekNumber, date, event);\n },\n type: \"button\"\n }), children) : /*#__PURE__*/React.createElement(\"div\", props, children);\n}","import React from 'react';\nimport { getYear, getMonth, getDate, getDaysInMonth } from '@wojtekmaj/date-utils';\nimport WeekNumber from './WeekNumber';\nimport Flex from '../Flex';\nimport { getBeginOfWeek, getDayOfWeek, getWeekNumber } from '../shared/dates';\nimport { isCalendarType } from '../shared/propTypes';\nexport default function WeekNumbers(props) {\n var activeStartDate = props.activeStartDate,\n calendarType = props.calendarType,\n onClickWeekNumber = props.onClickWeekNumber,\n onMouseLeave = props.onMouseLeave,\n showFixedNumberOfWeeks = props.showFixedNumberOfWeeks;\n\n var numberOfWeeks = function () {\n if (showFixedNumberOfWeeks) {\n return 6;\n }\n\n var numberOfDays = getDaysInMonth(activeStartDate);\n var startWeekday = getDayOfWeek(activeStartDate, calendarType);\n var days = numberOfDays - (7 - startWeekday);\n return 1 + Math.ceil(days / 7);\n }();\n\n var dates = function () {\n var year = getYear(activeStartDate);\n var monthIndex = getMonth(activeStartDate);\n var day = getDate(activeStartDate);\n var result = [];\n\n for (var index = 0; index < numberOfWeeks; index += 1) {\n result.push(getBeginOfWeek(new Date(year, monthIndex, day + index * 7), calendarType));\n }\n\n return result;\n }();\n\n var weekNumbers = dates.map(function (date) {\n return getWeekNumber(date, calendarType);\n });\n return /*#__PURE__*/React.createElement(Flex, {\n className: \"react-calendar__month-view__weekNumbers\",\n count: numberOfWeeks,\n direction: \"column\",\n onFocus: onMouseLeave,\n onMouseOver: onMouseLeave,\n style: {\n flexBasis: 'calc(100% * (1 / 8)',\n flexShrink: 0\n }\n }, weekNumbers.map(function (weekNumber, weekIndex) {\n return /*#__PURE__*/React.createElement(WeekNumber, {\n key: weekNumber,\n date: dates[weekIndex],\n onClickWeekNumber: onClickWeekNumber,\n weekNumber: weekNumber\n });\n }));\n}","var _excluded = [\"calendarType\", \"formatShortWeekday\", \"onClickWeekNumber\", \"showWeekNumbers\"];\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nimport React from 'react';\nimport mergeClassNames from 'merge-class-names';\nimport Days from './MonthView/Days';\nimport Weekdays from './MonthView/Weekdays';\nimport WeekNumbers from './MonthView/WeekNumbers';\nimport { CALENDAR_TYPES, CALENDAR_TYPE_LOCALES } from './shared/const';\nimport { isCalendarType } from './shared/propTypes';\n\nfunction getCalendarTypeFromLocale(locale) {\n return Object.keys(CALENDAR_TYPE_LOCALES).find(function (calendarType) {\n return CALENDAR_TYPE_LOCALES[calendarType].includes(locale);\n }) || CALENDAR_TYPES.ISO_8601;\n}\n\nexport default function MonthView(props) {\n var activeStartDate = props.activeStartDate,\n locale = props.locale,\n onMouseLeave = props.onMouseLeave,\n showFixedNumberOfWeeks = props.showFixedNumberOfWeeks;\n\n var _props$calendarType = props.calendarType,\n calendarType = _props$calendarType === void 0 ? getCalendarTypeFromLocale(locale) : _props$calendarType,\n formatShortWeekday = props.formatShortWeekday,\n onClickWeekNumber = props.onClickWeekNumber,\n showWeekNumbers = props.showWeekNumbers,\n childProps = _objectWithoutProperties(props, _excluded);\n\n function renderWeekdays() {\n return /*#__PURE__*/React.createElement(Weekdays, {\n calendarType: calendarType,\n formatShortWeekday: formatShortWeekday,\n locale: locale,\n onMouseLeave: onMouseLeave\n });\n }\n\n function renderWeekNumbers() {\n if (!showWeekNumbers) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(WeekNumbers, {\n activeStartDate: activeStartDate,\n calendarType: calendarType,\n onClickWeekNumber: onClickWeekNumber,\n onMouseLeave: onMouseLeave,\n showFixedNumberOfWeeks: showFixedNumberOfWeeks\n });\n }\n\n function renderDays() {\n return /*#__PURE__*/React.createElement(Days, _extends({\n calendarType: calendarType\n }, childProps));\n }\n\n var className = 'react-calendar__month-view';\n return /*#__PURE__*/React.createElement(\"div\", {\n className: mergeClassNames(className, showWeekNumbers ? \"\".concat(className, \"--weekNumbers\") : '')\n }, /*#__PURE__*/React.createElement(\"div\", {\n style: {\n display: 'flex',\n alignItems: 'flex-end'\n }\n }, renderWeekNumbers(), /*#__PURE__*/React.createElement(\"div\", {\n style: {\n flexGrow: 1,\n width: '100%'\n }\n }, renderWeekdays(), renderDays())));\n}","var _excluded = [\"activeStartDate\", \"defaultActiveStartDate\", \"defaultValue\", \"defaultView\", \"maxDetail\", \"minDetail\", \"value\", \"view\"];\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nimport React, { Component } from 'react';\nimport mergeClassNames from 'merge-class-names';\nimport Navigation from './Calendar/Navigation';\nimport CenturyView from './CenturyView';\nimport DecadeView from './DecadeView';\nimport YearView from './YearView';\nimport MonthView from './MonthView';\nimport { getBegin, getBeginNext, getEnd, getValueRange } from './shared/dates';\nimport { isCalendarType, isClassName, isMaxDate, isMinDate, isRef, isValue, isView } from './shared/propTypes';\nimport { between } from './shared/utils';\nvar defaultMinDate = new Date();\ndefaultMinDate.setFullYear(1, 0, 1);\ndefaultMinDate.setHours(0, 0, 0, 0);\nvar defaultMaxDate = new Date(8.64e15);\nvar baseClassName = 'react-calendar';\nvar allViews = ['century', 'decade', 'year', 'month'];\nvar allValueTypes = [].concat(_toConsumableArray(allViews.slice(1)), ['day']);\n\nfunction toDate(value) {\n if (value instanceof Date) {\n return value;\n }\n\n return new Date(value);\n}\n/**\n * Returns views array with disallowed values cut off.\n */\n\n\nfunction getLimitedViews(minDetail, maxDetail) {\n return allViews.slice(allViews.indexOf(minDetail), allViews.indexOf(maxDetail) + 1);\n}\n/**\n * Determines whether a given view is allowed with currently applied settings.\n */\n\n\nfunction isViewAllowed(view, minDetail, maxDetail) {\n var views = getLimitedViews(minDetail, maxDetail);\n return views.indexOf(view) !== -1;\n}\n/**\n * Gets either provided view if allowed by minDetail and maxDetail, or gets\n * the default view if not allowed.\n */\n\n\nfunction getView(view, minDetail, maxDetail) {\n if (isViewAllowed(view, minDetail, maxDetail)) {\n return view;\n }\n\n return maxDetail;\n}\n/**\n * Returns value type that can be returned with currently applied settings.\n */\n\n\nfunction getValueType(maxDetail) {\n return allValueTypes[allViews.indexOf(maxDetail)];\n}\n\nfunction getValue(value, index) {\n if (!value) {\n return null;\n }\n\n var rawValue = Array.isArray(value) && value.length === 2 ? value[index] : value;\n\n if (!rawValue) {\n return null;\n }\n\n var valueDate = toDate(rawValue);\n\n if (isNaN(valueDate.getTime())) {\n throw new Error(\"Invalid date: \".concat(value));\n }\n\n return valueDate;\n}\n\nfunction getDetailValue(_ref, index) {\n var value = _ref.value,\n minDate = _ref.minDate,\n maxDate = _ref.maxDate,\n maxDetail = _ref.maxDetail;\n var valuePiece = getValue(value, index);\n\n if (!valuePiece) {\n return null;\n }\n\n var valueType = getValueType(maxDetail);\n var detailValueFrom = [getBegin, getEnd][index](valueType, valuePiece);\n return between(detailValueFrom, minDate, maxDate);\n}\n\nvar getDetailValueFrom = function getDetailValueFrom(args) {\n return getDetailValue(args, 0);\n};\n\nvar getDetailValueTo = function getDetailValueTo(args) {\n return getDetailValue(args, 1);\n};\n\nvar getDetailValueArray = function getDetailValueArray(args) {\n var value = args.value;\n\n if (Array.isArray(value)) {\n return value;\n }\n\n return [getDetailValueFrom, getDetailValueTo].map(function (fn) {\n return fn(args);\n });\n};\n\nfunction getActiveStartDate(props) {\n var maxDate = props.maxDate,\n maxDetail = props.maxDetail,\n minDate = props.minDate,\n minDetail = props.minDetail,\n value = props.value,\n view = props.view;\n var rangeType = getView(view, minDetail, maxDetail);\n var valueFrom = getDetailValueFrom({\n value: value,\n minDate: minDate,\n maxDate: maxDate,\n maxDetail: maxDetail\n }) || new Date();\n return getBegin(rangeType, valueFrom);\n}\n\nfunction getInitialActiveStartDate(props) {\n var activeStartDate = props.activeStartDate,\n defaultActiveStartDate = props.defaultActiveStartDate,\n defaultValue = props.defaultValue,\n defaultView = props.defaultView,\n maxDetail = props.maxDetail,\n minDetail = props.minDetail,\n value = props.value,\n view = props.view,\n otherProps = _objectWithoutProperties(props, _excluded);\n\n var rangeType = getView(view, minDetail, maxDetail);\n var valueFrom = activeStartDate || defaultActiveStartDate;\n\n if (valueFrom) {\n return getBegin(rangeType, valueFrom);\n }\n\n return getActiveStartDate(_objectSpread({\n maxDetail: maxDetail,\n minDetail: minDetail,\n value: value || defaultValue,\n view: view || defaultView\n }, otherProps));\n}\n\nvar getIsSingleValue = function getIsSingleValue(value) {\n return value && [].concat(value).length === 1;\n};\n\nvar Calendar = /*#__PURE__*/function (_Component) {\n _inherits(Calendar, _Component);\n\n var _super = _createSuper(Calendar);\n\n function Calendar() {\n var _this;\n\n _classCallCheck(this, Calendar);\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(_args));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n activeStartDate: _this.props.defaultActiveStartDate,\n value: _this.props.defaultValue,\n view: _this.props.defaultView\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setStateAndCallCallbacks\", function (nextState, event, callback) {\n var _assertThisInitialize = _assertThisInitialized(_this),\n previousActiveStartDate = _assertThisInitialize.activeStartDate,\n previousView = _assertThisInitialize.view;\n\n var _this$props = _this.props,\n allowPartialRange = _this$props.allowPartialRange,\n onActiveStartDateChange = _this$props.onActiveStartDateChange,\n onChange = _this$props.onChange,\n onViewChange = _this$props.onViewChange,\n selectRange = _this$props.selectRange;\n var prevArgs = {\n activeStartDate: previousActiveStartDate,\n view: previousView\n };\n\n _this.setState(nextState, function () {\n var args = {\n action: nextState.action,\n activeStartDate: nextState.activeStartDate || _this.activeStartDate,\n value: nextState.value || _this.value,\n view: nextState.view || _this.view\n };\n\n function shouldUpdate(key) {\n return (// Key must exist, and…\n key in nextState && ( // …key changed from undefined to defined or the other way around, or…\n _typeof(nextState[key]) !== _typeof(prevArgs[key]) || ( // …value changed.\n nextState[key] instanceof Date ? nextState[key].getTime() !== prevArgs[key].getTime() : nextState[key] !== prevArgs[key]))\n );\n }\n\n if (shouldUpdate('activeStartDate')) {\n if (onActiveStartDateChange) onActiveStartDateChange(args);\n }\n\n if (shouldUpdate('view')) {\n if (onViewChange) onViewChange(args);\n }\n\n if (shouldUpdate('value')) {\n if (onChange) {\n if (selectRange) {\n var isSingleValue = getIsSingleValue(nextState.value);\n\n if (!isSingleValue) {\n onChange(nextState.value, event);\n } else if (allowPartialRange) {\n onChange([nextState.value], event);\n }\n } else {\n onChange(nextState.value, event);\n }\n }\n }\n\n if (callback) callback(args);\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setActiveStartDate\", function (nextActiveStartDate, action) {\n _this.setStateAndCallCallbacks({\n action: action,\n activeStartDate: nextActiveStartDate\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"drillDown\", function (nextActiveStartDate, event) {\n if (!_this.drillDownAvailable) {\n return;\n }\n\n _this.onClickTile(nextActiveStartDate, event);\n\n var _assertThisInitialize2 = _assertThisInitialized(_this),\n view = _assertThisInitialize2.view,\n views = _assertThisInitialize2.views;\n\n var onDrillDown = _this.props.onDrillDown;\n var nextView = views[views.indexOf(view) + 1];\n\n _this.setStateAndCallCallbacks({\n action: 'drillDown',\n activeStartDate: nextActiveStartDate,\n view: nextView\n }, undefined, onDrillDown);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"drillUp\", function () {\n if (!_this.drillUpAvailable) {\n return;\n }\n\n var _assertThisInitialize3 = _assertThisInitialized(_this),\n activeStartDate = _assertThisInitialize3.activeStartDate,\n view = _assertThisInitialize3.view,\n views = _assertThisInitialize3.views;\n\n var onDrillUp = _this.props.onDrillUp;\n var nextView = views[views.indexOf(view) - 1];\n var nextActiveStartDate = getBegin(nextView, activeStartDate);\n\n _this.setStateAndCallCallbacks({\n action: 'drillUp',\n activeStartDate: nextActiveStartDate,\n view: nextView\n }, undefined, onDrillUp);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onChange\", function (value, event) {\n var selectRange = _this.props.selectRange;\n\n _this.onClickTile(value, event);\n\n var nextValue;\n\n if (selectRange) {\n // Range selection turned on\n var _assertThisInitialize4 = _assertThisInitialized(_this),\n previousValue = _assertThisInitialize4.value,\n valueType = _assertThisInitialize4.valueType;\n\n if (!getIsSingleValue(previousValue)) {\n // Value has 0 or 2 elements - either way we're starting a new array\n // First value\n nextValue = getBegin(valueType, value);\n } else {\n // Second value\n nextValue = getValueRange(valueType, previousValue, value);\n }\n } else {\n // Range selection turned off\n nextValue = _this.getProcessedValue(value);\n }\n\n var nextActiveStartDate = getActiveStartDate(_objectSpread(_objectSpread({}, _this.props), {}, {\n value: nextValue\n }));\n event.persist();\n\n _this.setStateAndCallCallbacks({\n action: 'onChange',\n activeStartDate: nextActiveStartDate,\n value: nextValue\n }, event);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onClickTile\", function (value, event) {\n var _assertThisInitialize5 = _assertThisInitialized(_this),\n view = _assertThisInitialize5.view;\n\n var _this$props2 = _this.props,\n onClickDay = _this$props2.onClickDay,\n onClickDecade = _this$props2.onClickDecade,\n onClickMonth = _this$props2.onClickMonth,\n onClickYear = _this$props2.onClickYear;\n\n var callback = function () {\n switch (view) {\n case 'century':\n return onClickDecade;\n\n case 'decade':\n return onClickYear;\n\n case 'year':\n return onClickMonth;\n\n case 'month':\n return onClickDay;\n\n default:\n throw new Error(\"Invalid view: \".concat(view, \".\"));\n }\n }();\n\n if (callback) callback(value, event);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseOver\", function (value) {\n _this.setState(function (prevState) {\n if (prevState.hover && prevState.hover.getTime() === value.getTime()) {\n return null;\n }\n\n return {\n hover: value\n };\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseLeave\", function () {\n _this.setState({\n hover: null\n });\n });\n\n return _this;\n }\n\n _createClass(Calendar, [{\n key: \"activeStartDate\",\n get: function get() {\n var activeStartDateProps = this.props.activeStartDate;\n var activeStartDateState = this.state.activeStartDate;\n return activeStartDateProps || activeStartDateState || getInitialActiveStartDate(this.props);\n }\n }, {\n key: \"value\",\n get: function get() {\n var _this$props3 = this.props,\n selectRange = _this$props3.selectRange,\n valueProps = _this$props3.value;\n var valueState = this.state.value; // In the middle of range selection, use value from state\n\n if (selectRange && getIsSingleValue(valueState)) {\n return valueState;\n }\n\n return valueProps !== undefined ? valueProps : valueState;\n }\n }, {\n key: \"valueType\",\n get: function get() {\n var maxDetail = this.props.maxDetail;\n return getValueType(maxDetail);\n }\n }, {\n key: \"view\",\n get: function get() {\n var _this$props4 = this.props,\n minDetail = _this$props4.minDetail,\n maxDetail = _this$props4.maxDetail,\n viewProps = _this$props4.view;\n var viewState = this.state.view;\n return getView(viewProps || viewState, minDetail, maxDetail);\n }\n }, {\n key: \"views\",\n get: function get() {\n var _this$props5 = this.props,\n minDetail = _this$props5.minDetail,\n maxDetail = _this$props5.maxDetail;\n return getLimitedViews(minDetail, maxDetail);\n }\n }, {\n key: \"hover\",\n get: function get() {\n var selectRange = this.props.selectRange;\n var hover = this.state.hover;\n return selectRange ? hover : null;\n }\n }, {\n key: \"drillDownAvailable\",\n get: function get() {\n var view = this.view,\n views = this.views;\n return views.indexOf(view) < views.length - 1;\n }\n }, {\n key: \"drillUpAvailable\",\n get: function get() {\n var view = this.view,\n views = this.views;\n return views.indexOf(view) > 0;\n }\n /**\n * Gets current value in a desired format.\n */\n\n }, {\n key: \"getProcessedValue\",\n value: function getProcessedValue(value) {\n var _this$props6 = this.props,\n minDate = _this$props6.minDate,\n maxDate = _this$props6.maxDate,\n maxDetail = _this$props6.maxDetail,\n returnValue = _this$props6.returnValue;\n\n var processFunction = function () {\n switch (returnValue) {\n case 'start':\n return getDetailValueFrom;\n\n case 'end':\n return getDetailValueTo;\n\n case 'range':\n return getDetailValueArray;\n\n default:\n throw new Error('Invalid returnValue.');\n }\n }();\n\n return processFunction({\n value: value,\n minDate: minDate,\n maxDate: maxDate,\n maxDetail: maxDetail\n });\n }\n }, {\n key: \"renderContent\",\n value: function renderContent(next) {\n var currentActiveStartDate = this.activeStartDate,\n onMouseOver = this.onMouseOver,\n valueType = this.valueType,\n value = this.value,\n view = this.view;\n var _this$props7 = this.props,\n calendarType = _this$props7.calendarType,\n locale = _this$props7.locale,\n maxDate = _this$props7.maxDate,\n minDate = _this$props7.minDate,\n selectRange = _this$props7.selectRange,\n tileClassName = _this$props7.tileClassName,\n tileContent = _this$props7.tileContent,\n tileDisabled = _this$props7.tileDisabled;\n var hover = this.hover;\n var activeStartDate = next ? getBeginNext(view, currentActiveStartDate) : getBegin(view, currentActiveStartDate);\n var onClick = this.drillDownAvailable ? this.drillDown : this.onChange;\n var commonProps = {\n activeStartDate: activeStartDate,\n hover: hover,\n locale: locale,\n maxDate: maxDate,\n minDate: minDate,\n onClick: onClick,\n onMouseOver: selectRange ? onMouseOver : null,\n tileClassName: tileClassName,\n tileContent: tileContent,\n tileDisabled: tileDisabled,\n value: value,\n valueType: valueType\n };\n\n switch (view) {\n case 'century':\n {\n var formatYear = this.props.formatYear;\n return /*#__PURE__*/React.createElement(CenturyView, _extends({\n formatYear: formatYear\n }, commonProps));\n }\n\n case 'decade':\n {\n var _formatYear = this.props.formatYear;\n return /*#__PURE__*/React.createElement(DecadeView, _extends({\n formatYear: _formatYear\n }, commonProps));\n }\n\n case 'year':\n {\n var _this$props8 = this.props,\n formatMonth = _this$props8.formatMonth,\n formatMonthYear = _this$props8.formatMonthYear;\n return /*#__PURE__*/React.createElement(YearView, _extends({\n formatMonth: formatMonth,\n formatMonthYear: formatMonthYear\n }, commonProps));\n }\n\n case 'month':\n {\n var _this$props9 = this.props,\n formatDay = _this$props9.formatDay,\n formatLongDate = _this$props9.formatLongDate,\n formatShortWeekday = _this$props9.formatShortWeekday,\n onClickWeekNumber = _this$props9.onClickWeekNumber,\n showDoubleView = _this$props9.showDoubleView,\n showFixedNumberOfWeeks = _this$props9.showFixedNumberOfWeeks,\n showNeighboringMonth = _this$props9.showNeighboringMonth,\n showWeekNumbers = _this$props9.showWeekNumbers;\n var onMouseLeave = this.onMouseLeave;\n return /*#__PURE__*/React.createElement(MonthView, _extends({\n calendarType: calendarType,\n formatDay: formatDay,\n formatLongDate: formatLongDate,\n formatShortWeekday: formatShortWeekday,\n onClickWeekNumber: onClickWeekNumber,\n onMouseLeave: selectRange ? onMouseLeave : null,\n showFixedNumberOfWeeks: typeof showFixedNumberOfWeeks !== 'undefined' ? showFixedNumberOfWeeks : showDoubleView,\n showNeighboringMonth: showNeighboringMonth,\n showWeekNumbers: showWeekNumbers\n }, commonProps));\n }\n\n default:\n throw new Error(\"Invalid view: \".concat(view, \".\"));\n }\n }\n }, {\n key: \"renderNavigation\",\n value: function renderNavigation() {\n var showNavigation = this.props.showNavigation;\n\n if (!showNavigation) {\n return null;\n }\n\n var activeStartDate = this.activeStartDate,\n view = this.view,\n views = this.views;\n var _this$props10 = this.props,\n formatMonthYear = _this$props10.formatMonthYear,\n formatYear = _this$props10.formatYear,\n locale = _this$props10.locale,\n maxDate = _this$props10.maxDate,\n minDate = _this$props10.minDate,\n navigationAriaLabel = _this$props10.navigationAriaLabel,\n navigationAriaLive = _this$props10.navigationAriaLive,\n navigationLabel = _this$props10.navigationLabel,\n next2AriaLabel = _this$props10.next2AriaLabel,\n next2Label = _this$props10.next2Label,\n nextAriaLabel = _this$props10.nextAriaLabel,\n nextLabel = _this$props10.nextLabel,\n prev2AriaLabel = _this$props10.prev2AriaLabel,\n prev2Label = _this$props10.prev2Label,\n prevAriaLabel = _this$props10.prevAriaLabel,\n prevLabel = _this$props10.prevLabel,\n showDoubleView = _this$props10.showDoubleView;\n return /*#__PURE__*/React.createElement(Navigation, {\n activeStartDate: activeStartDate,\n drillUp: this.drillUp,\n formatMonthYear: formatMonthYear,\n formatYear: formatYear,\n locale: locale,\n maxDate: maxDate,\n minDate: minDate,\n navigationAriaLabel: navigationAriaLabel,\n navigationAriaLive: navigationAriaLive,\n navigationLabel: navigationLabel,\n next2AriaLabel: next2AriaLabel,\n next2Label: next2Label,\n nextAriaLabel: nextAriaLabel,\n nextLabel: nextLabel,\n prev2AriaLabel: prev2AriaLabel,\n prev2Label: prev2Label,\n prevAriaLabel: prevAriaLabel,\n prevLabel: prevLabel,\n setActiveStartDate: this.setActiveStartDate,\n showDoubleView: showDoubleView,\n view: view,\n views: views\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props11 = this.props,\n className = _this$props11.className,\n inputRef = _this$props11.inputRef,\n selectRange = _this$props11.selectRange,\n showDoubleView = _this$props11.showDoubleView;\n var onMouseLeave = this.onMouseLeave,\n value = this.value;\n var valueArray = [].concat(value);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: mergeClassNames(baseClassName, selectRange && valueArray.length === 1 && \"\".concat(baseClassName, \"--selectRange\"), showDoubleView && \"\".concat(baseClassName, \"--doubleView\"), className),\n ref: inputRef\n }, this.renderNavigation(), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(baseClassName, \"__viewContainer\"),\n onBlur: selectRange ? onMouseLeave : null,\n onMouseLeave: selectRange ? onMouseLeave : null\n }, this.renderContent(), showDoubleView && this.renderContent(true)));\n }\n }]);\n\n return Calendar;\n}(Component);\n\nexport { Calendar as default };\nCalendar.defaultProps = {\n maxDate: defaultMaxDate,\n maxDetail: 'month',\n minDate: defaultMinDate,\n minDetail: 'century',\n returnValue: 'start',\n showNavigation: true,\n showNeighboringMonth: true\n};","import Calendar from './Calendar';\nimport CenturyView from './CenturyView';\nimport DecadeView from './DecadeView';\nimport YearView from './YearView';\nimport MonthView from './MonthView';\nexport default Calendar;\nexport { Calendar, CenturyView, DecadeView, YearView, MonthView };","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n/**\n * @ignore - internal component.\n */\n\nexport default createSvgIcon( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'RadioButtonUnchecked');","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n/**\n * @ignore - internal component.\n */\n\nexport default createSvgIcon( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.465 8.465C9.37 7.56 10.62 7 12 7C14.76 7 17 9.24 17 12C17 13.38 16.44 14.63 15.535 15.535C14.63 16.44 13.38 17 12 17C9.24 17 7 14.76 7 12C7 10.62 7.56 9.37 8.465 8.465Z\"\n}), 'RadioButtonChecked');","import * as React from 'react';\nimport clsx from 'clsx';\nimport RadioButtonUncheckedIcon from '../internal/svg-icons/RadioButtonUnchecked';\nimport RadioButtonCheckedIcon from '../internal/svg-icons/RadioButtonChecked';\nimport withStyles from '../styles/withStyles';\nexport var styles = function styles(theme) {\n return {\n root: {\n position: 'relative',\n display: 'flex',\n '&$checked $layer': {\n transform: 'scale(1)',\n transition: theme.transitions.create('transform', {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.shortest\n })\n }\n },\n layer: {\n left: 0,\n position: 'absolute',\n transform: 'scale(0)',\n transition: theme.transitions.create('transform', {\n easing: theme.transitions.easing.easeIn,\n duration: theme.transitions.duration.shortest\n })\n },\n checked: {}\n };\n};\n/**\n * @ignore - internal component.\n */\n\nfunction RadioButtonIcon(props) {\n var checked = props.checked,\n classes = props.classes,\n fontSize = props.fontSize;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: clsx(classes.root, checked && classes.checked)\n }, /*#__PURE__*/React.createElement(RadioButtonUncheckedIcon, {\n fontSize: fontSize\n }), /*#__PURE__*/React.createElement(RadioButtonCheckedIcon, {\n fontSize: fontSize,\n className: classes.layer\n }));\n}\n\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default withStyles(styles, {\n name: 'PrivateRadioButtonIcon'\n})(RadioButtonIcon);","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\n\nvar RadioGroupContext = /*#__PURE__*/React.createContext();\n\nif (process.env.NODE_ENV !== 'production') {\n RadioGroupContext.displayName = 'RadioGroupContext';\n}\n\nexport default RadioGroupContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { refType } from '@material-ui/utils';\nimport SwitchBase from '../internal/SwitchBase';\nimport RadioButtonIcon from './RadioButtonIcon';\nimport { alpha } from '../styles/colorManipulator';\nimport capitalize from '../utils/capitalize';\nimport createChainedFunction from '../utils/createChainedFunction';\nimport withStyles from '../styles/withStyles';\nimport useRadioGroup from '../RadioGroup/useRadioGroup';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n color: theme.palette.text.secondary\n },\n\n /* Pseudo-class applied to the root element if `checked={true}`. */\n checked: {},\n\n /* Pseudo-class applied to the root element if `disabled={true}`. */\n disabled: {},\n\n /* Styles applied to the root element if `color=\"primary\"`. */\n colorPrimary: {\n '&$checked': {\n color: theme.palette.primary.main,\n '&:hover': {\n backgroundColor: alpha(theme.palette.primary.main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n },\n '&$disabled': {\n color: theme.palette.action.disabled\n }\n },\n\n /* Styles applied to the root element if `color=\"secondary\"`. */\n colorSecondary: {\n '&$checked': {\n color: theme.palette.secondary.main,\n '&:hover': {\n backgroundColor: alpha(theme.palette.secondary.main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n },\n '&$disabled': {\n color: theme.palette.action.disabled\n }\n }\n };\n};\nvar defaultCheckedIcon = /*#__PURE__*/React.createElement(RadioButtonIcon, {\n checked: true\n});\nvar defaultIcon = /*#__PURE__*/React.createElement(RadioButtonIcon, null);\nvar Radio = /*#__PURE__*/React.forwardRef(function Radio(props, ref) {\n var checkedProp = props.checked,\n classes = props.classes,\n _props$color = props.color,\n color = _props$color === void 0 ? 'secondary' : _props$color,\n nameProp = props.name,\n onChangeProp = props.onChange,\n _props$size = props.size,\n size = _props$size === void 0 ? 'medium' : _props$size,\n other = _objectWithoutProperties(props, [\"checked\", \"classes\", \"color\", \"name\", \"onChange\", \"size\"]);\n\n var radioGroup = useRadioGroup();\n var checked = checkedProp;\n var onChange = createChainedFunction(onChangeProp, radioGroup && radioGroup.onChange);\n var name = nameProp;\n\n if (radioGroup) {\n if (typeof checked === 'undefined') {\n checked = radioGroup.value === props.value;\n }\n\n if (typeof name === 'undefined') {\n name = radioGroup.name;\n }\n }\n\n return /*#__PURE__*/React.createElement(SwitchBase, _extends({\n color: color,\n type: \"radio\",\n icon: /*#__PURE__*/React.cloneElement(defaultIcon, {\n fontSize: size === 'small' ? 'small' : 'medium'\n }),\n checkedIcon: /*#__PURE__*/React.cloneElement(defaultCheckedIcon, {\n fontSize: size === 'small' ? 'small' : 'medium'\n }),\n classes: {\n root: clsx(classes.root, classes[\"color\".concat(capitalize(color))]),\n checked: classes.checked,\n disabled: classes.disabled\n },\n name: name,\n checked: checked,\n onChange: onChange,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default withStyles(styles, {\n name: 'MuiRadio'\n})(Radio);","import * as React from 'react';\nimport RadioGroupContext from './RadioGroupContext';\nexport default function useRadioGroup() {\n return React.useContext(RadioGroupContext);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n display: 'flex',\n flexDirection: 'column',\n flexWrap: 'wrap'\n },\n\n /* Styles applied to the root element if `row={true}`. */\n row: {\n flexDirection: 'row'\n }\n};\n/**\n * `FormGroup` wraps controls such as `Checkbox` and `Switch`.\n * It provides compact row layout.\n * For the `Radio`, you should be using the `RadioGroup` component instead of this one.\n */\n\nvar FormGroup = /*#__PURE__*/React.forwardRef(function FormGroup(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$row = props.row,\n row = _props$row === void 0 ? false : _props$row,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"row\"]);\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx(classes.root, className, row && classes.row),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default withStyles(styles, {\n name: 'MuiFormGroup'\n})(FormGroup);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport FormGroup from '../FormGroup';\nimport useForkRef from '../utils/useForkRef';\nimport useControlled from '../utils/useControlled';\nimport RadioGroupContext from './RadioGroupContext';\nimport useId from '../utils/unstable_useId';\nvar RadioGroup = /*#__PURE__*/React.forwardRef(function RadioGroup(props, ref) {\n var actions = props.actions,\n children = props.children,\n nameProp = props.name,\n valueProp = props.value,\n onChange = props.onChange,\n other = _objectWithoutProperties(props, [\"actions\", \"children\", \"name\", \"value\", \"onChange\"]);\n\n var rootRef = React.useRef(null);\n\n var _useControlled = useControlled({\n controlled: valueProp,\n default: props.defaultValue,\n name: 'RadioGroup'\n }),\n _useControlled2 = _slicedToArray(_useControlled, 2),\n value = _useControlled2[0],\n setValue = _useControlled2[1];\n\n React.useImperativeHandle(actions, function () {\n return {\n focus: function focus() {\n var input = rootRef.current.querySelector('input:not(:disabled):checked');\n\n if (!input) {\n input = rootRef.current.querySelector('input:not(:disabled)');\n }\n\n if (input) {\n input.focus();\n }\n }\n };\n }, []);\n var handleRef = useForkRef(ref, rootRef);\n\n var handleChange = function handleChange(event) {\n setValue(event.target.value);\n\n if (onChange) {\n onChange(event, event.target.value);\n }\n };\n\n var name = useId(nameProp);\n return /*#__PURE__*/React.createElement(RadioGroupContext.Provider, {\n value: {\n name: name,\n onChange: handleChange,\n value: value\n }\n }, /*#__PURE__*/React.createElement(FormGroup, _extends({\n role: \"radiogroup\",\n ref: handleRef\n }, other), children));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default RadioGroup;","import React, { useEffect, useState } from \"react\";\nimport Calendar from \"react-calendar\";\nimport \"react-calendar/dist/Calendar.css\";\nimport Button from \"@material-ui/core/Button\";\nimport Radio from \"@material-ui/core/Radio\";\nimport RadioGroup from \"@material-ui/core/RadioGroup\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport FormLabel from \"@material-ui/core/FormLabel\";\nimport { format } from \"date-fns\";\n\n// テストデータ\n// const reserveTimes = [];\nconst reserveTimes = [\n \"10:00~\",\n \"11:00~\",\n \"12:00~\",\n \"13:00~\",\n \"14:00~\",\n \"15:00~\",\n \"16:00~\",\n \"17:00~\",\n \"18:00~\",\n \"19:00~\",\n \"20:00~\",\n];\n\nconst ReservationCalenderModal = ({\n date,\n time,\n handleCloseModal,\n handleSetPreviewReserveInfo,\n anotherDateTime = { date: \"\", time: \"\" },\n reservedDateTimes,\n notAcceptedDates,\n}) => {\n // 日付選択時にCSSが残って影響しないように動的にする\n const selectedAnotherDateCssClassName = \"selected-date\";\n const [times, setTimes] = useState([]);\n const [selectDate, setSelectDate] = useState(\n date === \"\" ? null : new Date(date)\n );\n const [selectTime, setSelectTime] = useState(time);\n const [selectedAnotherDate, setSelectedAnotherDate] = useState(\n selectedAnotherDateCssClassName\n );\n\n const handleSelectDate = (value) => {\n setSelectTime(\"\");\n setSelectDate(value);\n let filTimes = reserveTimes;\n let selectedAnotherDateFlg = false;\n // 第一もしくは第二希望日で選択されている日時をチェック\n if (anotherDateTime.date !== \"\" && anotherDateTime.time !== \"\") {\n if (\n new Date(anotherDateTime.date).toDateString() === value.toDateString()\n ) {\n filTimes = filTimes.filter(\n (time) => time.match(anotherDateTime.time) == null\n );\n selectedAnotherDateFlg = true;\n }\n }\n\n const formatDate = format(new Date(value), \"yyyy-MM-dd\");\n // 登録済み日時をチェック\n if (reservedDateTimes !== {}) {\n if (formatDate in reservedDateTimes) {\n for (const v of reservedDateTimes[formatDate]) {\n filTimes = filTimes.filter((time) => time.match(v) == null);\n }\n }\n }\n\n const nowDate = new Date();\n const toDay = format(nowDate, \"yyyy-MM-dd\");\n if (toDay === formatDate) {\n const endTime = new Date(toDay + \" 20:00:00\");\n if (endTime <= nowDate) {\n // 最終時間を超えていたら時間を表示させない\n filTimes = [];\n } else {\n const nowTime = format(new Date(), \"HH:00\") + \"~\";\n const index = reserveTimes.indexOf(nowTime);\n if (index !== -1) {\n for (let i = 0; i <= index; i++) {\n filTimes = filTimes.filter(\n (time) => time.match(reserveTimes[i]) == null\n );\n }\n }\n }\n }\n\n selectedAnotherDateFlg === true\n ? setSelectedAnotherDate(\"\")\n : setSelectedAnotherDate(selectedAnotherDateCssClassName);\n setTimes(filTimes);\n };\n\n const handleSelectTime = (event) => {\n setSelectTime(event.target.value);\n };\n\n return (\n <>\n \n
\n
\n × \n
\n
\n
{\n if (notAcceptedDates.length === 0) return;\n return notAcceptedDates.some(\n (disabledDate) =>\n date.getFullYear() === disabledDate.getFullYear() &&\n date.getMonth() === disabledDate.getMonth() &&\n date.getDate() === disabledDate.getDate()\n );\n }}\n tileClassName={({ date, view }) => {\n if (view === \"month\" && anotherDateTime.date !== \"\") {\n const anotherDate = new Date(anotherDateTime.date);\n if (anotherDate.toDateString() === date.toDateString()) {\n return selectedAnotherDate;\n }\n }\n return \"\";\n }}\n />\n {selectDate ? (\n \n ) : (\n \n )}\n\n \n {\n handleSetPreviewReserveInfo(selectDate, selectTime);\n }}\n >\n 日付を決定する\n \n
\n \n
\n
\n >\n );\n};\n\nconst TimeBoxes = ({ times, selectDate, selectTime, handleSelectTime }) => {\n return (\n \n
\n 内見予約が可能な時間 \n \n {selectDate && times.length === 0 ? (\n \n
申し訳ございません。
\n
ご案内できる時間がないため、別日を選択してください。
\n
\n ) : (\n times.map((time, i) => (\n }\n label={time}\n >\n ))\n )}\n \n \n
\n );\n};\n\nexport const convertDateTimeStr = (date, time) => {\n const newDate = new Date(date);\n const ymd = newDate.toLocaleDateString(\"ja-JP\", {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n });\n const dayOfWeek = [\"(日)\", \"(月)\", \"(火)\", \"(水)\", \"(木)\", \"(金)\", \"(土)\"][\n newDate.getDay()\n ];\n const dateTime = ymd + dayOfWeek + \" \" + time;\n return dateTime;\n};\n\n/*\ndateTimes : ['yyyy-MM-dd HH:mm']\n*/\nexport const convertDateTimeObj = (dateTimes) => {\n if (dateTimes === null || dateTimes === []) return {};\n let tmpObj = {};\n for (const v of dateTimes) {\n const dateTime = v.split(\" \");\n const date = dateTime[0];\n const time = dateTime[1];\n if (date in tmpObj) {\n if (tmpObj[date].indexOf(dateTime[1]) === -1) {\n tmpObj[date].push(time);\n }\n } else {\n tmpObj[date] = [time];\n }\n }\n return tmpObj;\n};\n\nexport const generateNotAcceptedDates = (reservedDateTimes) => {\n if (reservedDateTimes === {}) return [];\n let tmpArr = [];\n for (const key in reservedDateTimes) {\n const filTimes = reserveTimes.filter(\n (val) => reservedDateTimes[key].indexOf(val.replace(\"~\", \"\")) == -1\n );\n if (filTimes.length === 0) {\n tmpArr.push(new Date(key));\n }\n }\n return tmpArr;\n};\n\nexport default ReservationCalenderModal;\n","import * as React from 'react';\nimport FormControlContext from './FormControlContext';\nexport default function useFormControl() {\n return React.useContext(FormControlContext);\n}","module.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = []; // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};","import _regeneratorRuntime from \"@babel/runtime/regenerator\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nimport React from 'react';\n\nvar isCheckBoxInput = function isCheckBoxInput(element) {\n return element.type === 'checkbox';\n};\n\nvar isDateObject = function isDateObject(value) {\n return value instanceof Date;\n};\n\nvar isNullOrUndefined = function isNullOrUndefined(value) {\n return value == null;\n};\n\nvar isObjectType = function isObjectType(value) {\n return _typeof(value) === 'object';\n};\n\nvar isObject = function isObject(value) {\n return !isNullOrUndefined(value) && !Array.isArray(value) && isObjectType(value) && !isDateObject(value);\n};\n\nvar getEventValue = function getEventValue(event) {\n return isObject(event) && event.target ? isCheckBoxInput(event.target) ? event.target.checked : event.target.value : event;\n};\n\nvar getNodeParentName = function getNodeParentName(name) {\n return name.substring(0, name.search(/.\\d/)) || name;\n};\n\nvar isNameInFieldArray = function isNameInFieldArray(names, name) {\n return _toConsumableArray(names).some(function (current) {\n return getNodeParentName(name) === current;\n });\n};\n\nvar compact = function compact(value) {\n return value.filter(Boolean);\n};\n\nvar isUndefined = function isUndefined(val) {\n return val === undefined;\n};\n\nvar get = function get(obj, path, defaultValue) {\n if (!path || !isObject(obj)) {\n return defaultValue;\n }\n\n var result = compact(path.split(/[,[\\].]+?/)).reduce(function (result, key) {\n return isNullOrUndefined(result) ? result : result[key];\n }, obj);\n return isUndefined(result) || result === obj ? isUndefined(obj[path]) ? defaultValue : obj[path] : result;\n};\n\nvar EVENTS = {\n BLUR: 'blur',\n FOCUS_OUT: 'focusout',\n CHANGE: 'change'\n};\nvar VALIDATION_MODE = {\n onBlur: 'onBlur',\n onChange: 'onChange',\n onSubmit: 'onSubmit',\n onTouched: 'onTouched',\n all: 'all'\n};\nvar INPUT_VALIDATION_RULES = {\n max: 'max',\n min: 'min',\n maxLength: 'maxLength',\n minLength: 'minLength',\n pattern: 'pattern',\n required: 'required',\n validate: 'validate'\n};\n\nvar omit = function omit(source, key) {\n var copy = Object.assign({}, source);\n delete copy[key];\n return copy;\n};\n\nvar HookFormContext = /*#__PURE__*/React.createContext(null);\n/**\r\n * This custom hook allows you to access the form context. useFormContext is intended to be used in deeply nested structures, where it would become inconvenient to pass the context as a prop. To be used with {@link FormProvider}.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\r\n *\r\n * @returns return all useForm methods\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n * const methods = useForm();\r\n * const onSubmit = data => console.log(data);\r\n *\r\n * return (\r\n * \r\n * \r\n * \r\n * );\r\n * }\r\n *\r\n * function NestedInput() {\r\n * const { register } = useFormContext(); // retrieve all hook methods\r\n * return ;\r\n * }\r\n * ```\r\n */\n\nvar useFormContext = function useFormContext() {\n return React.useContext(HookFormContext);\n};\n/**\r\n * A provider component that propagates the `useForm` methods to all children components via [React Context](https://reactjs.org/docs/context.html) API. To be used with {@link useFormContext}.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\r\n *\r\n * @param props - all useFrom methods\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n * const methods = useForm();\r\n * const onSubmit = data => console.log(data);\r\n *\r\n * return (\r\n * \r\n * \r\n * \r\n * );\r\n * }\r\n *\r\n * function NestedInput() {\r\n * const { register } = useFormContext(); // retrieve all hook methods\r\n * return ;\r\n * }\r\n * ```\r\n */\n\n\nvar FormProvider = function FormProvider(props) {\n return /*#__PURE__*/React.createElement(HookFormContext.Provider, {\n value: omit(props, 'children')\n }, props.children);\n};\n\nvar getProxyFormState = function getProxyFormState(formState, _proxyFormState, localProxyFormState) {\n var isRoot = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var result = {};\n\n var _loop = function _loop(key) {\n Object.defineProperty(result, key, {\n get: function get() {\n var _key = key;\n\n if (_proxyFormState[_key] !== VALIDATION_MODE.all) {\n _proxyFormState[_key] = !isRoot || VALIDATION_MODE.all;\n }\n\n localProxyFormState && (localProxyFormState[_key] = true);\n return formState[_key];\n }\n });\n };\n\n for (var key in formState) {\n _loop(key);\n }\n\n return result;\n};\n\nvar isEmptyObject = function isEmptyObject(value) {\n return isObject(value) && !Object.keys(value).length;\n};\n\nvar shouldRenderFormState = function shouldRenderFormState(formStateData, _proxyFormState, isRoot) {\n var formState = omit(formStateData, 'name');\n return isEmptyObject(formState) || Object.keys(formState).length >= Object.keys(_proxyFormState).length || Object.keys(formState).find(function (key) {\n return _proxyFormState[key] === (!isRoot || VALIDATION_MODE.all);\n });\n};\n\nvar convertToArrayPayload = function convertToArrayPayload(value) {\n return Array.isArray(value) ? value : [value];\n};\n\nvar shouldSubscribeByName = function shouldSubscribeByName(name, signalName, exact) {\n return exact && signalName ? name === signalName : !name || !signalName || name === signalName || convertToArrayPayload(name).some(function (currentName) {\n return currentName && (currentName.startsWith(signalName) || signalName.startsWith(currentName));\n });\n};\n\nfunction useSubscribe(props) {\n var _props = React.useRef(props);\n\n _props.current = props;\n React.useEffect(function () {\n var tearDown = function tearDown(subscription) {\n if (subscription) {\n subscription.unsubscribe();\n }\n };\n\n var subscription = !props.disabled && _props.current.subject.subscribe({\n next: _props.current.callback\n });\n\n return function () {\n return tearDown(subscription);\n };\n }, [props.disabled]);\n}\n/**\r\n * This custom hook allows you to subscribe to each form state, and isolate the re-render at the custom hook level. It has its scope in terms of form state subscription, so it would not affect other useFormState and useForm. Using this hook can reduce the re-render impact on large and complex form application.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/useformstate) • [Demo](https://codesandbox.io/s/useformstate-75xly)\r\n *\r\n * @param props - include options on specify fields to subscribe. {@link UseFormStateReturn}\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n * const { register, handleSubmit, control } = useForm({\r\n * defaultValues: {\r\n * firstName: \"firstName\"\r\n * }});\r\n * const { dirtyFields } = useFormState({\r\n * control\r\n * });\r\n * const onSubmit = (data) => console.log(data);\r\n *\r\n * return (\r\n * \r\n * );\r\n * }\r\n * ```\r\n */\n\n\nfunction useFormState(props) {\n var methods = useFormContext();\n\n var _ref = props || {},\n _ref$control = _ref.control,\n control = _ref$control === void 0 ? methods.control : _ref$control,\n disabled = _ref.disabled,\n name = _ref.name,\n exact = _ref.exact;\n\n var _React$useState = React.useState(control._formState),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n formState = _React$useState2[0],\n updateFormState = _React$useState2[1];\n\n var _localProxyFormState = React.useRef({\n isDirty: false,\n dirtyFields: false,\n touchedFields: false,\n isValidating: false,\n isValid: false,\n errors: false\n });\n\n var _name = React.useRef(name);\n\n var _mounted = React.useRef(true);\n\n _name.current = name;\n var callback = React.useCallback(function (value) {\n return _mounted.current && shouldSubscribeByName(_name.current, value.name, exact) && shouldRenderFormState(value, _localProxyFormState.current) && updateFormState(Object.assign(Object.assign({}, control._formState), value));\n }, [control, exact]);\n useSubscribe({\n disabled: disabled,\n callback: callback,\n subject: control._subjects.state\n });\n React.useEffect(function () {\n return function () {\n _mounted.current = false;\n };\n }, []);\n return getProxyFormState(formState, control._proxyFormState, _localProxyFormState.current, false);\n}\n\nvar isString = function isString(value) {\n return typeof value === 'string';\n};\n\nvar generateWatchOutput = function generateWatchOutput(names, _names, formValues, isGlobal) {\n var isArray = Array.isArray(names);\n\n if (isString(names)) {\n isGlobal && _names.watch.add(names);\n return get(formValues, names);\n }\n\n if (isArray) {\n return names.map(function (fieldName) {\n return isGlobal && _names.watch.add(fieldName), get(formValues, fieldName);\n });\n }\n\n isGlobal && (_names.watchAll = true);\n return formValues;\n};\n\nvar isFunction = function isFunction(value) {\n return typeof value === 'function';\n};\n\nvar objectHasFunction = function objectHasFunction(data) {\n for (var key in data) {\n if (isFunction(data[key])) {\n return true;\n }\n }\n\n return false;\n};\n/**\r\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\r\n *\r\n * @remarks\r\n *\r\n * [API](https://react-hook-form.com/api/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\r\n *\r\n * @example\r\n * ```tsx\r\n * const { watch } = useForm();\r\n * const values = useWatch({\r\n * name: \"fieldName\"\r\n * control,\r\n * })\r\n * ```\r\n */\n\n\nfunction useWatch(props) {\n var methods = useFormContext();\n\n var _ref2 = props || {},\n _ref2$control = _ref2.control,\n control = _ref2$control === void 0 ? methods.control : _ref2$control,\n name = _ref2.name,\n defaultValue = _ref2.defaultValue,\n disabled = _ref2.disabled,\n exact = _ref2.exact;\n\n var _name = React.useRef(name);\n\n _name.current = name;\n var callback = React.useCallback(function (formState) {\n if (shouldSubscribeByName(_name.current, formState.name, exact)) {\n var fieldValues = generateWatchOutput(_name.current, control._names, formState.values || control._formValues);\n updateValue(isUndefined(_name.current) || isObject(fieldValues) && !objectHasFunction(fieldValues) ? Object.assign({}, fieldValues) : Array.isArray(fieldValues) ? _toConsumableArray(fieldValues) : isUndefined(fieldValues) ? defaultValue : fieldValues);\n }\n }, [control, exact, defaultValue]);\n useSubscribe({\n disabled: disabled,\n subject: control._subjects.watch,\n callback: callback\n });\n\n var _React$useState3 = React.useState(isUndefined(defaultValue) ? control._getWatch(name) : defaultValue),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n value = _React$useState4[0],\n updateValue = _React$useState4[1];\n\n React.useEffect(function () {\n control._removeUnmounted();\n });\n return value;\n}\n/**\r\n * Custom hook to work with controlled component, this function provide you with both form and field level state. Re-render is isolated at the hook level.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/usecontroller) • [Demo](https://codesandbox.io/s/usecontroller-0o8px)\r\n *\r\n * @param props - the path name to the form field value, and validation rules.\r\n *\r\n * @returns field properties, field and form state. {@link UseControllerReturn}\r\n *\r\n * @example\r\n * ```tsx\r\n * function Input(props) {\r\n * const { field, fieldState, formState } = useController(props);\r\n * return (\r\n * \r\n *
\r\n *
{fieldState.isTouched && \"Touched\"}
\r\n *
{formState.isSubmitted ? \"submitted\" : \"\"}
\r\n *
\r\n * );\r\n * }\r\n * ```\r\n */\n\n\nfunction useController(props) {\n var methods = useFormContext();\n var name = props.name,\n _props$control = props.control,\n control = _props$control === void 0 ? methods.control : _props$control,\n shouldUnregister = props.shouldUnregister;\n var isArrayField = isNameInFieldArray(control._names.array, name);\n var value = useWatch({\n control: control,\n name: name,\n defaultValue: get(control._formValues, name, get(control._defaultValues, name, props.defaultValue)),\n exact: true\n });\n var formState = useFormState({\n control: control,\n name: name\n });\n\n var _registerProps = React.useRef(control.register(name, Object.assign(Object.assign({}, props.rules), {\n value: value\n })));\n\n React.useEffect(function () {\n var updateMounted = function updateMounted(name, value) {\n var field = get(control._fields, name);\n\n if (field) {\n field._f.mount = value;\n }\n };\n\n updateMounted(name, true);\n return function () {\n var _shouldUnregisterField = control._options.shouldUnregister || shouldUnregister;\n\n (isArrayField ? _shouldUnregisterField && !control._stateFlags.action : _shouldUnregisterField) ? control.unregister(name) : updateMounted(name, false);\n };\n }, [name, control, isArrayField, shouldUnregister]);\n return {\n field: {\n name: name,\n value: value,\n onChange: React.useCallback(function (event) {\n _registerProps.current.onChange({\n target: {\n value: getEventValue(event),\n name: name\n },\n type: EVENTS.CHANGE\n });\n }, [name]),\n onBlur: React.useCallback(function () {\n _registerProps.current.onBlur({\n target: {\n value: get(control._formValues, name),\n name: name\n },\n type: EVENTS.BLUR\n });\n }, [name, control]),\n ref: React.useCallback(function (elm) {\n var field = get(control._fields, name);\n\n if (elm && field && elm.focus) {\n field._f.ref = {\n focus: function focus() {\n return elm.focus();\n },\n setCustomValidity: function setCustomValidity(message) {\n return elm.setCustomValidity(message);\n },\n reportValidity: function reportValidity() {\n return elm.reportValidity();\n }\n };\n }\n }, [name, control._fields])\n },\n formState: formState,\n fieldState: control.getFieldState(name, formState)\n };\n}\n/**\r\n * Component based on `useController` hook to work with controlled component.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/usecontroller/controller) • [Demo](https://codesandbox.io/s/react-hook-form-v6-controller-ts-jwyzw) • [Video](https://www.youtube.com/watch?v=N2UNk_UCVyA)\r\n *\r\n * @param props - the path name to the form field value, and validation rules.\r\n *\r\n * @returns provide field handler functions, field and form state.\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n * const { control } = useForm({\r\n * defaultValues: {\r\n * test: \"\"\r\n * }\r\n * });\r\n *\r\n * return (\r\n * \r\n * );\r\n * }\r\n * ```\r\n */\n\n\nvar Controller = function Controller(props) {\n return props.render(useController(props));\n};\n\nvar appendErrors = function appendErrors(name, validateAllFieldCriteria, errors, type, message) {\n return validateAllFieldCriteria ? Object.assign(Object.assign({}, errors[name]), {\n types: Object.assign(Object.assign({}, errors[name] && errors[name].types ? errors[name].types : {}), _defineProperty({}, type, message || true))\n }) : {};\n};\n\nvar isKey = function isKey(value) {\n return /^\\w*$/.test(value);\n};\n\nvar stringToPath = function stringToPath(input) {\n return compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\n};\n\nfunction set(object, path, value) {\n var index = -1;\n var tempPath = isKey(path) ? [path] : stringToPath(path);\n var length = tempPath.length;\n var lastIndex = length - 1;\n\n while (++index < length) {\n var key = tempPath[index];\n var newValue = value;\n\n if (index !== lastIndex) {\n var objValue = object[key];\n newValue = isObject(objValue) || Array.isArray(objValue) ? objValue : !isNaN(+tempPath[index + 1]) ? [] : {};\n }\n\n object[key] = newValue;\n object = object[key];\n }\n\n return object;\n}\n\nvar focusFieldBy = function focusFieldBy(fields, callback, fieldsNames) {\n var _iterator = _createForOfIteratorHelper(fieldsNames || Object.keys(fields)),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var key = _step.value;\n var field = get(fields, key);\n\n if (field) {\n var _f = field._f;\n var current = omit(field, '_f');\n\n if (_f && callback(_f.name)) {\n if (_f.ref.focus && isUndefined(_f.ref.focus())) {\n break;\n } else if (_f.refs) {\n _f.refs[0].focus();\n\n break;\n }\n } else if (isObject(current)) {\n focusFieldBy(current, callback);\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n};\n\nvar generateId = function generateId() {\n var d = typeof performance === 'undefined' ? Date.now() : performance.now() * 1000;\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = (Math.random() * 16 + d) % 16 | 0;\n return (c == 'x' ? r : r & 0x3 | 0x8).toString(16);\n });\n};\n\nvar getFocusFieldName = function getFocusFieldName(name, index) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return options.shouldFocus || isUndefined(options.shouldFocus) ? options.focusName || \"\".concat(name, \".\").concat(isUndefined(options.focusIndex) ? index : options.focusIndex, \".\") : '';\n};\n\nvar isWatched = function isWatched(name, _names, isBlurEvent) {\n return !isBlurEvent && (_names.watchAll || _names.watch.has(name) || _toConsumableArray(_names.watch).some(function (watchName) {\n return name.startsWith(watchName) && /^\\.\\w+/.test(name.slice(watchName.length));\n }));\n};\n\nfunction append(data, value) {\n return [].concat(_toConsumableArray(data), _toConsumableArray(convertToArrayPayload(value)));\n}\n\nfunction cloneObject(data) {\n var copy;\n var isArray = Array.isArray(data);\n\n if (data instanceof Date) {\n copy = new Date(data);\n } else if (data instanceof Set) {\n copy = new Set(data);\n } else if (isArray || isObject(data)) {\n copy = isArray ? [] : {};\n\n for (var key in data) {\n if (isFunction(data[key])) {\n copy = data;\n break;\n }\n\n copy[key] = cloneObject(data[key]);\n }\n } else {\n return data;\n }\n\n return copy;\n}\n\nvar fillEmptyArray = function fillEmptyArray(value) {\n return Array.isArray(value) ? value.map(function () {\n return undefined;\n }) : undefined;\n};\n\nfunction insert(data, index, value) {\n return [].concat(_toConsumableArray(data.slice(0, index)), _toConsumableArray(convertToArrayPayload(value)), _toConsumableArray(data.slice(index)));\n}\n\nvar moveArrayAt = function moveArrayAt(data, from, to) {\n if (!Array.isArray(data)) {\n return [];\n }\n\n if (isUndefined(data[to])) {\n data[to] = undefined;\n }\n\n data.splice(to, 0, data.splice(from, 1)[0]);\n return data;\n};\n\nfunction prepend(data, value) {\n return [].concat(_toConsumableArray(convertToArrayPayload(value)), _toConsumableArray(convertToArrayPayload(data)));\n}\n\nfunction removeAtIndexes(data, indexes) {\n var i = 0;\n\n var temp = _toConsumableArray(data);\n\n var _iterator2 = _createForOfIteratorHelper(indexes),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var index = _step2.value;\n temp.splice(index - i, 1);\n i++;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return compact(temp).length ? temp : [];\n}\n\nvar removeArrayAt = function removeArrayAt(data, index) {\n return isUndefined(index) ? [] : removeAtIndexes(data, convertToArrayPayload(index).sort(function (a, b) {\n return a - b;\n }));\n};\n\nvar swapArrayAt = function swapArrayAt(data, indexA, indexB) {\n data[indexA] = [data[indexB], data[indexB] = data[indexA]][0];\n};\n\nvar updateAt = function updateAt(fieldValues, index, value) {\n fieldValues[index] = value;\n return fieldValues;\n};\n/**\r\n * A custom hook that exposes convenient methods to perform operations with a list of dynamic inputs that need to be appended, updated, removed etc.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/usefieldarray) • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn)\r\n *\r\n * @param props - useFieldArray props\r\n *\r\n * @returns methods - functions to manipulate with the Field Arrays (dynamic inputs) {@link UseFieldArrayReturn}\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n * const { register, control, handleSubmit, reset, trigger, setError } = useForm({\r\n * defaultValues: {\r\n * test: []\r\n * }\r\n * });\r\n * const { fields, append } = useFieldArray({\r\n * control,\r\n * name: \"test\"\r\n * });\r\n *\r\n * return (\r\n * \r\n * );\r\n * }\r\n * ```\r\n */\n\n\nfunction useFieldArray(props) {\n var methods = useFormContext();\n var _props$control2 = props.control,\n control = _props$control2 === void 0 ? methods.control : _props$control2,\n name = props.name,\n _props$keyName = props.keyName,\n keyName = _props$keyName === void 0 ? 'id' : _props$keyName,\n shouldUnregister = props.shouldUnregister;\n\n var _React$useState5 = React.useState(control._getFieldArray(name)),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n fields = _React$useState6[0],\n setFields = _React$useState6[1];\n\n var ids = React.useRef(control._getFieldArray(name).map(generateId));\n\n var _fieldIds = React.useRef(fields);\n\n var _name = React.useRef(name);\n\n var _actioned = React.useRef(false);\n\n _name.current = name;\n _fieldIds.current = fields;\n\n control._names.array.add(name);\n\n var callback = React.useCallback(function (_ref3) {\n var values = _ref3.values,\n fieldArrayName = _ref3.name;\n\n if (fieldArrayName === _name.current || !fieldArrayName) {\n var fieldValues = get(values, _name.current, []);\n setFields(fieldValues);\n ids.current = fieldValues.map(generateId);\n }\n }, []);\n useSubscribe({\n callback: callback,\n subject: control._subjects.array\n });\n var updateValues = React.useCallback(function (updatedFieldArrayValues) {\n _actioned.current = true;\n\n control._updateFieldArray(name, updatedFieldArrayValues);\n }, [control, name]);\n\n var append$1 = function append$1(value, options) {\n var appendValue = convertToArrayPayload(cloneObject(value));\n var updatedFieldArrayValues = append(control._getFieldArray(name), appendValue);\n control._names.focus = getFocusFieldName(name, updatedFieldArrayValues.length - 1, options);\n ids.current = append(ids.current, appendValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n\n control._updateFieldArray(name, updatedFieldArrayValues, append, {\n argA: fillEmptyArray(value)\n });\n };\n\n var prepend$1 = function prepend$1(value, options) {\n var prependValue = convertToArrayPayload(cloneObject(value));\n var updatedFieldArrayValues = prepend(control._getFieldArray(name), prependValue);\n control._names.focus = getFocusFieldName(name, 0, options);\n ids.current = prepend(ids.current, prependValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n\n control._updateFieldArray(name, updatedFieldArrayValues, prepend, {\n argA: fillEmptyArray(value)\n });\n };\n\n var remove = function remove(index) {\n var updatedFieldArrayValues = removeArrayAt(control._getFieldArray(name), index);\n ids.current = removeArrayAt(ids.current, index);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n\n control._updateFieldArray(name, updatedFieldArrayValues, removeArrayAt, {\n argA: index\n });\n };\n\n var insert$1 = function insert$1(index, value, options) {\n var insertValue = convertToArrayPayload(cloneObject(value));\n var updatedFieldArrayValues = insert(control._getFieldArray(name), index, insertValue);\n control._names.focus = getFocusFieldName(name, index, options);\n ids.current = insert(ids.current, index, insertValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n\n control._updateFieldArray(name, updatedFieldArrayValues, insert, {\n argA: index,\n argB: fillEmptyArray(value)\n });\n };\n\n var swap = function swap(indexA, indexB) {\n var updatedFieldArrayValues = control._getFieldArray(name);\n\n swapArrayAt(updatedFieldArrayValues, indexA, indexB);\n swapArrayAt(ids.current, indexA, indexB);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n\n control._updateFieldArray(name, updatedFieldArrayValues, swapArrayAt, {\n argA: indexA,\n argB: indexB\n }, false);\n };\n\n var move = function move(from, to) {\n var updatedFieldArrayValues = control._getFieldArray(name);\n\n moveArrayAt(updatedFieldArrayValues, from, to);\n moveArrayAt(ids.current, from, to);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n\n control._updateFieldArray(name, updatedFieldArrayValues, moveArrayAt, {\n argA: from,\n argB: to\n }, false);\n };\n\n var update = function update(index, value) {\n var updateValue = cloneObject(value);\n var updatedFieldArrayValues = updateAt(control._getFieldArray(name), index, updateValue);\n ids.current = _toConsumableArray(updatedFieldArrayValues).map(function (item, i) {\n return !item || i === index ? generateId() : ids.current[i];\n });\n updateValues(updatedFieldArrayValues);\n setFields(_toConsumableArray(updatedFieldArrayValues));\n\n control._updateFieldArray(name, updatedFieldArrayValues, updateAt, {\n argA: index,\n argB: updateValue\n }, true, false);\n };\n\n var replace = function replace(value) {\n var updatedFieldArrayValues = convertToArrayPayload(cloneObject(value));\n ids.current = updatedFieldArrayValues.map(generateId);\n updateValues(_toConsumableArray(updatedFieldArrayValues));\n setFields(_toConsumableArray(updatedFieldArrayValues));\n\n control._updateFieldArray(name, _toConsumableArray(updatedFieldArrayValues), function (data) {\n return data;\n }, {}, true, false);\n };\n\n React.useEffect(function () {\n control._stateFlags.action = false;\n isWatched(name, control._names) && control._subjects.state.next({});\n\n if (_actioned.current) {\n control._executeSchema([name]).then(function (result) {\n var error = get(result.errors, name);\n\n if (error && error.type && !get(control._formState.errors, name)) {\n set(control._formState.errors, name, error);\n\n control._subjects.state.next({\n errors: control._formState.errors\n });\n }\n });\n }\n\n control._subjects.watch.next({\n name: name,\n values: control._formValues\n });\n\n control._names.focus && focusFieldBy(control._fields, function (key) {\n return key.startsWith(control._names.focus);\n });\n control._names.focus = '';\n control._proxyFormState.isValid && control._updateValid();\n }, [fields, name, control]);\n React.useEffect(function () {\n !get(control._formValues, name) && control._updateFieldArray(name);\n return function () {\n (control._options.shouldUnregister || shouldUnregister) && control.unregister(name);\n };\n }, [name, control, keyName, shouldUnregister]);\n return {\n swap: React.useCallback(swap, [updateValues, name, control]),\n move: React.useCallback(move, [updateValues, name, control]),\n prepend: React.useCallback(prepend$1, [updateValues, name, control]),\n append: React.useCallback(append$1, [updateValues, name, control]),\n remove: React.useCallback(remove, [updateValues, name, control]),\n insert: React.useCallback(insert$1, [updateValues, name, control]),\n update: React.useCallback(update, [updateValues, name, control]),\n replace: React.useCallback(replace, [updateValues, name, control]),\n fields: React.useMemo(function () {\n return fields.map(function (field, index) {\n return Object.assign(Object.assign({}, field), _defineProperty({}, keyName, ids.current[index] || generateId()));\n });\n }, [fields, keyName])\n };\n}\n\nfunction createSubject() {\n var _observers = [];\n\n var next = function next(value) {\n var _iterator3 = _createForOfIteratorHelper(_observers),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var observer = _step3.value;\n observer.next(value);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n };\n\n var subscribe = function subscribe(observer) {\n _observers.push(observer);\n\n return {\n unsubscribe: function unsubscribe() {\n _observers = _observers.filter(function (o) {\n return o !== observer;\n });\n }\n };\n };\n\n var unsubscribe = function unsubscribe() {\n _observers = [];\n };\n\n return {\n get observers() {\n return _observers;\n },\n\n next: next,\n subscribe: subscribe,\n unsubscribe: unsubscribe\n };\n}\n\nvar isPrimitive = function isPrimitive(value) {\n return isNullOrUndefined(value) || !isObjectType(value);\n};\n\nfunction deepEqual(object1, object2) {\n if (isPrimitive(object1) || isPrimitive(object2)) {\n return object1 === object2;\n }\n\n if (isDateObject(object1) && isDateObject(object2)) {\n return object1.getTime() === object2.getTime();\n }\n\n var keys1 = Object.keys(object1);\n var keys2 = Object.keys(object2);\n\n if (keys1.length !== keys2.length) {\n return false;\n }\n\n for (var _i2 = 0, _keys = keys1; _i2 < _keys.length; _i2++) {\n var key = _keys[_i2];\n var val1 = object1[key];\n\n if (!keys2.includes(key)) {\n return false;\n }\n\n if (key !== 'ref') {\n var val2 = object2[key];\n\n if (isDateObject(val1) && isDateObject(val2) || isObject(val1) && isObject(val2) || Array.isArray(val1) && Array.isArray(val2) ? !deepEqual(val1, val2) : val1 !== val2) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nvar getValidationModes = function getValidationModes(mode) {\n return {\n isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\n isOnBlur: mode === VALIDATION_MODE.onBlur,\n isOnChange: mode === VALIDATION_MODE.onChange,\n isOnAll: mode === VALIDATION_MODE.all,\n isOnTouch: mode === VALIDATION_MODE.onTouched\n };\n};\n\nvar isBoolean = function isBoolean(value) {\n return typeof value === 'boolean';\n};\n\nvar isFileInput = function isFileInput(element) {\n return element.type === 'file';\n};\n\nvar isHTMLElement = function isHTMLElement(value) {\n return value instanceof HTMLElement;\n};\n\nvar isMultipleSelect = function isMultipleSelect(element) {\n return element.type === \"select-multiple\";\n};\n\nvar isRadioInput = function isRadioInput(element) {\n return element.type === 'radio';\n};\n\nvar isRadioOrCheckbox = function isRadioOrCheckbox(ref) {\n return isRadioInput(ref) || isCheckBoxInput(ref);\n};\n\nvar isWeb = typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined' && typeof document !== 'undefined';\n\nvar live = function live(ref) {\n return isHTMLElement(ref) && ref.isConnected;\n};\n\nfunction baseGet(object, updatePath) {\n var length = updatePath.slice(0, -1).length;\n var index = 0;\n\n while (index < length) {\n object = isUndefined(object) ? index++ : object[updatePath[index++]];\n }\n\n return object;\n}\n\nfunction unset(object, path) {\n var updatePath = isKey(path) ? [path] : stringToPath(path);\n var childObject = updatePath.length == 1 ? object : baseGet(object, updatePath);\n var key = updatePath[updatePath.length - 1];\n var previousObjRef;\n\n if (childObject) {\n delete childObject[key];\n }\n\n for (var k = 0; k < updatePath.slice(0, -1).length; k++) {\n var index = -1;\n var objectRef = void 0;\n var currentPaths = updatePath.slice(0, -(k + 1));\n var currentPathsLength = currentPaths.length - 1;\n\n if (k > 0) {\n previousObjRef = object;\n }\n\n while (++index < currentPaths.length) {\n var item = currentPaths[index];\n objectRef = objectRef ? objectRef[item] : object[item];\n\n if (currentPathsLength === index && (isObject(objectRef) && isEmptyObject(objectRef) || Array.isArray(objectRef) && !objectRef.filter(function (data) {\n return !isUndefined(data);\n }).length)) {\n previousObjRef ? delete previousObjRef[item] : delete object[item];\n }\n\n previousObjRef = objectRef;\n }\n }\n\n return object;\n}\n\nfunction markFieldsDirty(data) {\n var fields = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var isParentNodeArray = Array.isArray(data);\n\n if (isObject(data) || isParentNodeArray) {\n for (var key in data) {\n if (Array.isArray(data[key]) || isObject(data[key]) && !objectHasFunction(data[key])) {\n fields[key] = Array.isArray(data[key]) ? [] : {};\n markFieldsDirty(data[key], fields[key]);\n } else if (!isNullOrUndefined(data[key])) {\n fields[key] = true;\n }\n }\n }\n\n return fields;\n}\n\nfunction getDirtyFieldsFromDefaultValues(data, formValues, dirtyFieldsFromValues) {\n var isParentNodeArray = Array.isArray(data);\n\n if (isObject(data) || isParentNodeArray) {\n for (var key in data) {\n if (Array.isArray(data[key]) || isObject(data[key]) && !objectHasFunction(data[key])) {\n if (isUndefined(formValues) || isPrimitive(dirtyFieldsFromValues[key])) {\n dirtyFieldsFromValues[key] = Array.isArray(data[key]) ? markFieldsDirty(data[key], []) : Object.assign({}, markFieldsDirty(data[key]));\n } else {\n getDirtyFieldsFromDefaultValues(data[key], isNullOrUndefined(formValues) ? {} : formValues[key], dirtyFieldsFromValues[key]);\n }\n } else {\n dirtyFieldsFromValues[key] = !deepEqual(data[key], formValues[key]);\n }\n }\n }\n\n return dirtyFieldsFromValues;\n}\n\nvar getDirtyFields = function getDirtyFields(defaultValues, formValues) {\n return getDirtyFieldsFromDefaultValues(defaultValues, formValues, markFieldsDirty(formValues));\n};\n\nvar defaultResult = {\n value: false,\n isValid: false\n};\nvar validResult = {\n value: true,\n isValid: true\n};\n\nvar getCheckboxValue = function getCheckboxValue(options) {\n if (Array.isArray(options)) {\n if (options.length > 1) {\n var values = options.filter(function (option) {\n return option && option.checked && !option.disabled;\n }).map(function (option) {\n return option.value;\n });\n return {\n value: values,\n isValid: !!values.length\n };\n }\n\n return options[0].checked && !options[0].disabled ? // @ts-expect-error expected to work in the browser\n options[0].attributes && !isUndefined(options[0].attributes.value) ? isUndefined(options[0].value) || options[0].value === '' ? validResult : {\n value: options[0].value,\n isValid: true\n } : validResult : defaultResult;\n }\n\n return defaultResult;\n};\n\nvar getFieldValueAs = function getFieldValueAs(value, _ref4) {\n var valueAsNumber = _ref4.valueAsNumber,\n valueAsDate = _ref4.valueAsDate,\n setValueAs = _ref4.setValueAs;\n return isUndefined(value) ? value : valueAsNumber ? value === '' ? NaN : +value : valueAsDate && isString(value) ? new Date(value) : setValueAs ? setValueAs(value) : value;\n};\n\nvar defaultReturn = {\n isValid: false,\n value: null\n};\n\nvar getRadioValue = function getRadioValue(options) {\n return Array.isArray(options) ? options.reduce(function (previous, option) {\n return option && option.checked && !option.disabled ? {\n isValid: true,\n value: option.value\n } : previous;\n }, defaultReturn) : defaultReturn;\n};\n\nfunction getFieldValue(_f) {\n var ref = _f.ref;\n\n if (_f.refs ? _f.refs.every(function (ref) {\n return ref.disabled;\n }) : ref.disabled) {\n return;\n }\n\n if (isFileInput(ref)) {\n return ref.files;\n }\n\n if (isRadioInput(ref)) {\n return getRadioValue(_f.refs).value;\n }\n\n if (isMultipleSelect(ref)) {\n return _toConsumableArray(ref.selectedOptions).map(function (_ref5) {\n var value = _ref5.value;\n return value;\n });\n }\n\n if (isCheckBoxInput(ref)) {\n return getCheckboxValue(_f.refs).value;\n }\n\n return getFieldValueAs(isUndefined(ref.value) ? _f.ref.value : ref.value, _f);\n}\n\nvar getResolverOptions = function getResolverOptions(fieldsNames, _fields, criteriaMode, shouldUseNativeValidation) {\n var fields = {};\n\n var _iterator4 = _createForOfIteratorHelper(fieldsNames),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var name = _step4.value;\n var field = get(_fields, name);\n field && set(fields, name, field._f);\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n\n return {\n criteriaMode: criteriaMode,\n names: _toConsumableArray(fieldsNames),\n fields: fields,\n shouldUseNativeValidation: shouldUseNativeValidation\n };\n};\n\nvar isRegex = function isRegex(value) {\n return value instanceof RegExp;\n};\n\nvar getRuleValue = function getRuleValue(rule) {\n return isUndefined(rule) ? undefined : isRegex(rule) ? rule.source : isObject(rule) ? isRegex(rule.value) ? rule.value.source : rule.value : rule;\n};\n\nvar hasValidation = function hasValidation(options) {\n return options.mount && (options.required || options.min || options.max || options.maxLength || options.minLength || options.pattern || options.validate);\n};\n\nfunction schemaErrorLookup(errors, _fields, name) {\n var error = get(errors, name);\n\n if (error || isKey(name)) {\n return {\n error: error,\n name: name\n };\n }\n\n var names = name.split('.');\n\n while (names.length) {\n var fieldName = names.join('.');\n var field = get(_fields, fieldName);\n var foundError = get(errors, fieldName);\n\n if (field && !Array.isArray(field) && name !== fieldName) {\n return {\n name: name\n };\n }\n\n if (foundError && foundError.type) {\n return {\n name: fieldName,\n error: foundError\n };\n }\n\n names.pop();\n }\n\n return {\n name: name\n };\n}\n\nvar skipValidation = function skipValidation(isBlurEvent, isTouched, isSubmitted, reValidateMode, mode) {\n if (mode.isOnAll) {\n return false;\n } else if (!isSubmitted && mode.isOnTouch) {\n return !(isTouched || isBlurEvent);\n } else if (isSubmitted ? reValidateMode.isOnBlur : mode.isOnBlur) {\n return !isBlurEvent;\n } else if (isSubmitted ? reValidateMode.isOnChange : mode.isOnChange) {\n return isBlurEvent;\n }\n\n return true;\n};\n\nvar unsetEmptyArray = function unsetEmptyArray(ref, name) {\n return !compact(get(ref, name)).length && unset(ref, name);\n};\n\nvar isMessage = function isMessage(value) {\n return isString(value) || /*#__PURE__*/React.isValidElement(value);\n};\n\nfunction getValidateError(result, ref) {\n var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'validate';\n\n if (isMessage(result) || Array.isArray(result) && result.every(isMessage) || isBoolean(result) && !result) {\n return {\n type: type,\n message: isMessage(result) ? result : '',\n ref: ref\n };\n }\n}\n\nvar getValueAndMessage = function getValueAndMessage(validationData) {\n return isObject(validationData) && !isRegex(validationData) ? validationData : {\n value: validationData,\n message: ''\n };\n};\n\nvar validateField = /*#__PURE__*/function () {\n var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(field, inputValue, validateAllFieldCriteria, shouldUseNativeValidation) {\n var _field$_f, ref, refs, required, maxLength, minLength, min, max, pattern, validate, name, valueAsNumber, mount, disabled, inputRef, setCustomValidity, error, isRadio, isCheckBox, isRadioOrCheckbox, isEmpty, appendErrorsCurry, getMinMaxMessage, _ref7, value, message, exceedMax, exceedMin, maxOutput, minOutput, valueNumber, valueDate, maxLengthOutput, minLengthOutput, _exceedMax, _exceedMin, _getValueAndMessage, patternValue, _message, result, validateError, validationResult, key, _validateError;\n\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _field$_f = field._f, ref = _field$_f.ref, refs = _field$_f.refs, required = _field$_f.required, maxLength = _field$_f.maxLength, minLength = _field$_f.minLength, min = _field$_f.min, max = _field$_f.max, pattern = _field$_f.pattern, validate = _field$_f.validate, name = _field$_f.name, valueAsNumber = _field$_f.valueAsNumber, mount = _field$_f.mount, disabled = _field$_f.disabled;\n\n if (!(!mount || disabled)) {\n _context.next = 3;\n break;\n }\n\n return _context.abrupt(\"return\", {});\n\n case 3:\n inputRef = refs ? refs[0] : ref;\n\n setCustomValidity = function setCustomValidity(message) {\n if (shouldUseNativeValidation && inputRef.reportValidity) {\n inputRef.setCustomValidity(isBoolean(message) ? '' : message || ' ');\n inputRef.reportValidity();\n }\n };\n\n error = {};\n isRadio = isRadioInput(ref);\n isCheckBox = isCheckBoxInput(ref);\n isRadioOrCheckbox = isRadio || isCheckBox;\n isEmpty = (valueAsNumber || isFileInput(ref)) && !ref.value || inputValue === '' || Array.isArray(inputValue) && !inputValue.length;\n appendErrorsCurry = appendErrors.bind(null, name, validateAllFieldCriteria, error);\n\n getMinMaxMessage = function getMinMaxMessage(exceedMax, maxLengthMessage, minLengthMessage) {\n var maxType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : INPUT_VALIDATION_RULES.maxLength;\n var minType = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : INPUT_VALIDATION_RULES.minLength;\n var message = exceedMax ? maxLengthMessage : minLengthMessage;\n error[name] = Object.assign({\n type: exceedMax ? maxType : minType,\n message: message,\n ref: ref\n }, appendErrorsCurry(exceedMax ? maxType : minType, message));\n };\n\n if (!(required && (!isRadioOrCheckbox && (isEmpty || isNullOrUndefined(inputValue)) || isBoolean(inputValue) && !inputValue || isCheckBox && !getCheckboxValue(refs).isValid || isRadio && !getRadioValue(refs).isValid))) {\n _context.next = 19;\n break;\n }\n\n _ref7 = isMessage(required) ? {\n value: !!required,\n message: required\n } : getValueAndMessage(required), value = _ref7.value, message = _ref7.message;\n\n if (!value) {\n _context.next = 19;\n break;\n }\n\n error[name] = Object.assign({\n type: INPUT_VALIDATION_RULES.required,\n message: message,\n ref: inputRef\n }, appendErrorsCurry(INPUT_VALIDATION_RULES.required, message));\n\n if (validateAllFieldCriteria) {\n _context.next = 19;\n break;\n }\n\n setCustomValidity(message);\n return _context.abrupt(\"return\", error);\n\n case 19:\n if (!(!isEmpty && (!isNullOrUndefined(min) || !isNullOrUndefined(max)))) {\n _context.next = 28;\n break;\n }\n\n maxOutput = getValueAndMessage(max);\n minOutput = getValueAndMessage(min);\n\n if (!isNaN(inputValue)) {\n valueNumber = ref.valueAsNumber || +inputValue;\n\n if (!isNullOrUndefined(maxOutput.value)) {\n exceedMax = valueNumber > maxOutput.value;\n }\n\n if (!isNullOrUndefined(minOutput.value)) {\n exceedMin = valueNumber < minOutput.value;\n }\n } else {\n valueDate = ref.valueAsDate || new Date(inputValue);\n\n if (isString(maxOutput.value)) {\n exceedMax = valueDate > new Date(maxOutput.value);\n }\n\n if (isString(minOutput.value)) {\n exceedMin = valueDate < new Date(minOutput.value);\n }\n }\n\n if (!(exceedMax || exceedMin)) {\n _context.next = 28;\n break;\n }\n\n getMinMaxMessage(!!exceedMax, maxOutput.message, minOutput.message, INPUT_VALIDATION_RULES.max, INPUT_VALIDATION_RULES.min);\n\n if (validateAllFieldCriteria) {\n _context.next = 28;\n break;\n }\n\n setCustomValidity(error[name].message);\n return _context.abrupt(\"return\", error);\n\n case 28:\n if (!((maxLength || minLength) && !isEmpty && isString(inputValue))) {\n _context.next = 38;\n break;\n }\n\n maxLengthOutput = getValueAndMessage(maxLength);\n minLengthOutput = getValueAndMessage(minLength);\n _exceedMax = !isNullOrUndefined(maxLengthOutput.value) && inputValue.length > maxLengthOutput.value;\n _exceedMin = !isNullOrUndefined(minLengthOutput.value) && inputValue.length < minLengthOutput.value;\n\n if (!(_exceedMax || _exceedMin)) {\n _context.next = 38;\n break;\n }\n\n getMinMaxMessage(_exceedMax, maxLengthOutput.message, minLengthOutput.message);\n\n if (validateAllFieldCriteria) {\n _context.next = 38;\n break;\n }\n\n setCustomValidity(error[name].message);\n return _context.abrupt(\"return\", error);\n\n case 38:\n if (!(pattern && !isEmpty && isString(inputValue))) {\n _context.next = 45;\n break;\n }\n\n _getValueAndMessage = getValueAndMessage(pattern), patternValue = _getValueAndMessage.value, _message = _getValueAndMessage.message;\n\n if (!(isRegex(patternValue) && !inputValue.match(patternValue))) {\n _context.next = 45;\n break;\n }\n\n error[name] = Object.assign({\n type: INPUT_VALIDATION_RULES.pattern,\n message: _message,\n ref: ref\n }, appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, _message));\n\n if (validateAllFieldCriteria) {\n _context.next = 45;\n break;\n }\n\n setCustomValidity(_message);\n return _context.abrupt(\"return\", error);\n\n case 45:\n if (!validate) {\n _context.next = 79;\n break;\n }\n\n if (!isFunction(validate)) {\n _context.next = 58;\n break;\n }\n\n _context.next = 49;\n return validate(inputValue);\n\n case 49:\n result = _context.sent;\n validateError = getValidateError(result, inputRef);\n\n if (!validateError) {\n _context.next = 56;\n break;\n }\n\n error[name] = Object.assign(Object.assign({}, validateError), appendErrorsCurry(INPUT_VALIDATION_RULES.validate, validateError.message));\n\n if (validateAllFieldCriteria) {\n _context.next = 56;\n break;\n }\n\n setCustomValidity(validateError.message);\n return _context.abrupt(\"return\", error);\n\n case 56:\n _context.next = 79;\n break;\n\n case 58:\n if (!isObject(validate)) {\n _context.next = 79;\n break;\n }\n\n validationResult = {};\n _context.t0 = _regeneratorRuntime.keys(validate);\n\n case 61:\n if ((_context.t1 = _context.t0()).done) {\n _context.next = 75;\n break;\n }\n\n key = _context.t1.value;\n\n if (!(!isEmptyObject(validationResult) && !validateAllFieldCriteria)) {\n _context.next = 65;\n break;\n }\n\n return _context.abrupt(\"break\", 75);\n\n case 65:\n _context.t2 = getValidateError;\n _context.next = 68;\n return validate[key](inputValue);\n\n case 68:\n _context.t3 = _context.sent;\n _context.t4 = inputRef;\n _context.t5 = key;\n _validateError = (0, _context.t2)(_context.t3, _context.t4, _context.t5);\n\n if (_validateError) {\n validationResult = Object.assign(Object.assign({}, _validateError), appendErrorsCurry(key, _validateError.message));\n setCustomValidity(_validateError.message);\n\n if (validateAllFieldCriteria) {\n error[name] = validationResult;\n }\n }\n\n _context.next = 61;\n break;\n\n case 75:\n if (isEmptyObject(validationResult)) {\n _context.next = 79;\n break;\n }\n\n error[name] = Object.assign({\n ref: inputRef\n }, validationResult);\n\n if (validateAllFieldCriteria) {\n _context.next = 79;\n break;\n }\n\n return _context.abrupt(\"return\", error);\n\n case 79:\n setCustomValidity(true);\n return _context.abrupt(\"return\", error);\n\n case 81:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function validateField(_x, _x2, _x3, _x4) {\n return _ref6.apply(this, arguments);\n };\n}();\n\nvar defaultOptions = {\n mode: VALIDATION_MODE.onSubmit,\n reValidateMode: VALIDATION_MODE.onChange,\n shouldFocusError: true\n};\n\nfunction createFormControl() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _options = Object.assign(Object.assign({}, defaultOptions), props);\n\n var _formState = {\n isDirty: false,\n isValidating: false,\n dirtyFields: {},\n isSubmitted: false,\n submitCount: 0,\n touchedFields: {},\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n errors: {}\n };\n var _fields = {};\n\n var _defaultValues = _options.defaultValues || {};\n\n var _formValues = _options.shouldUnregister ? {} : cloneObject(_defaultValues);\n\n var _stateFlags = {\n action: false,\n mount: false,\n watch: false\n };\n var _names = {\n mount: new Set(),\n unMount: new Set(),\n array: new Set(),\n watch: new Set()\n };\n var delayErrorCallback;\n var timer = 0;\n var validateFields = {};\n var _proxyFormState = {\n isDirty: false,\n dirtyFields: false,\n touchedFields: false,\n isValidating: false,\n isValid: false,\n errors: false\n };\n var _subjects = {\n watch: createSubject(),\n array: createSubject(),\n state: createSubject()\n };\n var validationModeBeforeSubmit = getValidationModes(_options.mode);\n var validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\n var shouldDisplayAllAssociatedErrors = _options.criteriaMode === VALIDATION_MODE.all;\n\n var debounce = function debounce(callback, wait) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key2 = 0; _key2 < _len; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n clearTimeout(timer);\n timer = window.setTimeout(function () {\n return callback.apply(void 0, args);\n }, wait);\n };\n };\n\n var _updateValid = /*#__PURE__*/function () {\n var _ref8 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(shouldSkipRender) {\n var isValid;\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n isValid = false;\n\n if (!_proxyFormState.isValid) {\n _context2.next = 15;\n break;\n }\n\n if (!_options.resolver) {\n _context2.next = 10;\n break;\n }\n\n _context2.t1 = isEmptyObject;\n _context2.next = 6;\n return _executeSchema();\n\n case 6:\n _context2.t2 = _context2.sent.errors;\n _context2.t0 = (0, _context2.t1)(_context2.t2);\n _context2.next = 13;\n break;\n\n case 10:\n _context2.next = 12;\n return executeBuildInValidation(_fields, true);\n\n case 12:\n _context2.t0 = _context2.sent;\n\n case 13:\n isValid = _context2.t0;\n\n if (!shouldSkipRender && isValid !== _formState.isValid) {\n _formState.isValid = isValid;\n\n _subjects.state.next({\n isValid: isValid\n });\n }\n\n case 15:\n return _context2.abrupt(\"return\", isValid);\n\n case 16:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n return function _updateValid(_x5) {\n return _ref8.apply(this, arguments);\n };\n }();\n\n var _updateFieldArray = function _updateFieldArray(name) {\n var values = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var method = arguments.length > 2 ? arguments[2] : undefined;\n var args = arguments.length > 3 ? arguments[3] : undefined;\n var shouldSetValues = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n var shouldUpdateFieldsAndState = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n\n if (args && method) {\n _stateFlags.action = true;\n\n if (shouldUpdateFieldsAndState && Array.isArray(get(_fields, name))) {\n var fieldValues = method(get(_fields, name), args.argA, args.argB);\n shouldSetValues && set(_fields, name, fieldValues);\n }\n\n if (_proxyFormState.errors && shouldUpdateFieldsAndState && Array.isArray(get(_formState.errors, name))) {\n var errors = method(get(_formState.errors, name), args.argA, args.argB);\n shouldSetValues && set(_formState.errors, name, errors);\n unsetEmptyArray(_formState.errors, name);\n }\n\n if (_proxyFormState.touchedFields && shouldUpdateFieldsAndState && Array.isArray(get(_formState.touchedFields, name))) {\n var touchedFields = method(get(_formState.touchedFields, name), args.argA, args.argB);\n shouldSetValues && set(_formState.touchedFields, name, touchedFields);\n }\n\n if (_proxyFormState.dirtyFields) {\n _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\n }\n\n _subjects.state.next({\n isDirty: _getDirty(name, values),\n dirtyFields: _formState.dirtyFields,\n errors: _formState.errors,\n isValid: _formState.isValid\n });\n } else {\n set(_formValues, name, values);\n }\n };\n\n var updateErrors = function updateErrors(name, error) {\n return set(_formState.errors, name, error), _subjects.state.next({\n errors: _formState.errors\n });\n };\n\n var updateValidAndValue = function updateValidAndValue(name, shouldSkipSetValueAs, value, ref) {\n var field = get(_fields, name);\n\n if (field) {\n var defaultValue = get(_formValues, name, isUndefined(value) ? get(_defaultValues, name) : value);\n isUndefined(defaultValue) || ref && ref.defaultChecked || shouldSkipSetValueAs ? set(_formValues, name, shouldSkipSetValueAs ? defaultValue : getFieldValue(field._f)) : setFieldValue(name, defaultValue);\n _stateFlags.mount && _updateValid();\n }\n };\n\n var updateTouchAndDirty = function updateTouchAndDirty(name, fieldValue, isBlurEvent, shouldDirty, shouldRender) {\n var isFieldDirty = false;\n var output = {\n name: name\n };\n var isPreviousFieldTouched = get(_formState.touchedFields, name);\n\n if (_proxyFormState.isDirty) {\n var isPreviousFormDirty = _formState.isDirty;\n _formState.isDirty = output.isDirty = _getDirty();\n isFieldDirty = isPreviousFormDirty !== output.isDirty;\n }\n\n if (_proxyFormState.dirtyFields && (!isBlurEvent || shouldDirty)) {\n var isPreviousFieldDirty = get(_formState.dirtyFields, name);\n var isCurrentFieldPristine = deepEqual(get(_defaultValues, name), fieldValue);\n isCurrentFieldPristine ? unset(_formState.dirtyFields, name) : set(_formState.dirtyFields, name, true);\n output.dirtyFields = _formState.dirtyFields;\n isFieldDirty = isFieldDirty || isPreviousFieldDirty !== get(_formState.dirtyFields, name);\n }\n\n if (isBlurEvent && !isPreviousFieldTouched) {\n set(_formState.touchedFields, name, isBlurEvent);\n output.touchedFields = _formState.touchedFields;\n isFieldDirty = isFieldDirty || _proxyFormState.touchedFields && isPreviousFieldTouched !== isBlurEvent;\n }\n\n isFieldDirty && shouldRender && _subjects.state.next(output);\n return isFieldDirty ? output : {};\n };\n\n var shouldRenderByError = /*#__PURE__*/function () {\n var _ref9 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(shouldSkipRender, name, isValid, error, fieldState) {\n var previousFieldError, shouldUpdateValid, updatedFormState;\n return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n previousFieldError = get(_formState.errors, name);\n shouldUpdateValid = _proxyFormState.isValid && _formState.isValid !== isValid;\n\n if (props.delayError && error) {\n delayErrorCallback = delayErrorCallback || debounce(updateErrors, props.delayError);\n delayErrorCallback(name, error);\n } else {\n clearTimeout(timer);\n error ? set(_formState.errors, name, error) : unset(_formState.errors, name);\n }\n\n if (((error ? !deepEqual(previousFieldError, error) : previousFieldError) || !isEmptyObject(fieldState) || shouldUpdateValid) && !shouldSkipRender) {\n updatedFormState = Object.assign(Object.assign(Object.assign({}, fieldState), shouldUpdateValid ? {\n isValid: isValid\n } : {}), {\n errors: _formState.errors,\n name: name\n });\n _formState = Object.assign(Object.assign({}, _formState), updatedFormState);\n\n _subjects.state.next(updatedFormState);\n }\n\n validateFields[name]--;\n\n if (_proxyFormState.isValidating && !Object.values(validateFields).some(function (v) {\n return v;\n })) {\n _subjects.state.next({\n isValidating: false\n });\n\n validateFields = {};\n }\n\n case 6:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n\n return function shouldRenderByError(_x6, _x7, _x8, _x9, _x10) {\n return _ref9.apply(this, arguments);\n };\n }();\n\n var _executeSchema = /*#__PURE__*/function () {\n var _ref10 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(name) {\n return _regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (!_options.resolver) {\n _context4.next = 6;\n break;\n }\n\n _context4.next = 3;\n return _options.resolver(Object.assign({}, _formValues), _options.context, getResolverOptions(name || _names.mount, _fields, _options.criteriaMode, _options.shouldUseNativeValidation));\n\n case 3:\n _context4.t0 = _context4.sent;\n _context4.next = 7;\n break;\n\n case 6:\n _context4.t0 = {};\n\n case 7:\n return _context4.abrupt(\"return\", _context4.t0);\n\n case 8:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }));\n\n return function _executeSchema(_x11) {\n return _ref10.apply(this, arguments);\n };\n }();\n\n var executeSchemaAndUpdateState = /*#__PURE__*/function () {\n var _ref11 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5(names) {\n var _yield$_executeSchema, errors, _iterator5, _step5, _name2, _error;\n\n return _regeneratorRuntime.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return _executeSchema();\n\n case 2:\n _yield$_executeSchema = _context5.sent;\n errors = _yield$_executeSchema.errors;\n\n if (names) {\n _iterator5 = _createForOfIteratorHelper(names);\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n _name2 = _step5.value;\n _error = get(errors, _name2);\n _error ? set(_formState.errors, _name2, _error) : unset(_formState.errors, _name2);\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n } else {\n _formState.errors = errors;\n }\n\n return _context5.abrupt(\"return\", errors);\n\n case 6:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5);\n }));\n\n return function executeSchemaAndUpdateState(_x12) {\n return _ref11.apply(this, arguments);\n };\n }();\n\n var executeBuildInValidation = /*#__PURE__*/function () {\n var _ref12 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee6(fields, shouldOnlyCheckValid) {\n var context,\n _name3,\n field,\n fieldReference,\n fieldValue,\n fieldError,\n _args6 = arguments;\n\n return _regeneratorRuntime.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n context = _args6.length > 2 && _args6[2] !== undefined ? _args6[2] : {\n valid: true\n };\n _context6.t0 = _regeneratorRuntime.keys(fields);\n\n case 2:\n if ((_context6.t1 = _context6.t0()).done) {\n _context6.next = 23;\n break;\n }\n\n _name3 = _context6.t1.value;\n field = fields[_name3];\n\n if (!field) {\n _context6.next = 21;\n break;\n }\n\n fieldReference = field._f;\n fieldValue = omit(field, '_f');\n\n if (!fieldReference) {\n _context6.next = 17;\n break;\n }\n\n _context6.next = 11;\n return validateField(field, get(_formValues, fieldReference.name), shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation);\n\n case 11:\n fieldError = _context6.sent;\n\n if (!fieldError[fieldReference.name]) {\n _context6.next = 16;\n break;\n }\n\n context.valid = false;\n\n if (!shouldOnlyCheckValid) {\n _context6.next = 16;\n break;\n }\n\n return _context6.abrupt(\"break\", 23);\n\n case 16:\n if (!shouldOnlyCheckValid) {\n fieldError[fieldReference.name] ? set(_formState.errors, fieldReference.name, fieldError[fieldReference.name]) : unset(_formState.errors, fieldReference.name);\n }\n\n case 17:\n _context6.t2 = fieldValue;\n\n if (!_context6.t2) {\n _context6.next = 21;\n break;\n }\n\n _context6.next = 21;\n return executeBuildInValidation(fieldValue, shouldOnlyCheckValid, context);\n\n case 21:\n _context6.next = 2;\n break;\n\n case 23:\n return _context6.abrupt(\"return\", context.valid);\n\n case 24:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6);\n }));\n\n return function executeBuildInValidation(_x13, _x14) {\n return _ref12.apply(this, arguments);\n };\n }();\n\n var _removeUnmounted = function _removeUnmounted() {\n var _iterator6 = _createForOfIteratorHelper(_names.unMount),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var _name4 = _step6.value;\n var field = get(_fields, _name4);\n field && (field._f.refs ? field._f.refs.every(function (ref) {\n return !live(ref);\n }) : !live(field._f.ref)) && unregister(_name4);\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n\n _names.unMount = new Set();\n };\n\n var _getDirty = function _getDirty(name, data) {\n return name && data && set(_formValues, name, data), !deepEqual(getValues(), _defaultValues);\n };\n\n var _getWatch = function _getWatch(names, defaultValue, isGlobal) {\n var fieldValues = Object.assign({}, _stateFlags.mount ? _formValues : isUndefined(defaultValue) ? _defaultValues : isString(names) ? _defineProperty({}, names, defaultValue) : defaultValue);\n return generateWatchOutput(names, _names, fieldValues, isGlobal);\n };\n\n var _getFieldArray = function _getFieldArray(name) {\n return compact(get(_stateFlags.mount ? _formValues : _defaultValues, name, props.shouldUnregister ? get(_defaultValues, name, []) : []));\n };\n\n var setFieldValue = function setFieldValue(name, value) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var field = get(_fields, name);\n var fieldValue = value;\n\n if (field) {\n var fieldReference = field._f;\n\n if (fieldReference) {\n !fieldReference.disabled && set(_formValues, name, getFieldValueAs(value, fieldReference));\n fieldValue = isWeb && isHTMLElement(fieldReference.ref) && isNullOrUndefined(value) ? '' : value;\n\n if (isMultipleSelect(fieldReference.ref)) {\n _toConsumableArray(fieldReference.ref.options).forEach(function (selectRef) {\n return selectRef.selected = fieldValue.includes(selectRef.value);\n });\n } else if (fieldReference.refs) {\n if (isCheckBoxInput(fieldReference.ref)) {\n fieldReference.refs.length > 1 ? fieldReference.refs.forEach(function (checkboxRef) {\n return checkboxRef.checked = Array.isArray(fieldValue) ? !!fieldValue.find(function (data) {\n return data === checkboxRef.value;\n }) : fieldValue === checkboxRef.value;\n }) : fieldReference.refs[0] && (fieldReference.refs[0].checked = !!fieldValue);\n } else {\n fieldReference.refs.forEach(function (radioRef) {\n return radioRef.checked = radioRef.value === fieldValue;\n });\n }\n } else if (isFileInput(fieldReference.ref)) {\n fieldReference.ref.value = '';\n } else {\n fieldReference.ref.value = fieldValue;\n\n if (!fieldReference.ref.type) {\n _subjects.watch.next({\n name: name\n });\n }\n }\n }\n }\n\n (options.shouldDirty || options.shouldTouch) && updateTouchAndDirty(name, fieldValue, options.shouldTouch, options.shouldDirty, true);\n options.shouldValidate && trigger(name);\n };\n\n var setValues = function setValues(name, value, options) {\n for (var fieldKey in value) {\n var fieldValue = value[fieldKey];\n var fieldName = \"\".concat(name, \".\").concat(fieldKey);\n var field = get(_fields, fieldName);\n (_names.array.has(name) || !isPrimitive(fieldValue) || field && !field._f) && !isDateObject(fieldValue) ? setValues(fieldName, fieldValue, options) : setFieldValue(fieldName, fieldValue, options);\n }\n };\n\n var setValue = function setValue(name, value) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var field = get(_fields, name);\n\n var isFieldArray = _names.array.has(name);\n\n var cloneValue = cloneObject(value);\n set(_formValues, name, cloneValue);\n\n if (isFieldArray) {\n _subjects.array.next({\n name: name,\n values: _formValues\n });\n\n if ((_proxyFormState.isDirty || _proxyFormState.dirtyFields) && options.shouldDirty) {\n _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\n\n _subjects.state.next({\n name: name,\n dirtyFields: _formState.dirtyFields,\n isDirty: _getDirty(name, cloneValue)\n });\n }\n } else {\n field && !field._f && !isNullOrUndefined(cloneValue) ? setValues(name, cloneValue, options) : setFieldValue(name, cloneValue, options);\n }\n\n isWatched(name, _names) && _subjects.state.next({});\n\n _subjects.watch.next({\n name: name\n });\n };\n\n var onChange = /*#__PURE__*/function () {\n var _ref14 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee7(event) {\n var target, name, field, _error2, isValid, fieldValue, isBlurEvent, shouldSkipValidation, watched, fieldState, shouldRender, _yield$_executeSchema2, errors, previousErrorLookupResult, errorLookupResult;\n\n return _regeneratorRuntime.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n target = event.target;\n name = target.name;\n field = get(_fields, name);\n\n if (!field) {\n _context7.next = 39;\n break;\n }\n\n fieldValue = target.type ? getFieldValue(field._f) : getEventValue(event);\n isBlurEvent = event.type === EVENTS.BLUR || event.type === EVENTS.FOCUS_OUT;\n shouldSkipValidation = !hasValidation(field._f) && !_options.resolver && !get(_formState.errors, name) && !field._f.deps || skipValidation(isBlurEvent, get(_formState.touchedFields, name), _formState.isSubmitted, validationModeAfterSubmit, validationModeBeforeSubmit);\n watched = isWatched(name, _names, isBlurEvent);\n set(_formValues, name, fieldValue);\n\n if (isBlurEvent) {\n field._f.onBlur && field._f.onBlur(event);\n } else if (field._f.onChange) {\n field._f.onChange(event);\n }\n\n fieldState = updateTouchAndDirty(name, fieldValue, isBlurEvent, false);\n shouldRender = !isEmptyObject(fieldState) || watched;\n !isBlurEvent && _subjects.watch.next({\n name: name,\n type: event.type\n });\n\n if (!shouldSkipValidation) {\n _context7.next = 15;\n break;\n }\n\n return _context7.abrupt(\"return\", shouldRender && _subjects.state.next(Object.assign({\n name: name\n }, watched ? {} : fieldState)));\n\n case 15:\n !isBlurEvent && watched && _subjects.state.next({});\n validateFields[name] = validateFields[name] ? +1 : 1;\n\n _subjects.state.next({\n isValidating: true\n });\n\n if (!_options.resolver) {\n _context7.next = 30;\n break;\n }\n\n _context7.next = 21;\n return _executeSchema([name]);\n\n case 21:\n _yield$_executeSchema2 = _context7.sent;\n errors = _yield$_executeSchema2.errors;\n previousErrorLookupResult = schemaErrorLookup(_formState.errors, _fields, name);\n errorLookupResult = schemaErrorLookup(errors, _fields, previousErrorLookupResult.name || name);\n _error2 = errorLookupResult.error;\n name = errorLookupResult.name;\n isValid = isEmptyObject(errors);\n _context7.next = 37;\n break;\n\n case 30:\n _context7.next = 32;\n return validateField(field, get(_formValues, name), shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation);\n\n case 32:\n _context7.t0 = name;\n _error2 = _context7.sent[_context7.t0];\n _context7.next = 36;\n return _updateValid(true);\n\n case 36:\n isValid = _context7.sent;\n\n case 37:\n field._f.deps && trigger(field._f.deps);\n shouldRenderByError(false, name, isValid, _error2, fieldState);\n\n case 39:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7);\n }));\n\n return function onChange(_x15) {\n return _ref14.apply(this, arguments);\n };\n }();\n\n var trigger = /*#__PURE__*/function () {\n var _ref15 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee9(name) {\n var options,\n isValid,\n validationResult,\n fieldNames,\n errors,\n _args9 = arguments;\n return _regeneratorRuntime.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n options = _args9.length > 1 && _args9[1] !== undefined ? _args9[1] : {};\n fieldNames = convertToArrayPayload(name);\n\n _subjects.state.next({\n isValidating: true\n });\n\n if (!_options.resolver) {\n _context9.next = 11;\n break;\n }\n\n _context9.next = 6;\n return executeSchemaAndUpdateState(isUndefined(name) ? name : fieldNames);\n\n case 6:\n errors = _context9.sent;\n isValid = isEmptyObject(errors);\n validationResult = name ? !fieldNames.some(function (name) {\n return get(errors, name);\n }) : isValid;\n _context9.next = 21;\n break;\n\n case 11:\n if (!name) {\n _context9.next = 18;\n break;\n }\n\n _context9.next = 14;\n return Promise.all(fieldNames.map( /*#__PURE__*/function () {\n var _ref16 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee8(fieldName) {\n var field;\n return _regeneratorRuntime.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n field = get(_fields, fieldName);\n _context8.next = 3;\n return executeBuildInValidation(field && field._f ? _defineProperty({}, fieldName, field) : field);\n\n case 3:\n return _context8.abrupt(\"return\", _context8.sent);\n\n case 4:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee8);\n }));\n\n return function (_x17) {\n return _ref16.apply(this, arguments);\n };\n }()));\n\n case 14:\n validationResult = _context9.sent.every(Boolean);\n !(!validationResult && !_formState.isValid) && _updateValid();\n _context9.next = 21;\n break;\n\n case 18:\n _context9.next = 20;\n return executeBuildInValidation(_fields);\n\n case 20:\n validationResult = isValid = _context9.sent;\n\n case 21:\n _subjects.state.next(Object.assign(Object.assign(Object.assign({}, !isString(name) || _proxyFormState.isValid && isValid !== _formState.isValid ? {} : {\n name: name\n }), _options.resolver ? {\n isValid: isValid\n } : {}), {\n errors: _formState.errors,\n isValidating: false\n }));\n\n options.shouldFocus && !validationResult && focusFieldBy(_fields, function (key) {\n return get(_formState.errors, key);\n }, name ? fieldNames : _names.mount);\n return _context9.abrupt(\"return\", validationResult);\n\n case 24:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _callee9);\n }));\n\n return function trigger(_x16) {\n return _ref15.apply(this, arguments);\n };\n }();\n\n var getValues = function getValues(fieldNames) {\n var values = Object.assign(Object.assign({}, _defaultValues), _stateFlags.mount ? _formValues : {});\n return isUndefined(fieldNames) ? values : isString(fieldNames) ? get(values, fieldNames) : fieldNames.map(function (name) {\n return get(values, name);\n });\n };\n\n var getFieldState = function getFieldState(name, formState) {\n return {\n invalid: !!get((formState || _formState).errors, name),\n isDirty: !!get((formState || _formState).dirtyFields, name),\n isTouched: !!get((formState || _formState).touchedFields, name),\n error: get((formState || _formState).errors, name)\n };\n };\n\n var clearErrors = function clearErrors(name) {\n name ? convertToArrayPayload(name).forEach(function (inputName) {\n return unset(_formState.errors, inputName);\n }) : _formState.errors = {};\n\n _subjects.state.next({\n errors: _formState.errors\n });\n };\n\n var setError = function setError(name, error, options) {\n var ref = (get(_fields, name, {\n _f: {}\n })._f || {}).ref;\n set(_formState.errors, name, Object.assign(Object.assign({}, error), {\n ref: ref\n }));\n\n _subjects.state.next({\n name: name,\n errors: _formState.errors,\n isValid: false\n });\n\n options && options.shouldFocus && ref && ref.focus && ref.focus();\n };\n\n var watch = function watch(name, defaultValue) {\n return isFunction(name) ? _subjects.watch.subscribe({\n next: function next(info) {\n return name(_getWatch(undefined, defaultValue), info);\n }\n }) : _getWatch(name, defaultValue, true);\n };\n\n var unregister = function unregister(name) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var _iterator7 = _createForOfIteratorHelper(name ? convertToArrayPayload(name) : _names.mount),\n _step7;\n\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var fieldName = _step7.value;\n\n _names.mount.delete(fieldName);\n\n _names.array.delete(fieldName);\n\n if (get(_fields, fieldName)) {\n if (!options.keepValue) {\n unset(_fields, fieldName);\n unset(_formValues, fieldName);\n }\n\n !options.keepError && unset(_formState.errors, fieldName);\n !options.keepDirty && unset(_formState.dirtyFields, fieldName);\n !options.keepTouched && unset(_formState.touchedFields, fieldName);\n !_options.shouldUnregister && !options.keepDefaultValue && unset(_defaultValues, fieldName);\n }\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n\n _subjects.watch.next({});\n\n _subjects.state.next(Object.assign(Object.assign({}, _formState), !options.keepDirty ? {} : {\n isDirty: _getDirty()\n }));\n\n !options.keepIsValid && _updateValid();\n };\n\n var register = function register(name) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var field = get(_fields, name);\n var disabledIsDefined = isBoolean(options.disabled);\n set(_fields, name, {\n _f: Object.assign(Object.assign(Object.assign({}, field && field._f ? field._f : {\n ref: {\n name: name\n }\n }), {\n name: name,\n mount: true\n }), options)\n });\n\n _names.mount.add(name);\n\n field ? disabledIsDefined && set(_formValues, name, options.disabled ? undefined : get(_formValues, name, getFieldValue(field._f))) : updateValidAndValue(name, true, options.value);\n return Object.assign(Object.assign(Object.assign({}, disabledIsDefined ? {\n disabled: options.disabled\n } : {}), _options.shouldUseNativeValidation ? {\n required: !!options.required,\n min: getRuleValue(options.min),\n max: getRuleValue(options.max),\n minLength: getRuleValue(options.minLength),\n maxLength: getRuleValue(options.maxLength),\n pattern: getRuleValue(options.pattern)\n } : {}), {\n name: name,\n onChange: onChange,\n onBlur: onChange,\n ref: function (_ref18) {\n function ref(_x18) {\n return _ref18.apply(this, arguments);\n }\n\n ref.toString = function () {\n return _ref18.toString();\n };\n\n return ref;\n }(function (ref) {\n if (ref) {\n register(name, options);\n field = get(_fields, name);\n var fieldRef = isUndefined(ref.value) ? ref.querySelectorAll ? ref.querySelectorAll('input,select,textarea')[0] || ref : ref : ref;\n var radioOrCheckbox = isRadioOrCheckbox(fieldRef);\n var refs = field._f.refs || [];\n\n if (radioOrCheckbox ? refs.find(function (option) {\n return option === fieldRef;\n }) : fieldRef === field._f.ref) {\n return;\n }\n\n set(_fields, name, {\n _f: Object.assign(Object.assign({}, field._f), radioOrCheckbox ? {\n refs: [].concat(_toConsumableArray(refs.filter(live)), [fieldRef]),\n ref: {\n type: fieldRef.type,\n name: name\n }\n } : {\n ref: fieldRef\n })\n });\n updateValidAndValue(name, false, undefined, fieldRef);\n } else {\n field = get(_fields, name, {});\n\n if (field._f) {\n field._f.mount = false;\n }\n\n (_options.shouldUnregister || options.shouldUnregister) && !(isNameInFieldArray(_names.array, name) && _stateFlags.action) && _names.unMount.add(name);\n }\n })\n });\n };\n\n var handleSubmit = function handleSubmit(onValid, onInvalid) {\n return /*#__PURE__*/function () {\n var _ref19 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee10(e) {\n var hasNoPromiseError, fieldValues, _yield$_executeSchema3, errors, values;\n\n return _regeneratorRuntime.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n if (e) {\n e.preventDefault && e.preventDefault();\n e.persist && e.persist();\n }\n\n hasNoPromiseError = true;\n fieldValues = cloneObject(_formValues);\n\n _subjects.state.next({\n isSubmitting: true\n });\n\n _context10.prev = 4;\n\n if (!_options.resolver) {\n _context10.next = 15;\n break;\n }\n\n _context10.next = 8;\n return _executeSchema();\n\n case 8:\n _yield$_executeSchema3 = _context10.sent;\n errors = _yield$_executeSchema3.errors;\n values = _yield$_executeSchema3.values;\n _formState.errors = errors;\n fieldValues = values;\n _context10.next = 17;\n break;\n\n case 15:\n _context10.next = 17;\n return executeBuildInValidation(_fields);\n\n case 17:\n if (!(isEmptyObject(_formState.errors) && Object.keys(_formState.errors).every(function (name) {\n return get(fieldValues, name);\n }))) {\n _context10.next = 23;\n break;\n }\n\n _subjects.state.next({\n errors: {},\n isSubmitting: true\n });\n\n _context10.next = 21;\n return onValid(fieldValues, e);\n\n case 21:\n _context10.next = 27;\n break;\n\n case 23:\n if (!onInvalid) {\n _context10.next = 26;\n break;\n }\n\n _context10.next = 26;\n return onInvalid(Object.assign({}, _formState.errors), e);\n\n case 26:\n _options.shouldFocusError && focusFieldBy(_fields, function (key) {\n return get(_formState.errors, key);\n }, _names.mount);\n\n case 27:\n _context10.next = 33;\n break;\n\n case 29:\n _context10.prev = 29;\n _context10.t0 = _context10[\"catch\"](4);\n hasNoPromiseError = false;\n throw _context10.t0;\n\n case 33:\n _context10.prev = 33;\n _formState.isSubmitted = true;\n\n _subjects.state.next({\n isSubmitted: true,\n isSubmitting: false,\n isSubmitSuccessful: isEmptyObject(_formState.errors) && hasNoPromiseError,\n submitCount: _formState.submitCount + 1,\n errors: _formState.errors\n });\n\n return _context10.finish(33);\n\n case 37:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _callee10, null, [[4, 29, 33, 37]]);\n }));\n\n return function (_x19) {\n return _ref19.apply(this, arguments);\n };\n }();\n };\n\n var resetField = function resetField(name) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (get(_fields, name)) {\n if (isUndefined(options.defaultValue)) {\n setValue(name, get(_defaultValues, name));\n } else {\n setValue(name, options.defaultValue);\n set(_defaultValues, name, options.defaultValue);\n }\n\n if (!options.keepTouched) {\n unset(_formState.touchedFields, name);\n }\n\n if (!options.keepDirty) {\n unset(_formState.dirtyFields, name);\n _formState.isDirty = options.defaultValue ? _getDirty(name, get(_defaultValues, name)) : _getDirty();\n }\n\n if (!options.keepError) {\n unset(_formState.errors, name);\n _proxyFormState.isValid && _updateValid();\n }\n\n _subjects.state.next(Object.assign({}, _formState));\n }\n };\n\n var reset = function reset(formValues) {\n var keepStateOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var updatedValues = formValues || _defaultValues;\n var cloneUpdatedValues = cloneObject(updatedValues);\n var values = formValues && !isEmptyObject(formValues) ? cloneUpdatedValues : _defaultValues;\n\n if (!keepStateOptions.keepDefaultValues) {\n _defaultValues = updatedValues;\n }\n\n if (!keepStateOptions.keepValues) {\n if (isWeb && isUndefined(formValues)) {\n var _iterator8 = _createForOfIteratorHelper(_names.mount),\n _step8;\n\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var _name5 = _step8.value;\n var field = get(_fields, _name5);\n\n if (field && field._f) {\n var fieldReference = Array.isArray(field._f.refs) ? field._f.refs[0] : field._f.ref;\n\n try {\n isHTMLElement(fieldReference) && fieldReference.closest('form').reset();\n break;\n } catch (_a) {}\n }\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n }\n\n _formValues = props.shouldUnregister ? keepStateOptions.keepDefaultValues ? cloneObject(_defaultValues) : {} : cloneUpdatedValues;\n _fields = {};\n\n _subjects.array.next({\n values: values\n });\n\n _subjects.watch.next({\n values: values\n });\n }\n\n _names = {\n mount: new Set(),\n unMount: new Set(),\n array: new Set(),\n watch: new Set(),\n watchAll: false,\n focus: ''\n };\n _stateFlags.mount = !_proxyFormState.isValid || !!keepStateOptions.keepIsValid;\n _stateFlags.watch = !!props.shouldUnregister;\n\n _subjects.state.next({\n submitCount: keepStateOptions.keepSubmitCount ? _formState.submitCount : 0,\n isDirty: keepStateOptions.keepDirty ? _formState.isDirty : keepStateOptions.keepDefaultValues ? !deepEqual(formValues, _defaultValues) : false,\n isSubmitted: keepStateOptions.keepIsSubmitted ? _formState.isSubmitted : false,\n dirtyFields: keepStateOptions.keepDirty ? _formState.dirtyFields : keepStateOptions.keepDefaultValues && formValues ? Object.entries(formValues).reduce(function (previous, _ref20) {\n var _ref21 = _slicedToArray(_ref20, 2),\n key = _ref21[0],\n value = _ref21[1];\n\n return Object.assign(Object.assign({}, previous), _defineProperty({}, key, value !== get(_defaultValues, key)));\n }, {}) : {},\n touchedFields: keepStateOptions.keepTouched ? _formState.touchedFields : {},\n errors: keepStateOptions.keepErrors ? _formState.errors : {},\n isSubmitting: false,\n isSubmitSuccessful: false\n });\n };\n\n var setFocus = function setFocus(name) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var field = get(_fields, name)._f;\n\n var fieldRef = field.refs ? field.refs[0] : field.ref;\n options.shouldSelect ? fieldRef.select() : fieldRef.focus();\n };\n\n return {\n control: {\n register: register,\n unregister: unregister,\n getFieldState: getFieldState,\n _executeSchema: _executeSchema,\n _getWatch: _getWatch,\n _getDirty: _getDirty,\n _updateValid: _updateValid,\n _removeUnmounted: _removeUnmounted,\n _updateFieldArray: _updateFieldArray,\n _getFieldArray: _getFieldArray,\n _subjects: _subjects,\n _proxyFormState: _proxyFormState,\n\n get _fields() {\n return _fields;\n },\n\n get _formValues() {\n return _formValues;\n },\n\n get _stateFlags() {\n return _stateFlags;\n },\n\n set _stateFlags(value) {\n _stateFlags = value;\n },\n\n get _defaultValues() {\n return _defaultValues;\n },\n\n get _names() {\n return _names;\n },\n\n set _names(value) {\n _names = value;\n },\n\n get _formState() {\n return _formState;\n },\n\n set _formState(value) {\n _formState = value;\n },\n\n get _options() {\n return _options;\n },\n\n set _options(value) {\n _options = Object.assign(Object.assign({}, _options), value);\n }\n\n },\n trigger: trigger,\n register: register,\n handleSubmit: handleSubmit,\n watch: watch,\n setValue: setValue,\n getValues: getValues,\n reset: reset,\n resetField: resetField,\n clearErrors: clearErrors,\n unregister: unregister,\n setError: setError,\n setFocus: setFocus,\n getFieldState: getFieldState\n };\n}\n/**\r\n * Custom hook to mange the entire form.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/useform) • [Demo](https://codesandbox.io/s/react-hook-form-get-started-ts-5ksmm) • [Video](https://www.youtube.com/watch?v=RkXv4AXXC_4)\r\n *\r\n * @param props - form configuration and validation parameters.\r\n *\r\n * @returns methods - individual functions to manage the form state. {@link UseFormReturn}\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n * const { register, handleSubmit, watch, formState: { errors } } = useForm();\r\n * const onSubmit = data => console.log(data);\r\n *\r\n * console.log(watch(\"example\"));\r\n *\r\n * return (\r\n * \r\n * );\r\n * }\r\n * ```\r\n */\n\n\nfunction useForm() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _formControl = React.useRef();\n\n var _React$useState7 = React.useState({\n isDirty: false,\n isValidating: false,\n dirtyFields: {},\n isSubmitted: false,\n submitCount: 0,\n touchedFields: {},\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n errors: {}\n }),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n formState = _React$useState8[0],\n updateFormState = _React$useState8[1];\n\n if (_formControl.current) {\n _formControl.current.control._options = props;\n } else {\n _formControl.current = Object.assign(Object.assign({}, createFormControl(props)), {\n formState: formState\n });\n }\n\n var control = _formControl.current.control;\n var callback = React.useCallback(function (value) {\n if (shouldRenderFormState(value, control._proxyFormState, true)) {\n control._formState = Object.assign(Object.assign({}, control._formState), value);\n updateFormState(Object.assign({}, control._formState));\n }\n }, [control]);\n useSubscribe({\n subject: control._subjects.state,\n callback: callback\n });\n React.useEffect(function () {\n if (!control._stateFlags.mount) {\n control._proxyFormState.isValid && control._updateValid();\n control._stateFlags.mount = true;\n }\n\n if (control._stateFlags.watch) {\n control._stateFlags.watch = false;\n\n control._subjects.state.next({});\n }\n\n control._removeUnmounted();\n });\n _formControl.current.formState = getProxyFormState(formState, control._proxyFormState);\n return _formControl.current;\n}\n\nexport { Controller, FormProvider, appendErrors, get, set, useController, useFieldArray, useForm, useFormContext, useFormState, useWatch };","export default function formControlState(_ref) {\n var props = _ref.props,\n states = _ref.states,\n muiFormControl = _ref.muiFormControl;\n return states.reduce(function (acc, state) {\n acc[state] = props[state];\n\n if (muiFormControl) {\n if (typeof props[state] === 'undefined') {\n acc[state] = muiFormControl[state];\n }\n }\n\n return acc;\n }, {});\n}","import * as React from 'react';\nvar useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n/**\n * https://github.com/facebook/react/issues/14099#issuecomment-440013892\n *\n * @param {function} fn\n */\n\nexport default function useEventCallback(fn) {\n var ref = React.useRef(fn);\n useEnhancedEffect(function () {\n ref.current = fn;\n });\n return React.useCallback(function () {\n return (0, ref.current).apply(void 0, arguments);\n }, []);\n}","module.exports = __webpack_public_path__ + \"media/icon/icon-map-area-e33081c5.svg\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('modal',{attrs:{\"name\":\"photo-untakeable-modal\",\"clickToClose\":false,\"height\":\"80%\",\"width\":\"80%\"}},[_c('div',{staticClass:\"modal-header\"},[_c('h4',{staticClass:\"card-title\"},[_vm._v(\"本人確認時の注意事項\")])]),_vm._v(\" \"),_c('div',{staticClass:\"modal-body\"},[_vm._v(\"\\n 本サービスをご利用いただくためには、お使いのブラウザに対して\"),_c('br'),_vm._v(\" \"),_c('strong',[_vm._v(\"1.カメラの使用許可\")]),_c('br'),_vm._v(\" \"),_c('strong',[_vm._v(\"2.位置情報の取得許可\")]),_c('br'),_vm._v(\"\\n を出していただく必要がございます。\\n\\n \"),_c('br'),_vm._v(\" \"),_c('br'),_vm._v(\"\\n 下記の手順を元に利用許可を設定いただいた後、再度本ページを読み込んでください。\"),_c('br'),_c('br'),_vm._v(\" \"),_c('div',{staticClass:\"iframe-wrapper\"},[_c('iframe',{attrs:{\"src\":\"https://www.knt.co.jp/ec/2017/hannan-walk/gps.pdf\",\"frameborder\":\"0\",\"allow\":\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\",\"allowfullscreen\":\"\"}})])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotoUntakeableModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotoUntakeableModal.vue?vue&type=script&lang=js&\"","\n \n \n \n 本サービスをご利用いただくためには、お使いのブラウザに対して
\n
1.カメラの使用許可 \n
2.位置情報の取得許可 \n を出していただく必要がございます。\n\n
\n
\n 下記の手順を元に利用許可を設定いただいた後、再度本ページを読み込んでください。
\n
\n \n
\n\n\n
\n \n \n\n\n\n\n","import { render, staticRenderFns } from \"./PhotoUntakeableModal.vue?vue&type=template&id=515b405d&scoped=true&\"\nimport script from \"./PhotoUntakeableModal.vue?vue&type=script&lang=js&\"\nexport * from \"./PhotoUntakeableModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PhotoUntakeableModal.vue?vue&type=style&index=0&id=515b405d&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"515b405d\",\n null\n \n)\n\nexport default component.exports","export const propertyDirectionEnums = {\n north: \"北\",\n north_east: \"北東\",\n east: \"東\",\n south_east: \"南東\",\n south: \"南\",\n south_west: \"南西\",\n west: \"西\",\n north_west: \"北西\",\n};\n","export const imageTypeEnums = {\n layout: \"レイアウト\",\n appearance: \"外観\",\n entrance: \"エントランス\",\n shared: \"共有部\",\n hall: \"ホール\",\n living: \"リビング\",\n western_room: \"洋室\",\n japanese_room: \"和室\",\n toilet: \"トイレ\",\n bathroom: \"お風呂場\",\n kitchen: \"キッチン\",\n washroom: \"洗面所\",\n balcony: \"バルコニー\",\n closet: \"クローゼット\",\n};\n","export const propertyStructureEnums = {\n wooden: \"木造\",\n light_steel: \"軽量鉄骨\",\n heavy_steel: \"重量鉄鋼\",\n rc: \"鉄筋コンクリート\",\n src: \"鉄筋鉄骨コンクリート\"\n};\n","import React, { useState } from \"react\";\nimport { Button } from \"@material-ui/core\";\nimport BuildingType from \"./DetailConditions/BuildingType\";\nimport FloorType from \"./DetailConditions/FloorPlan\";\nimport Rent from \"./DetailConditions/Rent\";\nimport Structure from \"./DetailConditions/Structure\";\nimport WalkFromStation from \"./DetailConditions/WalkFromStation\";\nimport Particulars from \"./DetailConditions/Particulars\";\nimport iconCondition from \"../../../../assets/images/icon/icon_condition.svg\";\nimport iconSearch from \"../../../../assets/images/icon_search.svg\";\n\nconst DetailConditions = (props) => {\n const [rentConditions, setRentConditions] = useState({\n lower: 0,\n upper: 0,\n commonServiceFee: false,\n parkingFee: false,\n noKeyMoney: false,\n noDeposit: false,\n initialCostPayment: false,\n rentCostPayment: false,\n });\n const [floorTypeConditions, setFloorTypeConditions] = useState({\n oneRoom: false,\n oneK: false,\n oneDk: false,\n oneLdk: false,\n twoK: false,\n twoDk: false,\n twoLdk: false,\n threeK: false,\n threeDk: false,\n threeLdk: false,\n fourK: false,\n fourDk: false,\n fourLdk: false,\n upperFiveK: false,\n });\n const [buildingTypeConditions, setBuildingTypeConditions] = useState({\n largeApartment: false,\n apartment: false,\n detachedHouse: false,\n });\n const [structureConditions, setStructure] = useState({\n reinforcingBar: false,\n steelFrame: false,\n wooden: false,\n block: false,\n });\n const [walkFromStationCondition, setWalkFromStationCondition] = useState(\"1\");\n const [particularConditions, setParticularConditions] = useState({\n firstFloor: false,\n upperSecondFloor: false,\n topFloor: false,\n cornerRoom: false,\n southFacing: false,\n towerApartment: false,\n barrierFree: false,\n designers: false,\n specifiedExcellentRentalHousing: false,\n immediateMoveIn: false,\n noGuarantor: false,\n musicalInstrument: false,\n officeAvailable: false,\n womenOnly: false,\n withFurnitureAppliances: false,\n bath: false,\n gasStove: false,\n ihStove: false,\n twoOrMoreStoves: false,\n systemKitchen: false,\n counterKitchen: false,\n isRefrigerator: false,\n bathAndToiletSeparated: false,\n reheating: false,\n independentWashroom: false,\n warmWaterWashingToilet: false,\n bathroomDryer: false,\n isToilet: false,\n airConditioner: false,\n floorHeating: false,\n gasHeating: false,\n oilHeating: false,\n walkInCloset: false,\n underfloorStorage: false,\n trunkRoom: false,\n internetConnection: false,\n csAntenna: false,\n bsAntenna: false,\n catv: false,\n wiredBroadcasting: false,\n deliveryBox: false,\n doorPhone: false,\n autoLock: false,\n isCaretaker: false,\n isElevator: false,\n flooring: false,\n indoorWashingMachineStorage: false,\n cityGas: false,\n propaneGas: false,\n allElectric: false,\n privateGarden: false,\n bayWindow: false,\n balcony: false,\n withLoft: false,\n tiling: false,\n });\n\n const handleRentConditions = (event) => {\n let val = event.target.checked;\n if (event.target.id === \"lower\" || event.target.id === \"upper\") {\n val = event.target.value;\n }\n setRentConditions({\n ...rentConditions,\n [event.target.id]: val,\n });\n };\n const handleFloorTypeConditions = (event) => {\n setFloorTypeConditions({\n ...floorTypeConditions,\n [event.target.id]: event.target.checked,\n });\n };\n const handleStructureConditions = (event) => {\n setStructure({\n ...structureConditions,\n [event.target.id]: event.target.checked,\n });\n };\n\n const handleBuildingTypeConditions = (event) => {\n setBuildingTypeConditions({\n ...buildingTypeConditions,\n [event.target.id]: event.target.checked,\n });\n };\n const handleParticularConditions = (event) => {\n setParticularConditions({\n ...particularConditions,\n [event.target.id]: event.target.checked,\n });\n };\n\n const handleWalkFromStationCondition = (value) => {\n setWalkFromStationCondition(value);\n };\n\n return (\n \n
\n\n
\n \n 条件を絞り込む\n \n
\n
\n\n
\n
\n
\n \n 検索する\n \n
\n
\n
\n
\n );\n};\n\nexport default DetailConditions;\n","/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nexport default function useControlled(_ref) {\n var controlled = _ref.controlled,\n defaultProp = _ref.default,\n name = _ref.name,\n _ref$state = _ref.state,\n state = _ref$state === void 0 ? 'value' : _ref$state;\n\n var _React$useRef = React.useRef(controlled !== undefined),\n isControlled = _React$useRef.current;\n\n var _React$useState = React.useState(defaultProp),\n valueState = _React$useState[0],\n setValue = _React$useState[1];\n\n var value = isControlled ? controlled : valueState;\n\n if (process.env.NODE_ENV !== 'production') {\n React.useEffect(function () {\n if (isControlled !== (controlled !== undefined)) {\n console.error([\"Material-UI: A component is changing the \".concat(isControlled ? '' : 'un', \"controlled \").concat(state, \" state of \").concat(name, \" to be \").concat(isControlled ? 'un' : '', \"controlled.\"), 'Elements should not switch from uncontrolled to controlled (or vice versa).', \"Decide between using a controlled or uncontrolled \".concat(name, \" \") + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render, it's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n }\n }, [controlled]);\n\n var _React$useRef2 = React.useRef(defaultProp),\n defaultValue = _React$useRef2.current;\n\n React.useEffect(function () {\n if (!isControlled && defaultValue !== defaultProp) {\n console.error([\"Material-UI: A component is changing the default \".concat(state, \" state of an uncontrolled \").concat(name, \" after being initialized. \") + \"To suppress this warning opt to use a controlled \".concat(name, \".\")].join('\\n'));\n }\n }, [JSON.stringify(defaultProp)]);\n }\n\n var setValueIfUncontrolled = React.useCallback(function (newValue) {\n if (!isControlled) {\n setValue(newValue);\n }\n }, []);\n return [value, setValueIfUncontrolled];\n}","import React, {useState} from 'react'\nimport Slider from \"react-slick\";\nimport \"slick-carousel/slick/slick.css\";\nimport \"slick-carousel/slick/slick-theme.css\";\nimport iconArrow from \"../../../../assets/images/icon/icon-arrow-left.svg\";\nimport { imageTypeEnums } from \"../../enums/imageType\";\n\nconst PropertyModal = ({ room_images, setModalAppear }) => {\n const sliderSettings = {\n infinite: true,\n speed: 500,\n slidesToShow: 1,\n centerMode: true,\n centerPadding: \"0px\",\n slidesToScroll: 1,\n arrows: true,\n asNavFor: \".slider-nav\",\n responsive: [\n {\n breakpoint: 767,\n settings: {\n slidesToShow: 1,\n },\n },\n ],\n };\n\n const sliderNavSettings = {\n infinite: true,\n speed: 500,\n slidesToShow: room_images.length,\n slidesToScroll: 1,\n arrows: true,\n asNavFor: \".slider-for\",\n dots: true,\n centerMode: true,\n focusOnSelect: true,\n };\n\n const [slider1, setSlider1] = useState(null);\n const [slider2, setSlider2] = useState(null);\n\n return (\n <>\n \n
\n
\n
\n
{\n setModalAppear((prev) => !prev);\n }}\n >\n
\n お部屋情報に戻る\n
\n
\n 1/{room_images.length}\n
\n
\n
setSlider1(slider)}\n className=\"slider-for PropertiesModalBlackSlider_for\"\n >\n {room_images.map((value, index) => (\n \n
\n
\n
\n
{imageTypeEnums[value.role]}
\n
\n ))}\n \n
setSlider1(slider)}\n className=\"slider-nav PropertiesModalBlackSlider_nav\"\n >\n {room_images.map((value, index) => (\n \n
\n
\n ))}\n \n
\n
\n
\n >\n );\n};\nexport default PropertyModal;","import React from \"react\";\nimport { useSetRecoilState } from \"recoil\";\nimport Map2 from \"./Map2\";\nimport { modalShowState, streetViewShowState } from \"./state\";\n\nconst StreetViewModal = (props) => {\n const setShowStreetView = useSetRecoilState(streetViewShowState);\n const setModalShow = useSetRecoilState(modalShowState);\n const googleMapsApiKey = process.env.GOOGLE_MAPS_API_KEY_202210;\n\n return (\n <>\n \n
\n
\n
{\n setShowStreetView(false);\n setModalShow(true);\n }}\n >\n
\n お部屋情報に戻る\n
\n
\n 地図アプリを開く\n \n
\n
\n
\n
\n >\n );\n};\n\nexport default StreetViewModal;\n","import React, {useState} from \"react\";\nimport VideoPlayer from \"../../VideoPlayer/VideoPlayer\";\nimport Slider from \"react-slick\";\nimport \"slick-carousel/slick/slick.css\";\nimport \"slick-carousel/slick/slick-theme.css\";\nimport { roomLayoutEnums } from \"../../../enums/layouts\";\nimport { propertyStructureEnums } from \"../../../enums/structure\";\nimport { propertyDirectionEnums } from \"../../../enums/direction\";\nimport { feeUnitEnums } from \"../../../enums/unit\";\nimport moment from \"moment\";\nimport { Tab, Tabs, TabList, TabPanel } from \"react-tabs\";\nimport { imageTypeEnums } from \"../../../enums/imageType\";\nimport PropertyModal from \"../../top/PropertyModal\";\nimport comingSoon from \"../../../../../assets/images/coming_soon\";\nimport { propertyKindEnums } from \"../../../enums/propertyKind\";\nimport MapViewModal from \"./MapViewModal\";\nimport { useRecoilState } from \"recoil\";\nimport { streetViewShowState } from \"../state\";\nimport StreetViewModal from \"../StreetViewModal\";\n\n\nexport const Modal = ({\n showModal,\n setShowModal,\n room,\n property,\n property_accesses,\n contracts,\n room_images,\n room_movie_url,\n property_movie_url\n}) => {\n const handleGoToReservation = () => {\n location.href = `/reservations/${room.id}`;\n };\n const elapsedYearsAndMonth = (year, month) => {\n const nowDate = new Date();\n const buildingDate = new Date(1970, 0, 1);\n buildingDate.setTime(nowDate.getTime() - buildingDate.getTime());\n let elapsedYear = buildingDate.getUTCFullYear() - year;\n let elapsedMonth = buildingDate.getUTCMonth() - (month - 1);\n if (elapsedMonth < 0) {\n elapsedYear--;\n elapsedMonth += 12;\n }\n return `${year}年${month}月(築${elapsedYear}年${elapsedMonth}ヶ月)`;\n };\n\n const [isStreetView, setShowStreetView] = useRecoilState(streetViewShowState);\n const photo = [1, 2, 3, 4, 5];\n var thumbnail = photo.length;\n if (thumbnail >= 16) {\n thumbnail = 16;\n }\n\n const sliderSettings = {\n infinite: true,\n speed: 500,\n slidesToShow: 1,\n centerMode: true,\n centerPadding: \"0px\",\n slidesToScroll: 1,\n arrows: true,\n asNavFor: \".slider-nav\",\n responsive: [\n {\n breakpoint: 767,\n settings: {\n slidesToShow: 1,\n },\n },\n ],\n };\n\n const sliderNavSettings = {\n infinite: true,\n speed: 500,\n slidesToShow: room_images.length,\n slidesToScroll: 1,\n arrows: true,\n asNavFor: \".slider-for\",\n dots: true,\n centerMode: true,\n focusOnSelect: true,\n };\n\n const [tabIndex, setTabIndex] = useState(0);\n const underline = {\n borderBottom: \"solid 3px #04bfad\",\n fontWeight: \"bold\",\n width: \"100%\",\n marginBottom: \"0px\",\n paddingBottom: \"1px\",\n outline: \"none\",\n };\n\n const [slider1, setSlider1] = useState(null);\n const [slider2, setSlider2] = useState(null);\n\n const [ModalAppear, setModalAppear] = useState(false);\n\n const oheyaGirlVideo = room_movie_url.filter(\n (item) => item.role === \"oheya_girl\"\n );\n const interiorVideo = room_movie_url.filter(\n (item) => item.role === \"interior\"\n );\n const appearanceVideo = property_movie_url.filter(\n (item) => item.role === \"appearance\"\n );\n const sharedVideo = property_movie_url.filter(\n (item) => item.role === \"shared\"\n );\n const surroundingVideo = property_movie_url.filter(\n (item) => item.role === \"surrounding\"\n );\n\n const moreThanSecondFloor = room.features.filter(\n (item) => item.name === \"2階以上の部屋\"\n );\n const havePets = room.features.filter(\n (item) => item.name === \"ペット相談\"\n );\n const separateBath = room.features.filter(\n (item) => item.name === \"バス・トイレ別\"\n );\n const reHeating = room.features.filter(\n (item) => item.name === \"追い焚き\"\n );\n const washroom = room.features.filter(\n (item) => item.name === \"洗面所独立\"\n );\n const airConditioner = room.features.filter(\n (item) => item.name === \"エアコン\"\n );\n const deliverBox = room.features.filter(\n (item) => item.name === \"宅配ボックス\"\n );\n const washingMachine = room.features.filter(\n (item) => item.name === \"室内洗濯機置き場\"\n );\n const autoLock = room.features.filter(\n (item) => item.name === \"オートロック\"\n );\n\n const bathAndToilet = room.features.filter(\n (item) =>\n item.name === \"バス・トイレ別\" ||\n item.name === \"追い焚き\" ||\n item.name === \"洗面所独立\" ||\n item.name === \"温水洗浄便座\" ||\n item.name === \"浴室乾燥機\" ||\n item.name === \"トイレあり\"\n );\n\n const kitchen = room.features.filter(\n (item) =>\n item.name === \"ガスコンロ\" ||\n item.name === \"IHコンロ\" ||\n item.name === \"コンロ二口以上\" ||\n item.name === \"システムキッチン\" ||\n item.name === \"カウンターキッチン\" ||\n item.name === \"冷蔵庫あり\" ||\n item.name === \"都市ガス\" ||\n item.name === \"プロパンガス\" ||\n item.name === \"オール電化\"\n );\n\n const security = room.features.filter(\n (item) =>\n item.name === \"モニタ付きドアホン\" ||\n item.name === \"オートロック\" ||\n item.name === \"管理人あり\"\n );\n\n const insideFacility = room.features.filter(\n (item) =>\n item.name === \"家具家電付き\" ||\n item.name === \"エアコン\" ||\n item.name === \"床暖房\" ||\n item.name === \"ガス暖房\" ||\n item.name === \"石油暖房\" ||\n item.name === \"ウォークインクローゼット\" ||\n item.name === \"床下収納\" ||\n item.name === \"トランクルーム\" ||\n item.name === \"インターネット接続\" ||\n item.name === \"CSアンテナ\" ||\n item.name === \"BSアンテナ\" ||\n item.name === \"CATV\" ||\n item.name === \"有線放送\" ||\n item.name === \"フローリング\" ||\n item.name === \"室内洗濯機置き場\" ||\n item.name === \"専用庭\" ||\n item.name === \"出窓\" ||\n item.name === \"バルコニー\" ||\n item.name === \"ロフト付き\" ||\n item.name === \"タイル貼り\"\n );\n\n const sharing = room.features.filter(\n (item) =>\n item.name === \"宅配ボックス\" ||\n item.name === \"エレベーターあり\"\n );\n\n const others = room.features.filter(\n (item) =>\n item.name === \"1階の部屋\" ||\n item.name === \"2階以上の部屋\" ||\n item.name === \"最上階の部屋\" ||\n item.name === \"角部屋\" ||\n item.name === \"南向き\" ||\n item.name === \"タワーマンション\" ||\n item.name === \"バリアフリー\" ||\n item.name === \"デザイナーズ\" ||\n item.name === \"特定優良賃貸住宅\" ||\n item.name === \"ペット相談\" ||\n item.name === \"2人入居可\" ||\n item.name === \"即入居可\" ||\n item.name === \"保証人不要\" ||\n item.name === \"楽器相談\" ||\n item.name === \"事務所可\" ||\n item.name === \"女性限定\"\n );\n\n const handleToDate = (date) => {\n date = new Date(date);\n if (date.getMinutes() < 10) {\n date =\n date.getFullYear() +\n \"/\" +\n ((date.getMonth() % 12) + 1) +\n \"/\" +\n date.getDate() +\n \" \";\n } else {\n date =\n date.getFullYear() +\n \"/\" +\n ((date.getMonth() % 12) + 1) +\n \"/\" +\n date.getDate() +\n \" \";\n }\n\n return date;\n };\n\n const [mapViewModal, setMapViewModal] = useState(false);\n\n return (\n <>\n \n
\n
\n
\n
\n {property.name} {room.name}\n \n
{\n setShowModal((prev) => !prev);\n }}\n className=\"PropertiesModal_close\"\n >\n \n \n
\n
\n {/*動画エリア*/}\n
\n
setTabIndex(index)}\n >\n \n \n \n TikTok\n
\n \n \n 内観
\n \n \n 外観
\n \n \n \n 共有部\n
\n \n \n \n 周辺環境\n
\n \n \n\n \n {oheyaGirlVideo.length === 0 ? (\n \n ) : (\n \n )}\n \n \n {interiorVideo.length === 0 ? (\n \n ) : (\n \n )}\n \n \n {appearanceVideo.length === 0 ? (\n \n ) : (\n \n )}\n \n \n {sharedVideo.length === 0 ? (\n \n ) : (\n \n )}\n \n \n {surroundingVideo.length === 0 ? (\n \n ) : (\n \n )}\n \n \n {/*動画カテゴリタブ end*/}\n
\n {/*動画エリア end*/}\n\n {/*概要*/}\n
\n
\n \n {contracts[0]?.rent ? (\n {(contracts[0].rent / 10000).toFixed(1)} \n ) : (\n \" お問い合わせください \"\n )}\n {contracts[0]?.rent && \"万円\"}\n \n \n (管理費\n \n {contracts[0]?.management_fee ? (\n <>{contracts[0]?.management_fee.toLocaleString()}>\n ) : (\n \" \"\n )}\n \n 円)\n \n
\n
\n
\n
\n
敷金
\n
\n \n {contracts[0]?.shikikin && contracts[0]?.shikikin}{\" \"}\n {contracts[0]?.shikikin &&\n feeUnitEnums[contracts[0]?.shikikin_unit]}\n
\n \n
\n
\n
礼金
\n
\n \n {contracts[0]?.reikin && contracts[0]?.reikin}{\" \"}\n {contracts[0]?.reikin &&\n feeUnitEnums[contracts[0]?.reikin_unit]}\n
\n \n
\n
\n
\n
\n
間取り
\n
\n {room?.layout && roomLayoutEnums[room.layout]}\n
\n
\n
\n
面積
\n
\n {room?.size && room?.size}\n
\n
\n
\n
\n
\n
階建
\n
\n {room?.floor && room?.floor}階 /{\" \"}\n {property?.floor && property?.floor}階\n
\n
\n
\n
種別
\n
\n {property?.kind && propertyKindEnums[property?.kind]}\n
\n
\n
\n
\n \n
\n
\n \n
\n\n
\n
{\n setMapViewModal(true);\n }}\n >\n
\n 地図を見る\n
\n
{\n setShowStreetView(true);\n }}\n >\n
\n ストリートビューを見る\n
\n
\n\n {/*
*/}\n {/*
*/}\n {property_accesses?.map((item) => {\n return (\n
\n
\n
交通 \n
\n {item.station_master.station_line_master.name} /{\" \"}\n {item.station_master.name}駅 徒歩{item.walkby}分\n
\n
\n
\n );\n })}\n {/*
*/}\n
\n
\n {/*概要 end*/}\n\n
\n\n
\n
setSlider1(slider)}\n className=\"slider-for PropertiesModalSlickDefault_for\"\n >\n {room_images.map((value, index) => (\n \n
\n
{\n setModalAppear(true);\n }}\n />\n
\n
{imageTypeEnums[value.role]}
\n
\n ))}\n \n\n
setSlider1(slider)}\n className=\"slider-nav PropertiesModalSlickDefault_nav\"\n >\n {room.room_images.map((value, index) => (\n \n
{\n setModalAppear(true);\n }}\n />\n
\n ))}\n \n
\n\n
\n
\n
\n 良いところあるじゃん!\n
\n
\n
\n
\n
\n\n
\n
\n {separateBath.length === 0 ? (\n <>\n
\n
\n バストイレ別\n
\n >\n ) : (\n <>\n
\n
バストイレ別
\n >\n )}\n
\n
\n {reHeating.length === 0 ? (\n <>\n
\n
\n 追い焚き機能\n
\n >\n ) : (\n <>\n
\n
追い焚き機能
\n >\n )}\n
\n
\n {washroom.length === 0 ? (\n <>\n
\n
\n 洗面所独立\n
\n >\n ) : (\n <>\n
\n
洗面所独立
\n >\n )}\n
\n
\n {washingMachine.length === 0 ? (\n <>\n
\n
\n 室内洗濯機置場\n
\n >\n ) : (\n <>\n
\n
室内洗濯機置場
\n >\n )}\n
\n
\n {airConditioner.length === 0 ? (\n <>\n
\n
エアコン
\n >\n ) : (\n <>\n
\n
エアコン
\n >\n )}\n
\n
\n {moreThanSecondFloor.length === 0 ? (\n <>\n
\n
2階以上
\n >\n ) : (\n <>\n
\n
2階以上
\n >\n )}\n
\n
\n {havePets.length === 0 ? (\n <>\n
\n
\n ペット相談可\n
\n >\n ) : (\n <>\n
\n
ペット相談可
\n >\n )}\n
\n
\n {deliverBox.length === 0 ? (\n <>\n
\n
\n 宅配ボックス\n
\n >\n ) : (\n <>\n
\n
宅配ボックス
\n >\n )}\n
\n
\n {property.have_parking === false ? (\n <>\n
\n
駐車場
\n >\n ) : (\n <>\n
\n
駐車場
\n >\n )}\n
\n
\n {autoLock.length === 0 ? (\n <>\n
\n
\n オートロック\n
\n >\n ) : (\n <>\n
\n
オートロック
\n >\n )}\n
\n
\n\n
\n
{room?.introduction && room?.introduction}
\n
\n\n
\n {room.features.map((item) => {\n return (\n
{item.name}
\n );\n })}\n
\n
\n\n
\n
費用
\n
\n
\n
賃料
\n
\n {contracts[0]?.rent ? (\n {(contracts[0]?.rent / 10000).toFixed(1)} \n ) : (\n \" お問い合わせください \"\n )}\n {contracts[0]?.rent && \"万円\"}\n
\n
\n
\n
管理費等
\n
\n {contracts[0]?.management_fee ? (\n <>{contracts[0]?.management_fee.toLocaleString()}>\n ) : (\n \" \"\n )}\n {contracts[0]?.management_fee && \"円\"}\n
\n
\n
\n
敷金
\n
\n {contracts[0]?.shikikin && contracts[0]?.shikikin}{\" \"}\n {contracts[0]?.shikikin &&\n feeUnitEnums[contracts[0]?.shikikin_unit]}\n
\n
\n
\n
保証金
\n
\n {contracts[0]?.guaranty_fee && contracts[0]?.guaranty_fee}{\" \"}\n {contracts[0]?.guaranty_fee &&\n feeUnitEnums[contracts[0]?.guaranty_fee_unit]}\n
\n
\n
\n
礼金
\n
\n {contracts[0]?.reikin && contracts[0]?.reikin}{\" \"}\n {contracts[0]?.reikin &&\n feeUnitEnums[contracts[0]?.reikin_unit]}\n
\n
\n
\n\n {/*
費用
\n
*/}\n\n
\n お部屋の設備・特徴\n
\n
\n
\n
バス・トイレ
\n
\n {bathAndToilet.map((item, i, arr) => {\n return (\n <>\n {item.name}\n {i != arr.length - 1 ? \"、 \" : \"\"}\n >\n );\n })}\n
\n
\n
\n
キッチン
\n
\n {kitchen.map((item, i, arr) => {\n return (\n <>\n {item.name}\n {i != arr.length - 1 ? \"、 \" : \"\"}\n >\n );\n })}\n
\n
\n
\n
セキュリティ
\n
\n {security.map((item, i, arr) => {\n return (\n <>\n {item.name}\n {i != arr.length - 1 ? \"、 \" : \"\"}\n >\n );\n })}\n
\n
\n
\n
室内設備
\n
\n {insideFacility.map((item, i, arr) => {\n return (\n <>\n {item.name}\n {i != arr.length - 1 ? \"、 \" : \"\"}\n >\n );\n })}\n
\n
\n
\n
共有部
\n
\n {sharing.map((item, i, arr) => {\n return (\n <>\n {item.name}\n {i != arr.length - 1 ? \"、 \" : \"\"}\n >\n );\n })}\n
\n
\n
\n
その他
\n
\n {others.map((item, i, arr) => {\n return (\n <>\n {item.name}\n {i != arr.length - 1 ? \"、 \" : \"\"}\n >\n );\n })}\n
\n
\n
\n\n
\n その他お部屋情報\n
\n
\n
\n
建物名・部屋
\n
\n {property.name} {room.name}\n
\n
\n
\n
階 / 階建
\n
\n {room?.floor && room?.floor}階 /{\" \"}\n {property?.floor && property?.floor}階\n
\n
\n
\n
間取り
\n
\n {room?.layout && roomLayoutEnums[room?.layout]}(\n {room?.layout_detail && room?.layout_detail})\n
\n
\n
\n
占有面積
\n
\n {room?.size && room?.size}㎡\n
\n
\n
\n
主要採光面
\n
\n {room?.direction &&\n propertyDirectionEnums[room?.direction]}\n
\n
\n
\n
物件種目
\n
\n {property?.kind && propertyKindEnums[property?.kind]}\n
\n
\n
\n
築年月
\n
\n {[\n elapsedYearsAndMonth(\n property.building_year,\n property.building_month\n ),\n ]}\n
\n
\n
\n
\n 建物構造・工法\n
\n
\n {property?.structure &&\n propertyStructureEnums[property?.structure]}\n
\n
\n
\n
契約期間
\n
\n {contracts[0]?.term && `${contracts[0]?.term}年`}\n
\n
\n
\n
\n
更新料
\n
\n {contracts[0]?.renewal_fee && contracts[0]?.renewal_fee}\n {contracts[0]?.renewal_fee_unit &&\n feeUnitEnums[contracts[0]?.renewal_fee_unit]}\n
\n
\n
\n
\n
\n\n
\n
\n
情報公開日
\n
\n {room.published_at && handleToDate(room.published_at)}\n
\n
\n {/*
\n
\n 次回更新予定日\n
\n
\n 2022年1月19日\n
\n
*/}\n
\n
物件番号
\n
\n {/* 12345678 */}\n {property.id}\n
\n
\n
\n\n {/*
\n その他お部屋情報\n
\n\n
\n
\n
\n 地図を見る\n
\n
\n
\n ストリートビューを見る\n
\n
\n\n
\n
\n
コンビニ
\n
\n ファミリーマート 渋谷駅前店まで191m(徒歩3分)\n
\n
\n
\n
\n ドラッグストア\n
\n
\n くすりの福太郎 渋谷駅前店まで453m(徒歩6分)\n
\n
\n
*/}\n
\n\n
\n\n
\n\n
\n
\n
\n
\n
メール で送る\n
\n
\n
\n
LINE で送る\n
\n
\n
\n
Twitter シェア\n
\n
\n
\n
Facebook シェア\n
\n
\n
\n
\n
\n\n {/*地図を見るモーダル*/}\n {/*
\n
\n
\n
\n お部屋情報に戻る\n
\n
地図アプリを開く
\n
\n
*/}\n {mapViewModal ? (\n
\n ) : null}\n {/*地図を見るモーダル end*/}\n\n {/*ストリートビューモーダル*/}\n {isStreetView &&
}\n {/*ストリートビューモーダル end*/}\n\n {/*画像を拡大モーダル*/}\n {/*
\n
\n
\n
\n お部屋情報に戻る\n
\n
1/10
\n
\n
\n {photo.map((value) => (\n \n
\n
\n
\n
{value}
\n
\n ))}\n \n
\n {photo.map((value) => (\n \n
\n
\n ))}\n \n
*/}\n {/*画像を拡大モーダル end*/}\n
\n
\n {/*\n
\n \n
\n
\n
{property.name}
\n
10.2万円(管理費8,000円)
\n
\n
\n
\n
\n
\n
\n
\n
\n \n 地図を見る\n \n \n ストリートビューを見る\n \n
\n
\n
\n
\n セルフ内見可能 \n \n 内見予約する\n \n 物件についてのお問い合わせ \n
\n
\n
\n \n
\n
\n
\n
*/}\n {ModalAppear ? (\n \n ) : null}\n >\n );\n};\nconst DetailItem = ({ label, values }) => (\n \n
{label} \n
\n {values.map((value, index) => (\n {value} \n ))}\n
\n
\n);","// TODO v5: consider to make it private\nexport default function setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\n\nvar FormControlContext = /*#__PURE__*/React.createContext();\n\nif (process.env.NODE_ENV !== 'production') {\n FormControlContext.displayName = 'FormControlContext';\n}\n\nexport function useFormControl() {\n return React.useContext(FormControlContext);\n}\nexport default FormControlContext;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return function () {\n return null;\n };\n }\n\n return function (props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<>';\n var propFullNameSafe = propFullName || propName;\n\n if (typeof props[propName] !== 'undefined') {\n return new Error(\"The \".concat(location, \" `\").concat(propFullNameSafe, \"` of \") + \"`\".concat(componentNameSafe, \"` is deprecated. \").concat(reason));\n }\n\n return null;\n };\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FetchLocation.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FetchLocation.vue?vue&type=script&lang=js&\"","\n \n
\n \n\n\n\n\n","import { render, staticRenderFns } from \"./FetchLocation.vue?vue&type=template&id=0ff7de2c&scoped=true&\"\nimport script from \"./FetchLocation.vue?vue&type=script&lang=js&\"\nexport * from \"./FetchLocation.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0ff7de2c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('modal',{attrs:{\"name\":\"location-incorrect-modal\",\"clickToClose\":false,\"height\":\"80%\",\"width\":\"80%\"}},[_c('div',{staticClass:\"modal-header\"},[_c('h4',{staticClass:\"card-title\"},[_vm._v(\"位置情報が正しくありません\")])]),_vm._v(\" \"),_c('div',{staticClass:\"modal-body\"},[_vm._v(\"\\n 取得した位置情報と、鍵の設置位置が合致しません。\\n \"),_c('br'),_vm._v(\" \"),_c('br'),_vm._v(\"\\n 鍵の設置場所まで移動した後、再度本画面を読み込み、顔認証を進めてください。\\n \"),_c('br')])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocationIncorrectModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocationIncorrectModal.vue?vue&type=script&lang=js&\"","\n \n \n \n 取得した位置情報と、鍵の設置位置が合致しません。\n \n \n 鍵の設置場所まで移動した後、再度本画面を読み込み、顔認証を進めてください。\n \n
\n \n \n\n\n\n\n\n","import { render, staticRenderFns } from \"./LocationIncorrectModal.vue?vue&type=template&id=d480a224&scoped=true&\"\nimport script from \"./LocationIncorrectModal.vue?vue&type=script&lang=js&\"\nexport * from \"./LocationIncorrectModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LocationIncorrectModal.vue?vue&type=style&index=0&id=d480a224&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d480a224\",\n null\n \n)\n\nexport default component.exports","/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @param {function} functions to chain\n * @returns {function|null}\n */\nexport default function createChainedFunction() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n return funcs.reduce(function (acc, func) {\n if (func == null) {\n return acc;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof func !== 'function') {\n console.error('Material-UI: Invalid Argument Type, must only provide functions, undefined, or null.');\n }\n }\n\n return function chainedFunction() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, function () {});\n}","import { useState as n, useEffect as e } from \"react\";\n\nvar t = function t(e) {\n var t = n(!!e),\n r = t[1];\n return [t[0], function () {\n return r(function (n) {\n return !n;\n });\n }];\n},\n r = function r(n, e) {\n return n[e];\n},\n i = function i(e) {\n var t = n(e),\n i = t[1];\n return [t[0], function (n) {\n var e = n.target,\n t = e.name,\n o = e.value,\n u = e.checked,\n a = \"checkbox\" === e.type;\n i(function (n) {\n var e = JSON.parse(JSON.stringify(n)),\n i = t.split(\".\"),\n c = i.slice(0, -1),\n s = i.slice(-1)[0];\n return c.reduce(r, e)[s] = a ? u : o, e;\n });\n }];\n},\n o = function o(n) {\n throw new Error(n);\n},\n u = function u(n, e) {\n return n.findIndex(function (n) {\n return n.id === e;\n });\n},\n a = function a(t) {\n var r = t.initialStep;\n void 0 === r && (r = 0);\n var i = t.autoAdvanceDuration;\n void 0 === i && (i = 0);\n var a = t.steps;\n \"production\" !== process.env.NODE_ENV && (Array.isArray(a) || Number.isInteger(a) || o(\"useStep: You must specify either an array or an integer for `steps`\"));\n var c = \"number\" == typeof a ? new Array(a).fill({}) : a,\n s = \"number\" == typeof r ? r : u(c, r);\n \"production\" !== process.env.NODE_ENV && \"string\" == typeof r && -1 === s && o('useStep: id of \"' + r + '\" specified in initialStep not found in steps');\n var f = n(s),\n p = f[0],\n v = f[1],\n d = n(!1),\n l = d[0],\n g = d[1],\n y = c[p],\n m = y.autoAdvanceDuration;\n void 0 === m && (m = i);\n\n var N = function N(n) {\n void 0 === n && (n = 1), v((p + c.length + n) % c.length);\n };\n\n return e(function () {\n var n = !l && m ? setTimeout(N, m) : null;\n return function () {\n return clearTimeout(n);\n };\n }, [p, l]), {\n autoAdvanceDuration: m,\n isPaused: l,\n index: p,\n step: y,\n navigation: {\n next: function next() {\n return N(1);\n },\n previous: function previous() {\n return N(-1);\n },\n go: function go(n) {\n if (\"number\" == typeof n) \"production\" !== process.env.NODE_ENV && (n < 0 || n > c.length) && o(\"useStep: Index out of range in go(\" + n + \")\"), v(n);else {\n var e = u(c, n);\n \"production\" !== process.env.NODE_ENV && -1 === e && o('useStep: go(\"' + n + '\") not found in steps'), v(e);\n }\n },\n play: function play() {\n return g(!1);\n },\n pause: function pause() {\n return g(!0);\n }\n }\n };\n},\n c = function c(n, e) {\n void 0 === n && (n = 0), void 0 === e && (e = [5e3, 4e3, 1e3]);\n var t = e.map(function (n) {\n return {\n autoAdvanceDuration: n\n };\n });\n return a({\n initialStep: n,\n steps: t\n }).index;\n};\n\nexport { t as useNot, i as useForm, c as useTrafficLight, a as useStep };","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\n\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n * if the first argument is not an instance of Date.\n * Instead, argument is converted beforehand using `toDate`.\n *\n * Examples:\n *\n * | `isValid` argument | Before v2.0.0 | v2.0.0 onward |\n * |---------------------------|---------------|---------------|\n * | `new Date()` | `true` | `true` |\n * | `new Date('2016-01-01')` | `true` | `true` |\n * | `new Date('')` | `false` | `false` |\n * | `new Date(1488370835081)` | `true` | `true` |\n * | `new Date(NaN)` | `false` | `false` |\n * | `'2016-01-01'` | `TypeError` | `false` |\n * | `''` | `TypeError` | `false` |\n * | `1488370835081` | `TypeError` | `true` |\n * | `NaN` | `TypeError` | `false` |\n *\n * We introduce this change to make *date-fns* consistent with ECMAScript behavior\n * that try to coerce arguments to the expected type\n * (which is also the case with other *date-fns* functions).\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\n\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\n\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n\n return result;\n};\n\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; // TODO: Remove String()\n\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\n\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {};\n var context = options.context ? String(options.context) : 'standalone';\n var valuesArray;\n\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n\n var _width = options.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex; // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n\n return valuesArray[index];\n };\n}","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\n\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n\n return undefined;\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\n\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0\n /* Sunday */\n ,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n}; // Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\n\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\n\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n\n case 2:\n return number + 'nd';\n\n case 3:\n return number + 'rd';\n }\n }\n\n return number + 'th';\n};\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\n\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, dirtyOptions);\n return date;\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n\n while (output.length < targetLength) {\n output = '0' + output;\n }\n\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n\n case 'aaa':\n return dayPeriodEnumValue;\n\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n } // Ordinal number\n\n\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n } // Padding\n\n\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return 'Z';\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n\n if (minutes === 0) {\n return sign + String(hours);\n }\n\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n\n return formatTimezone(offset, dirtyDelimiter);\n}\n\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n}\n\nfunction timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n}\n\nfunction dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n var dateTimeFormat;\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n}\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n }\n}","import isValid from \"../isValid/index.js\";\nimport defaultLocale from \"../locale/en-US/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n * ```javascript\n * // Before v2.0.0\n * format(new Date(2016, 0, 1))\n *\n * // v2.0.0 onward\n * format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n * ```\n *\n * - New format string API for `format` function\n * which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).\n * See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n\n\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, formatterOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n\n var firstCharacter = substring[0];\n\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n\n var formatter = formatters[firstCharacter];\n\n if (formatter) {\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n }\n\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n return substring;\n }).join('');\n return result;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */\n;\n(function () {\n var context = this;\n (function () {\n (function () {\n this.Rails = {\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n buttonClickSelector: {\n selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n exclude: 'form button'\n },\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n formSubmitSelector: 'form:not([data-turbo=true])',\n formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n };\n }).call(this);\n }).call(context);\n var Rails = context.Rails;\n (function () {\n (function () {\n var nonce;\n nonce = null;\n\n Rails.loadCSPNonce = function () {\n var ref;\n return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n };\n\n Rails.cspNonce = function () {\n return nonce != null ? nonce : Rails.loadCSPNonce();\n };\n }).call(this);\n (function () {\n var expando, m;\n m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\n Rails.matches = function (element, selector) {\n if (selector.exclude != null) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n };\n\n expando = '_ujsData';\n\n Rails.getData = function (element, key) {\n var ref;\n return (ref = element[expando]) != null ? ref[key] : void 0;\n };\n\n Rails.setData = function (element, key, value) {\n if (element[expando] == null) {\n element[expando] = {};\n }\n\n return element[expando][key] = value;\n };\n\n Rails.$ = function (selector) {\n return Array.prototype.slice.call(document.querySelectorAll(selector));\n };\n }).call(this);\n (function () {\n var $, csrfParam, csrfToken;\n $ = Rails.$;\n\n csrfToken = Rails.csrfToken = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-token]');\n return meta && meta.content;\n };\n\n csrfParam = Rails.csrfParam = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-param]');\n return meta && meta.content;\n };\n\n Rails.CSRFProtection = function (xhr) {\n var token;\n token = csrfToken();\n\n if (token != null) {\n return xhr.setRequestHeader('X-CSRF-Token', token);\n }\n };\n\n Rails.refreshCSRFTokens = function () {\n var param, token;\n token = csrfToken();\n param = csrfParam();\n\n if (token != null && param != null) {\n return $('form input[name=\"' + param + '\"]').forEach(function (input) {\n return input.value = token;\n });\n }\n };\n }).call(this);\n (function () {\n var CustomEvent, fire, matches, preventDefault;\n matches = Rails.matches;\n CustomEvent = window.CustomEvent;\n\n if (typeof CustomEvent !== 'function') {\n CustomEvent = function CustomEvent(event, params) {\n var evt;\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n\n CustomEvent.prototype = window.Event.prototype;\n preventDefault = CustomEvent.prototype.preventDefault;\n\n CustomEvent.prototype.preventDefault = function () {\n var result;\n result = preventDefault.call(this);\n\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function get() {\n return true;\n }\n });\n }\n\n return result;\n };\n }\n\n fire = Rails.fire = function (obj, name, data) {\n var event;\n event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n };\n\n Rails.stopEverything = function (e) {\n fire(e.target, 'ujs:everythingStopped');\n e.preventDefault();\n e.stopPropagation();\n return e.stopImmediatePropagation();\n };\n\n Rails.delegate = function (element, selector, eventType, handler) {\n return element.addEventListener(eventType, function (e) {\n var target;\n target = e.target;\n\n while (!(!(target instanceof Element) || matches(target, selector))) {\n target = target.parentNode;\n }\n\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n return e.stopPropagation();\n }\n });\n };\n }).call(this);\n (function () {\n var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n AcceptHeaders = {\n '*': '*/*',\n text: 'text/plain',\n html: 'text/html',\n xml: 'application/xml, text/xml',\n json: 'application/json, text/javascript',\n script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n };\n\n Rails.ajax = function (options) {\n var xhr;\n options = prepareOptions(options);\n xhr = createXHR(options, function () {\n var ref, response;\n response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n });\n\n if (options.beforeSend != null && !options.beforeSend(xhr, options)) {\n return false;\n }\n\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n };\n\n prepareOptions = function prepareOptions(options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n\n if (options.type === 'GET' && options.data) {\n if (options.url.indexOf('?') < 0) {\n options.url += '?' + options.data;\n } else {\n options.url += '&' + options.data;\n }\n }\n\n if (AcceptHeaders[options.dataType] == null) {\n options.dataType = '*';\n }\n\n options.accept = AcceptHeaders[options.dataType];\n\n if (options.dataType !== '*') {\n options.accept += ', */*; q=0.01';\n }\n\n return options;\n };\n\n createXHR = function createXHR(options, done) {\n var xhr;\n xhr = new XMLHttpRequest();\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader('Accept', options.accept);\n\n if (typeof options.data === 'string') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n }\n\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n CSRFProtection(xhr);\n }\n\n xhr.withCredentials = !!options.withCredentials;\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n\n return xhr;\n };\n\n processResponse = function processResponse(response, type) {\n var parser, script;\n\n if (typeof response === 'string' && typeof type === 'string') {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n script = document.createElement('script');\n script.setAttribute('nonce', cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n parser = new DOMParser();\n type = type.replace(/;.+/, '');\n\n try {\n response = parser.parseFromString(response, type);\n } catch (error) {}\n }\n }\n\n return response;\n };\n\n Rails.href = function (element) {\n return element.href;\n };\n\n Rails.isCrossDomain = function (url) {\n var e, originAnchor, urlAnchor;\n originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n urlAnchor = document.createElement('a');\n\n try {\n urlAnchor.href = url;\n return !((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host || originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host);\n } catch (error) {\n e = error;\n return true;\n }\n };\n }).call(this);\n (function () {\n var matches, toArray;\n matches = Rails.matches;\n\n toArray = function toArray(e) {\n return Array.prototype.slice.call(e);\n };\n\n Rails.serializeElement = function (element, additionalParam) {\n var inputs, params;\n inputs = [element];\n\n if (matches(element, 'form')) {\n inputs = toArray(element.elements);\n }\n\n params = [];\n inputs.forEach(function (input) {\n if (!input.name || input.disabled) {\n return;\n }\n\n if (matches(input, 'fieldset[disabled] *')) {\n return;\n }\n\n if (matches(input, 'select')) {\n return toArray(input.options).forEach(function (option) {\n if (option.selected) {\n return params.push({\n name: input.name,\n value: option.value\n });\n }\n });\n } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n return params.push({\n name: input.name,\n value: input.value\n });\n }\n });\n\n if (additionalParam) {\n params.push(additionalParam);\n }\n\n return params.map(function (param) {\n if (param.name != null) {\n return encodeURIComponent(param.name) + \"=\" + encodeURIComponent(param.value);\n } else {\n return param;\n }\n }).join('&');\n };\n\n Rails.formElements = function (form, selector) {\n if (matches(form, 'form')) {\n return toArray(form.elements).filter(function (el) {\n return matches(el, selector);\n });\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n };\n }).call(this);\n (function () {\n var allowAction, fire, stopEverything;\n fire = Rails.fire, stopEverything = Rails.stopEverything;\n\n Rails.handleConfirm = function (e) {\n if (!allowAction(this)) {\n return stopEverything(e);\n }\n };\n\n Rails.confirm = function (message, element) {\n return confirm(message);\n };\n\n allowAction = function allowAction(element) {\n var answer, callback, message;\n message = element.getAttribute('data-confirm');\n\n if (!message) {\n return true;\n }\n\n answer = false;\n\n if (fire(element, 'confirm')) {\n try {\n answer = Rails.confirm(message, element);\n } catch (error) {}\n\n callback = fire(element, 'confirm:complete', [answer]);\n }\n\n return answer && callback;\n };\n }).call(this);\n (function () {\n var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isXhrRedirect, matches, setData, stopEverything;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements;\n\n Rails.handleDisabledElement = function (e) {\n var element;\n element = this;\n\n if (element.disabled) {\n return stopEverything(e);\n }\n };\n\n Rails.enableElement = function (e) {\n var element;\n\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n\n element = e.target;\n } else {\n element = e;\n }\n\n if (matches(element, Rails.linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return enableFormElements(element);\n }\n };\n\n Rails.disableElement = function (e) {\n var element;\n element = e instanceof Event ? e.target : e;\n\n if (matches(element, Rails.linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return disableFormElements(element);\n }\n };\n\n disableLinkElement = function disableLinkElement(element) {\n var replacement;\n\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n\n replacement = element.getAttribute('data-disable-with');\n\n if (replacement != null) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n }\n\n element.addEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', true);\n };\n\n enableLinkElement = function enableLinkElement(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, 'ujs:enable-with', null);\n }\n\n element.removeEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', null);\n };\n\n disableFormElements = function disableFormElements(form) {\n return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n };\n\n disableFormElement = function disableFormElement(element) {\n var replacement;\n\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n\n replacement = element.getAttribute('data-disable-with');\n\n if (replacement != null) {\n if (matches(element, 'button')) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, 'ujs:enable-with', element.value);\n element.value = replacement;\n }\n }\n\n element.disabled = true;\n return setData(element, 'ujs:disabled', true);\n };\n\n enableFormElements = function enableFormElements(form) {\n return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n };\n\n enableFormElement = function enableFormElement(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n\n if (originalText != null) {\n if (matches(element, 'button')) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n\n setData(element, 'ujs:enable-with', null);\n }\n\n element.disabled = false;\n return setData(element, 'ujs:disabled', null);\n };\n\n isXhrRedirect = function isXhrRedirect(event) {\n var ref, xhr;\n xhr = (ref = event.detail) != null ? ref[0] : void 0;\n return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n };\n }).call(this);\n (function () {\n var stopEverything;\n stopEverything = Rails.stopEverything;\n\n Rails.handleMethod = function (e) {\n var csrfParam, csrfToken, form, formContent, href, link, method;\n link = this;\n method = link.getAttribute('data-method');\n\n if (!method) {\n return;\n }\n\n href = Rails.href(link);\n csrfToken = Rails.csrfToken();\n csrfParam = Rails.csrfParam();\n form = document.createElement('form');\n formContent = \" \";\n\n if (csrfParam != null && csrfToken != null && !Rails.isCrossDomain(href)) {\n formContent += \" \";\n }\n\n formContent += ' ';\n form.method = 'post';\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = 'none';\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n return stopEverything(e);\n };\n }).call(this);\n (function () {\n var ajax,\n fire,\n getData,\n isCrossDomain,\n isRemote,\n matches,\n serializeElement,\n setData,\n stopEverything,\n slice = [].slice;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement;\n\n isRemote = function isRemote(element) {\n var value;\n value = element.getAttribute('data-remote');\n return value != null && value !== 'false';\n };\n\n Rails.handleRemote = function (e) {\n var button, data, dataType, element, method, url, withCredentials;\n element = this;\n\n if (!isRemote(element)) {\n return true;\n }\n\n if (!fire(element, 'ajax:before')) {\n fire(element, 'ajax:stopped');\n return false;\n }\n\n withCredentials = element.getAttribute('data-with-credentials');\n dataType = element.getAttribute('data-type') || 'script';\n\n if (matches(element, Rails.formSubmitSelector)) {\n button = getData(element, 'ujs:submit-button');\n method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n\n if (method.toUpperCase() === 'GET') {\n url = url.replace(/\\?.*$/, '');\n }\n\n if (element.enctype === 'multipart/form-data') {\n data = new FormData(element);\n\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n\n setData(element, 'ujs:submit-button', null);\n setData(element, 'ujs:submit-button-formmethod', null);\n setData(element, 'ujs:submit-button-formaction', null);\n } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n method = element.getAttribute('data-method');\n url = element.getAttribute('data-url');\n data = serializeElement(element, element.getAttribute('data-params'));\n } else {\n method = element.getAttribute('data-method');\n url = Rails.href(element);\n data = element.getAttribute('data-params');\n }\n\n ajax({\n type: method || 'GET',\n url: url,\n data: data,\n dataType: dataType,\n beforeSend: function beforeSend(xhr, options) {\n if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n return fire(element, 'ajax:send', [xhr]);\n } else {\n fire(element, 'ajax:stopped');\n return false;\n }\n },\n success: function success() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:success', args);\n },\n error: function error() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:error', args);\n },\n complete: function complete() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:complete', args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: withCredentials != null && withCredentials !== 'false'\n });\n return stopEverything(e);\n };\n\n Rails.formSubmitButtonClick = function (e) {\n var button, form;\n button = this;\n form = button.form;\n\n if (!form) {\n return;\n }\n\n if (button.name) {\n setData(form, 'ujs:submit-button', {\n name: button.name,\n value: button.value\n });\n }\n\n setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n };\n\n Rails.preventInsignificantClick = function (e) {\n var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n link = this;\n method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n data = link.getAttribute('data-params');\n metaClick = e.metaKey || e.ctrlKey;\n insignificantMetaClick = metaClick && method === 'GET' && !data;\n nonPrimaryMouseClick = e.button != null && e.button !== 0;\n\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n return e.stopImmediatePropagation();\n }\n };\n }).call(this);\n (function () {\n var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n\n if (typeof jQuery !== \"undefined\" && jQuery !== null && jQuery.ajax != null) {\n if (jQuery.rails) {\n throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n }\n\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter(function (options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n });\n }\n\n Rails.start = function () {\n if (window._rails_loaded) {\n throw new Error('rails-ujs has already been loaded!');\n }\n\n window.addEventListener('pageshow', function () {\n $(Rails.formEnableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n return $(Rails.linkDisableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n });\n delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n delegate(document, Rails.linkClickSelector, 'click', disableElement);\n delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', function (e) {\n return setTimeout(function () {\n return disableElement(e);\n }, 13);\n });\n delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n document.addEventListener('DOMContentLoaded', loadCSPNonce);\n return window._rails_loaded = true;\n };\n\n if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n Rails.start();\n }\n }).call(this);\n }).call(this);\n\n if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === \"object\" && module.exports) {\n module.exports = Rails;\n } else if (typeof define === \"function\" && define.amd) {\n define(Rails);\n }\n}).call(this);","module.exports = __webpack_public_path__ + \"media/navi/phone_tell-1548d8fd.png\";","// shim for using process in browser\nvar process = module.exports = {}; // cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\n\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n } // if setTimeout wasn't available but was latter defined\n\n\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\n\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n } // if clearTimeout wasn't available but was latter defined\n\n\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\n\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n\n draining = false;\n\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n\n while (len) {\n currentQueue = queue;\n queue = [];\n\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n\n queueIndex = -1;\n len = queue.length;\n }\n\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n\n queue.push(new Item(fun, args));\n\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}; // v8 likes predictible objects\n\n\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\n\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\n\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\n\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) {\n return [];\n};\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n return '/';\n};\n\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\n\nprocess.umask = function () {\n return 0;\n};","export const PropertiesApiPath = '/api/portal/properties';\n","import React, { useState } from \"react\";\nimport { useSetRecoilState } from \"recoil\";\nimport { Autocomplete } from \"@react-google-maps/api\";\nimport { centerState, placeChangedState } from \"./state\";\n\nconst SearchForm = () => {\n const setCenter = useSetRecoilState(centerState);\n const setPlaceChanged = useSetRecoilState(placeChangedState);\n const [autocomplete, setAutocomplete] = useState(null);\n const onLoad = (autocomplete) => setAutocomplete(autocomplete);\n\n const getCenterGeocode = async (place) => {\n let center = {};\n if (place.geometry) {\n center.lat = Number(place.geometry.location.lat());\n center.lng = Number(place.geometry.location.lng());\n return center;\n }\n\n const autocomleteService = new google.maps.places.AutocompleteService();\n const placePredictions = await autocomleteService.getPlacePredictions({ input: place.name, });\n const placeId = placePredictions?.predictions[0]?.place_id;\n if (!placeId) return null;\n\n const geocoder = new google.maps.Geocoder()\n const geocode = await geocoder.geocode({ placeId });\n center.lat = Number(geocode.results[0].geometry.location.lat());\n center.lng = Number(geocode.results[0].geometry.location.lng());\n\n return center;\n };\n\n const onPlaceChanged = () => {\n (async () => {\n const place = autocomplete.getPlace();\n const center = await getCenterGeocode(place);\n if (!center) return;\n setCenter(center);\n setPlaceChanged(place);\n })();\n };\n\n const autocompleteOptions = {\n types: ['(regions)'],\n fields: [\"formatted_address\", \"name\", \"geometry\"],\n componentRestrictions: {\n country: ['jp']\n }\n }\n\n return (\n \n \n \n )\n}\n\nexport default SearchForm;\n","import React from \"react\";\nimport Map2 from \"../../PropertiesSearch/Map2\";\nimport { RecoilRoot } from \"recoil\";\n\nconst MapViewModal = ({ setMapViewModal, property, setShowModal, room }) => {\n const googleMapsApiKey = process.env.GOOGLE_MAPS_API_KEY_202210;\n return (\n <>\n \n
\n
\n
{\n setMapViewModal(false);\n }}\n >\n
\n お部屋情報に戻る\n
\n
\n 地図アプリを開く\n \n
\n
\n \n \n
\n
\n >\n );\n};\n\nexport default MapViewModal;\n","import React, { useEffect, useState } from \"react\";\nimport {\n GoogleMap,\n LoadScriptNext,\n MarkerClusterer,\n StreetViewPanorama,\n Marker\n} from \"@react-google-maps/api\";\nimport { useRecoilState, useRecoilValue } from \"recoil\";\nimport {\n propertiesState,\n centerState,\n placeChangedState,\n isCurrentLocationState,\n boundState,\n} from \"./state\";\nimport axios from \"axios\";\nimport SearchForm from \"./SearchForm\";\nimport { PropertiesApiPath } from \"./common\";\nimport MapProperties3 from \"../top/MapProperties3\";\nimport iconMapArea from \"../../../../assets/images/icon/icon-map-area.svg\";\n\nconst containerStyle = {\n width: \"100%\",\n height: \"90%\",\n};\n\nconst Map2 = (props) => {\n const [properties, setProperties] = useRecoilState(propertiesState);\n const [center, setCenter] = useRecoilState(centerState);\n const [bound, setBound] = useRecoilState(boundState);\n const [libraries] = useState([\"places\"]);\n const [mapObj, setMapObj] = useState(null);\n const placeChanged = useRecoilValue(placeChangedState);\n const [zoom, setZoom] = useState(12);\n\n useEffect(() => {\n if (props.isCurrentLocation) {\n navigator.geolocation.getCurrentPosition((position) => {\n const { latitude, longitude } = position.coords;\n setZoom(14);\n setCenter({\n lat: Number(latitude),\n lng: Number(longitude),\n });\n });\n }\n }, []);\n\n useEffect(() => boundsAreaSearch(mapObj), [placeChanged]);\n\n const mapOptions = {\n mapTypeControl: false,\n streetViewControl: false,\n fullscreenControl: false,\n };\n\n const boundsAreaSearch = (map) => {\n const bounds = map?.getBounds();\n if (!center && !bounds) return;\n\n const boundParams = {\n south_west_lat: bounds ? bounds?.getSouthWest()?.lat() : center.lat - 0.1,\n north_east_lat: bounds ? bounds?.getNorthEast()?.lat() : center.lat + 0.1,\n south_west_lon: bounds ? bounds?.getSouthWest()?.lng() : center.lng - 0.5,\n north_east_lon: bounds ? bounds?.getNorthEast()?.lng() : center.lng + 0.5,\n };\n\n // axios.get(PropertiesApiPath, {\n // params: bound || boundParams\n // }).then(res => {\n // setBound(boundParams)\n // setProperties(res.data.properties);\n // })\n // setProperties(props.property);\n };\n\n const addBoundsAreaSearchEvent = (controlDiv, map) => {\n const controlButton = document.createElement(\"button\");\n controlButton.style.backgroundColor = \"#fff\";\n controlButton.style.color = \"#666\";\n controlButton.style.borderRadius = \"999px\";\n controlButton.style.fontSize = \"14px\";\n controlButton.style.fontWeight = \"600\";\n controlButton.style.marginTop = \"8px\";\n controlButton.style.marginRight = \"2px\";\n controlButton.style.padding = \"3px 8px\";\n controlButton.style.boxShadow = \"0 2px 6px rgba(0,0,0,.3)\";\n controlButton.innerHTML = \"このエリアで検索\";\n controlDiv.appendChild(controlButton);\n controlButton.addEventListener(\"click\", () => boundsAreaSearch(map));\n };\n\n const onLoad = (map) => {\n setMapObj(map);\n const customControlDiv = document.createElement(\"div\");\n addBoundsAreaSearchEvent(customControlDiv, map);\n map.controls[google.maps.ControlPosition.TOP_RIGHT].push(customControlDiv);\n props.isCurrentLocation && boundsAreaSearch(map);\n };\n\n const onZoomChanged = () => boundsAreaSearch(mapObj);\n\n const clusterStyles = [\n {\n textColor: \"white\",\n url: iconMapArea,\n height: 32,\n width: 32,\n },\n {\n textColor: \"white\",\n url: iconMapArea,\n height: 32,\n width: 32,\n },\n {\n textColor: \"white\",\n url: iconMapArea,\n height: 32,\n width: 32,\n },\n ];\n\n const options = {\n gridSize: 32,\n styles: clusterStyles,\n maxZoom: 15,\n };\n\n const latLon = {\n lat: parseFloat(props.property.lat),\n lng: parseFloat(props.property.lon),\n };\n\n return (\n \n \n {props.isStreetView ? (\n <>\n \n \n >\n ) : (\n <>\n \n \n {(clusterer) => {\n const component = [];\n // properties.map((property) => {\n component.push(\n \n );\n // });\n return component;\n }}\n \n >\n )}\n \n \n );\n};\n\nexport default Map2;\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import { useTheme as useThemeWithoutDefault } from '@material-ui/styles';\nimport React from 'react';\nimport defaultTheme from './defaultTheme';\nexport default function useTheme() {\n var theme = useThemeWithoutDefault() || defaultTheme;\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(theme);\n }\n\n return theme;\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: _defineProperty({\n width: '100%',\n marginLeft: 'auto',\n boxSizing: 'border-box',\n marginRight: 'auto',\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n display: 'block'\n }, theme.breakpoints.up('sm'), {\n paddingLeft: theme.spacing(3),\n paddingRight: theme.spacing(3)\n }),\n\n /* Styles applied to the root element if `disableGutters={true}`. */\n disableGutters: {\n paddingLeft: 0,\n paddingRight: 0\n },\n\n /* Styles applied to the root element if `fixed={true}`. */\n fixed: Object.keys(theme.breakpoints.values).reduce(function (acc, breakpoint) {\n var value = theme.breakpoints.values[breakpoint];\n\n if (value !== 0) {\n acc[theme.breakpoints.up(breakpoint)] = {\n maxWidth: value\n };\n }\n\n return acc;\n }, {}),\n\n /* Styles applied to the root element if `maxWidth=\"xs\"`. */\n maxWidthXs: _defineProperty({}, theme.breakpoints.up('xs'), {\n maxWidth: Math.max(theme.breakpoints.values.xs, 444)\n }),\n\n /* Styles applied to the root element if `maxWidth=\"sm\"`. */\n maxWidthSm: _defineProperty({}, theme.breakpoints.up('sm'), {\n maxWidth: theme.breakpoints.values.sm\n }),\n\n /* Styles applied to the root element if `maxWidth=\"md\"`. */\n maxWidthMd: _defineProperty({}, theme.breakpoints.up('md'), {\n maxWidth: theme.breakpoints.values.md\n }),\n\n /* Styles applied to the root element if `maxWidth=\"lg\"`. */\n maxWidthLg: _defineProperty({}, theme.breakpoints.up('lg'), {\n maxWidth: theme.breakpoints.values.lg\n }),\n\n /* Styles applied to the root element if `maxWidth=\"xl\"`. */\n maxWidthXl: _defineProperty({}, theme.breakpoints.up('xl'), {\n maxWidth: theme.breakpoints.values.xl\n })\n };\n};\nvar Container = /*#__PURE__*/React.forwardRef(function Container(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n _props$disableGutters = props.disableGutters,\n disableGutters = _props$disableGutters === void 0 ? false : _props$disableGutters,\n _props$fixed = props.fixed,\n fixed = _props$fixed === void 0 ? false : _props$fixed,\n _props$maxWidth = props.maxWidth,\n maxWidth = _props$maxWidth === void 0 ? 'lg' : _props$maxWidth,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"component\", \"disableGutters\", \"fixed\", \"maxWidth\"]);\n\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, className, fixed && classes.fixed, disableGutters && classes.disableGutters, maxWidth !== false && classes[\"maxWidth\".concat(capitalize(String(maxWidth)))]),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default withStyles(styles, {\n name: 'MuiContainer'\n})(Container);","function _typeof3(obj) { \"@babel/helpers - typeof\"; return _typeof3 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof3(obj); }\n\nmodule.exports =\n/******/\nfunction (modules) {\n // webpackBootstrap\n\n /******/\n // The module cache\n\n /******/\n var installedModules = {};\n /******/\n\n /******/\n // The require function\n\n /******/\n\n function __webpack_require__(moduleId) {\n /******/\n\n /******/\n // Check if module is in cache\n\n /******/\n if (installedModules[moduleId]) {\n /******/\n return installedModules[moduleId].exports;\n /******/\n }\n /******/\n // Create a new module (and put it into the cache)\n\n /******/\n\n\n var module = installedModules[moduleId] = {\n /******/\n i: moduleId,\n\n /******/\n l: false,\n\n /******/\n exports: {}\n /******/\n\n };\n /******/\n\n /******/\n // Execute the module function\n\n /******/\n\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n /******/\n\n /******/\n // Flag the module as loaded\n\n /******/\n\n module.l = true;\n /******/\n\n /******/\n // Return the exports of the module\n\n /******/\n\n return module.exports;\n /******/\n }\n /******/\n\n /******/\n\n /******/\n // expose the modules object (__webpack_modules__)\n\n /******/\n\n\n __webpack_require__.m = modules;\n /******/\n\n /******/\n // expose the module cache\n\n /******/\n\n __webpack_require__.c = installedModules;\n /******/\n\n /******/\n // define getter function for harmony exports\n\n /******/\n\n __webpack_require__.d = function (exports, name, getter) {\n /******/\n if (!__webpack_require__.o(exports, name)) {\n /******/\n Object.defineProperty(exports, name, {\n enumerable: true,\n get: getter\n });\n /******/\n }\n /******/\n\n };\n /******/\n\n /******/\n // define __esModule on exports\n\n /******/\n\n\n __webpack_require__.r = function (exports) {\n /******/\n if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n /******/\n Object.defineProperty(exports, Symbol.toStringTag, {\n value: 'Module'\n });\n /******/\n }\n /******/\n\n\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n /******/\n };\n /******/\n\n /******/\n // create a fake namespace object\n\n /******/\n // mode & 1: value is a module id, require it\n\n /******/\n // mode & 2: merge all properties of value into the ns\n\n /******/\n // mode & 4: return value when already ns object\n\n /******/\n // mode & 8|1: behave like require\n\n /******/\n\n\n __webpack_require__.t = function (value, mode) {\n /******/\n if (mode & 1) value = __webpack_require__(value);\n /******/\n\n if (mode & 8) return value;\n /******/\n\n if (mode & 4 && _typeof3(value) === 'object' && value && value.__esModule) return value;\n /******/\n\n var ns = Object.create(null);\n /******/\n\n __webpack_require__.r(ns);\n /******/\n\n\n Object.defineProperty(ns, 'default', {\n enumerable: true,\n value: value\n });\n /******/\n\n if (mode & 2 && typeof value != 'string') for (var key in value) {\n __webpack_require__.d(ns, key, function (key) {\n return value[key];\n }.bind(null, key));\n }\n /******/\n\n return ns;\n /******/\n };\n /******/\n\n /******/\n // getDefaultExport function for compatibility with non-harmony modules\n\n /******/\n\n\n __webpack_require__.n = function (module) {\n /******/\n var getter = module && module.__esModule ?\n /******/\n function getDefault() {\n return module['default'];\n } :\n /******/\n function getModuleExports() {\n return module;\n };\n /******/\n\n __webpack_require__.d(getter, 'a', getter);\n /******/\n\n\n return getter;\n /******/\n };\n /******/\n\n /******/\n // Object.prototype.hasOwnProperty.call\n\n /******/\n\n\n __webpack_require__.o = function (object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n };\n /******/\n\n /******/\n // __webpack_public_path__\n\n /******/\n\n\n __webpack_require__.p = \"\";\n /******/\n\n /******/\n\n /******/\n // Load entry module and return exports\n\n /******/\n\n return __webpack_require__(__webpack_require__.s = \"fb15\");\n /******/\n}\n/************************************************************************/\n\n/******/\n({\n /***/\n \"0026\":\n /***/\n function _(module, exports, __webpack_require__) {\n // style-loader: Adds some css to the DOM by adding a \n","\n \n
\n
\n \n \n STEP{{reservationStep}} \n \n
\n
{{customerFullName}}様、本日は内見お疲れ様でした。 \n
\n
\n
\n
\n
\n
\n 今後お部屋に関するご質問、お申込みに関する事項などございましたらチャットよりお気軽にご連絡ください。お気をつけてお帰りください。\n
\n
\n
\n
\n
本日見られたお部屋の感想をお聞かせください
\n
\n \n \n 気に入った\n \n
\n
\n \n \n まずまず\n \n
\n
\n \n \n いまいち\n \n
\n
\n
\n
この物件の申し込みを検討されますか?
\n
\n \n \n 検討する\n \n
\n
\n \n \n 検討しない\n \n
\n
\n
\n
その他、物件の感想や内覧方法に関してなど、ご意見をいただけますと幸いです。
\n
\n
\n
\n
\n \n
\n
\n \n\n\n\n\n\n","\n \n
\n
\n \n \n STEP{{reservationStep}} \n \n
\n
物件に向かっていただきます。 \n
\n 物件住所: {{propertyAddress}} \n 最寄り駅: {{propertyStationLine}} {{propertyStation}}駅 \n
\n
\n 目的地 \n {{reservationRoomWithProperty}}\n
\n
\n \n \n \n \n {{reservationRoomWithProperty}}\n \n \n
\n
\n
\n
\n\n STEP{{reservationStep}}-2 \n \n
\n
到着したらチャットより、到着した旨をお送りください。 \n
\n
\n
\n
\n
\n
\n \n
\n
\n \n\n\n\n\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n } // Copy function arguments\n\n\n var args = new Array(arguments.length - 1);\n\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n } // Store and register the task\n\n\n var task = {\n callback: callback,\n args: args\n };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n\n switch (args.length) {\n case 0:\n callback();\n break;\n\n case 1:\n callback(args[0]);\n break;\n\n case 2:\n callback(args[0], args[1]);\n break;\n\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n\n if (task) {\n currentlyRunningATask = true;\n\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function registerImmediate(handle) {\n process.nextTick(function () {\n runIfPresent(handle);\n });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n\n global.onmessage = function () {\n postMessageIsAsynchronous = false;\n };\n\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n\n var onGlobalMessage = function onGlobalMessage(event) {\n if (event.source === global && typeof event.data === \"string\" && event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function registerImmediate(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n\n channel.port1.onmessage = function (event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function registerImmediate(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n\n registerImmediate = function registerImmediate(handle) {\n // Create a \n\n\n","import { render, staticRenderFns } from \"./LocalCautionModal.vue?vue&type=template&id=b3def3f2&scoped=true&\"\nimport script from \"./LocalCautionModal.vue?vue&type=script&lang=js&\"\nexport * from \"./LocalCautionModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LocalCautionModal.vue?vue&type=style&index=0&id=b3def3f2&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b3def3f2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('modal',{attrs:{\"name\":\"remote-caution-modal\",\"scrollable\":true,\"height\":\"80%\",\"width\":\"80%\"}},[_c('div',{staticClass:\"modal-header\"},[_c('h4',{staticClass:\"card-title\"}),_vm._v(\" \"),_c('span',{staticStyle:{\"cursor\":\"pointer\"},on:{\"click\":_vm.hide}},[_c('i',{staticClass:\"fas fa-times\"})])]),_vm._v(\" \"),_c('div',{staticClass:\"modal-body\"},[_c('h2',{staticClass:\"mt-5 mb-5\"},[_vm._v(\"ご案内方法を遠隔案内にします。 よろしいですか?\")]),_vm._v(\" \"),_c('div',{staticClass:\"row w80 m0a mt-4\"},[_c('div',{staticClass:\"col-6 text-center pl-0\"},[_c('button',{staticClass:\"btn btn-lg btn-rounded btn-secondary\",on:{\"click\":function($event){return _vm.hide()}}},[_c('i',{staticClass:\"fas fa-backward\"}),_vm._v(\"\\n いいえ\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"col-6 text-center pr-0\"},[_c('button',{staticClass:\"btn btn-lg btn-rounded btn-success\",on:{\"click\":function($event){return _vm.onStepSelected('photo')}}},[_vm._v(\"\\n はい\\n \"),_c('i',{staticClass:\"fas fa-forward\"})])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RemoteCautionModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RemoteCautionModal.vue?vue&type=script&lang=js&\"","\n \n \n \n
ご案内方法を遠隔案内にします。 よろしいですか? \n
\n
\n \n \n いいえ\n \n
\n
\n \n はい\n \n \n
\n
\n
\n \n \n\n\n\n\n\n\n\n","import { render, staticRenderFns } from \"./RemoteCautionModal.vue?vue&type=template&id=a20719b2&scoped=true&\"\nimport script from \"./RemoteCautionModal.vue?vue&type=script&lang=js&\"\nexport * from \"./RemoteCautionModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RemoteCautionModal.vue?vue&type=style&index=0&id=a20719b2&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a20719b2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',[(!_vm.errorMsg == '')?_c('div',{staticClass:\"alert alert-danger alert-rounded\"},[_vm._v(\"\\n \"+_vm._s(_vm.errorMsg)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.shooting),expression:\"shooting\"}]},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.capturedUrl == ''),expression:\"capturedUrl == ''\"}],staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center\",attrs:{\"id\":\"faceCamera\"}},[_c('video',{ref:\"video\",attrs:{\"id\":\"video\",\"width\":_vm.width,\"height\":_vm.height,\"autoplay\":\"\"}}),_vm._v(\" \"),_c('img',{attrs:{\"src\":require(\"face_size_image.png\"),\"width\":_vm.width,\"height\":_vm.height,\"id\":\"faceSizeImage\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"col-12 text-center\"},[_c('a',{staticClass:\"btn btn--circle btn--circle-a btn--shadow\",attrs:{\"href\":\"#\",\"id\":\"camera-icon\"},on:{\"click\":function($event){return _vm.capture()}}},[_c('i',{staticClass:\"fas fa-camera fs32\"})])])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.capturedUrl == ''),expression:\"!capturedUrl == ''\"}],staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center\"},[_c('img',{attrs:{\"src\":_vm.capturedUrl}})])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.capturedUrl == ''),expression:\"!capturedUrl == ''\"}],staticClass:\"row pl-3 pr-3 mt-3\"},[_c('div',{staticClass:\"col-6 text-center mt-3\"},[_c('button',{staticClass:\"btn btn-block btn-rounded btn-secondary\",on:{\"click\":_vm.retake}},[_vm._v(\"取り直し\")])]),_vm._v(\" \"),_c('div',{staticClass:\"col-6 text-center mt-3\"},[_c('button',{staticClass:\"btn btn-block btn-rounded btn-success\",on:{\"click\":_vm.save}},[_vm._v(\"決定\")])])]),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"canvas_wrapper\"}},[_c('canvas',{ref:\"canvas\",attrs:{\"id\":\"canvas\",\"width\":_vm.width,\"height\":_vm.height}})])]),_vm._v(\" \"),_c('Loading',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.shooting),expression:\"!shooting\"}]})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TakeFaceImage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TakeFaceImage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TakeFaceImage.vue?vue&type=template&id=49052061&\"\nimport script from \"./TakeFaceImage.vue?vue&type=script&lang=js&\"\nexport * from \"./TakeFaceImage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TakeFaceImage.vue?vue&type=style&index=0&scope=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","module.exports = __webpack_public_path__ + \"media/icon/icon-arrow-left-b20eaf99.svg\";","export const VideoBgm = [\n \"https://d7t15cfru2447.cloudfront.net/uploads/audio/SellBuyMusic+-+%E1%84%92%E1%85%A2%E1%84%87%E1%85%A7%E1%86%AB%E1%84%8B%E1%85%B4+%E1%84%8C%E1%85%A5%E1%84%82%E1%85%A7%E1%86%A8.mp3\",\n \"https://d7t15cfru2447.cloudfront.net/uploads/audio/MusMus-BGM-141.mp3\",\n \"https://d7t15cfru2447.cloudfront.net/uploads/audio/bird.mp3\",\n];\n\nexport const RandomBgm = (array) => {\n let rand = Math.random()*array.length | 0;\n let audioUrl = array[rand];\n return audioUrl;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@material-ui/utils';\nimport { Transition } from 'react-transition-group';\nimport withStyles from '../styles/withStyles';\nimport { duration } from '../styles/transitions';\nimport deprecatedPropType from '../utils/deprecatedPropType';\nimport { getTransitionProps } from '../transitions/utils';\nimport useTheme from '../styles/useTheme';\nimport { useForkRef } from '../utils';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n height: 0,\n overflow: 'hidden',\n transition: theme.transitions.create('height')\n },\n\n /* Styles applied to the root element when the transition has entered. */\n entered: {\n height: 'auto',\n overflow: 'visible'\n },\n\n /* Styles applied to the root element when the transition has exited and `collapsedSize` != 0px. */\n hidden: {\n visibility: 'hidden'\n },\n\n /* Styles applied to the outer wrapper element. */\n wrapper: {\n // Hack to get children with a negative margin to not falsify the height computation.\n display: 'flex'\n },\n\n /* Styles applied to the inner wrapper element. */\n wrapperInner: {\n width: '100%'\n }\n };\n};\n/**\n * The Collapse transition is used by the\n * [Vertical Stepper](/components/steppers/#vertical-stepper) StepContent component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\n\nvar Collapse = /*#__PURE__*/React.forwardRef(function Collapse(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n collapsedHeight = props.collapsedHeight,\n _props$collapsedSize = props.collapsedSize,\n collapsedSizeProp = _props$collapsedSize === void 0 ? '0px' : _props$collapsedSize,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n _props$disableStrictM = props.disableStrictModeCompat,\n disableStrictModeCompat = _props$disableStrictM === void 0 ? false : _props$disableStrictM,\n inProp = props.in,\n onEnter = props.onEnter,\n onEntered = props.onEntered,\n onEntering = props.onEntering,\n onExit = props.onExit,\n onExited = props.onExited,\n onExiting = props.onExiting,\n style = props.style,\n _props$timeout = props.timeout,\n timeout = _props$timeout === void 0 ? duration.standard : _props$timeout,\n _props$TransitionComp = props.TransitionComponent,\n TransitionComponent = _props$TransitionComp === void 0 ? Transition : _props$TransitionComp,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"collapsedHeight\", \"collapsedSize\", \"component\", \"disableStrictModeCompat\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"style\", \"timeout\", \"TransitionComponent\"]);\n\n var theme = useTheme();\n var timer = React.useRef();\n var wrapperRef = React.useRef(null);\n var autoTransitionDuration = React.useRef();\n var collapsedSize = typeof (collapsedHeight || collapsedSizeProp) === 'number' ? \"\".concat(collapsedHeight || collapsedSizeProp, \"px\") : collapsedHeight || collapsedSizeProp;\n React.useEffect(function () {\n return function () {\n clearTimeout(timer.current);\n };\n }, []);\n var enableStrictModeCompat = theme.unstable_strictMode && !disableStrictModeCompat;\n var nodeRef = React.useRef(null);\n var handleRef = useForkRef(ref, enableStrictModeCompat ? nodeRef : undefined);\n\n var normalizedTransitionCallback = function normalizedTransitionCallback(callback) {\n return function (nodeOrAppearing, maybeAppearing) {\n if (callback) {\n var _ref = enableStrictModeCompat ? [nodeRef.current, nodeOrAppearing] : [nodeOrAppearing, maybeAppearing],\n _ref2 = _slicedToArray(_ref, 2),\n node = _ref2[0],\n isAppearing = _ref2[1]; // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n\n\n if (isAppearing === undefined) {\n callback(node);\n } else {\n callback(node, isAppearing);\n }\n }\n };\n };\n\n var handleEnter = normalizedTransitionCallback(function (node, isAppearing) {\n node.style.height = collapsedSize;\n\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n });\n var handleEntering = normalizedTransitionCallback(function (node, isAppearing) {\n var wrapperHeight = wrapperRef.current ? wrapperRef.current.clientHeight : 0;\n\n var _getTransitionProps = getTransitionProps({\n style: style,\n timeout: timeout\n }, {\n mode: 'enter'\n }),\n transitionDuration = _getTransitionProps.duration;\n\n if (timeout === 'auto') {\n var duration2 = theme.transitions.getAutoHeightDuration(wrapperHeight);\n node.style.transitionDuration = \"\".concat(duration2, \"ms\");\n autoTransitionDuration.current = duration2;\n } else {\n node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : \"\".concat(transitionDuration, \"ms\");\n }\n\n node.style.height = \"\".concat(wrapperHeight, \"px\");\n\n if (onEntering) {\n onEntering(node, isAppearing);\n }\n });\n var handleEntered = normalizedTransitionCallback(function (node, isAppearing) {\n node.style.height = 'auto';\n\n if (onEntered) {\n onEntered(node, isAppearing);\n }\n });\n var handleExit = normalizedTransitionCallback(function (node) {\n var wrapperHeight = wrapperRef.current ? wrapperRef.current.clientHeight : 0;\n node.style.height = \"\".concat(wrapperHeight, \"px\");\n\n if (onExit) {\n onExit(node);\n }\n });\n var handleExited = normalizedTransitionCallback(onExited);\n var handleExiting = normalizedTransitionCallback(function (node) {\n var wrapperHeight = wrapperRef.current ? wrapperRef.current.clientHeight : 0;\n\n var _getTransitionProps2 = getTransitionProps({\n style: style,\n timeout: timeout\n }, {\n mode: 'exit'\n }),\n transitionDuration = _getTransitionProps2.duration;\n\n if (timeout === 'auto') {\n var duration2 = theme.transitions.getAutoHeightDuration(wrapperHeight);\n node.style.transitionDuration = \"\".concat(duration2, \"ms\");\n autoTransitionDuration.current = duration2;\n } else {\n node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : \"\".concat(transitionDuration, \"ms\");\n }\n\n node.style.height = collapsedSize;\n\n if (onExiting) {\n onExiting(node);\n }\n });\n\n var addEndListener = function addEndListener(nodeOrNext, maybeNext) {\n var next = enableStrictModeCompat ? nodeOrNext : maybeNext;\n\n if (timeout === 'auto') {\n timer.current = setTimeout(next, autoTransitionDuration.current || 0);\n }\n };\n\n return /*#__PURE__*/React.createElement(TransitionComponent, _extends({\n in: inProp,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: addEndListener,\n nodeRef: enableStrictModeCompat ? nodeRef : undefined,\n timeout: timeout === 'auto' ? null : timeout\n }, other), function (state, childProps) {\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, classes.container, className, {\n 'entered': classes.entered,\n 'exited': !inProp && collapsedSize === '0px' && classes.hidden\n }[state]),\n style: _extends({\n minHeight: collapsedSize\n }, style),\n ref: handleRef\n }, childProps), /*#__PURE__*/React.createElement(\"div\", {\n className: classes.wrapper,\n ref: wrapperRef\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classes.wrapperInner\n }, children)));\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nCollapse.muiSupportAuto = true;\nexport default withStyles(styles, {\n name: 'MuiCollapse'\n})(Collapse);","import * as React from 'react';\n/**\n * @ignore - internal component.\n * @type {React.Context<{} | {expanded: boolean, disabled: boolean, toggle: () => void}>}\n */\n\nvar AccordionContext = /*#__PURE__*/React.createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n AccordionContext.displayName = 'AccordionContext';\n}\n\nexport default AccordionContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toArray from \"@babel/runtime/helpers/esm/toArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@material-ui/utils';\nimport Collapse from '../Collapse';\nimport Paper from '../Paper';\nimport withStyles from '../styles/withStyles';\nimport AccordionContext from './AccordionContext';\nimport useControlled from '../utils/useControlled';\nexport var styles = function styles(theme) {\n var transition = {\n duration: theme.transitions.duration.shortest\n };\n return {\n /* Styles applied to the root element. */\n root: {\n position: 'relative',\n transition: theme.transitions.create(['margin'], transition),\n '&:before': {\n position: 'absolute',\n left: 0,\n top: -1,\n right: 0,\n height: 1,\n content: '\"\"',\n opacity: 1,\n backgroundColor: theme.palette.divider,\n transition: theme.transitions.create(['opacity', 'background-color'], transition)\n },\n '&:first-child': {\n '&:before': {\n display: 'none'\n }\n },\n '&$expanded': {\n margin: '16px 0',\n '&:first-child': {\n marginTop: 0\n },\n '&:last-child': {\n marginBottom: 0\n },\n '&:before': {\n opacity: 0\n }\n },\n '&$expanded + &': {\n '&:before': {\n display: 'none'\n }\n },\n '&$disabled': {\n backgroundColor: theme.palette.action.disabledBackground\n }\n },\n\n /* Styles applied to the root element if `square={false}`. */\n rounded: {\n borderRadius: 0,\n '&:first-child': {\n borderTopLeftRadius: theme.shape.borderRadius,\n borderTopRightRadius: theme.shape.borderRadius\n },\n '&:last-child': {\n borderBottomLeftRadius: theme.shape.borderRadius,\n borderBottomRightRadius: theme.shape.borderRadius,\n // Fix a rendering issue on Edge\n '@supports (-ms-ime-align: auto)': {\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }\n }\n },\n\n /* Styles applied to the root element if `expanded={true}`. */\n expanded: {},\n\n /* Styles applied to the root element if `disabled={true}`. */\n disabled: {}\n };\n};\nvar Accordion = /*#__PURE__*/React.forwardRef(function Accordion(props, ref) {\n var childrenProp = props.children,\n classes = props.classes,\n className = props.className,\n _props$defaultExpande = props.defaultExpanded,\n defaultExpanded = _props$defaultExpande === void 0 ? false : _props$defaultExpande,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n expandedProp = props.expanded,\n onChange = props.onChange,\n _props$square = props.square,\n square = _props$square === void 0 ? false : _props$square,\n _props$TransitionComp = props.TransitionComponent,\n TransitionComponent = _props$TransitionComp === void 0 ? Collapse : _props$TransitionComp,\n TransitionProps = props.TransitionProps,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"defaultExpanded\", \"disabled\", \"expanded\", \"onChange\", \"square\", \"TransitionComponent\", \"TransitionProps\"]);\n\n var _useControlled = useControlled({\n controlled: expandedProp,\n default: defaultExpanded,\n name: 'Accordion',\n state: 'expanded'\n }),\n _useControlled2 = _slicedToArray(_useControlled, 2),\n expanded = _useControlled2[0],\n setExpandedState = _useControlled2[1];\n\n var handleChange = React.useCallback(function (event) {\n setExpandedState(!expanded);\n\n if (onChange) {\n onChange(event, !expanded);\n }\n }, [expanded, onChange, setExpandedState]);\n\n var _React$Children$toArr = React.Children.toArray(childrenProp),\n _React$Children$toArr2 = _toArray(_React$Children$toArr),\n summary = _React$Children$toArr2[0],\n children = _React$Children$toArr2.slice(1);\n\n var contextValue = React.useMemo(function () {\n return {\n expanded: expanded,\n disabled: disabled,\n toggle: handleChange\n };\n }, [expanded, disabled, handleChange]);\n return /*#__PURE__*/React.createElement(Paper, _extends({\n className: clsx(classes.root, className, expanded && classes.expanded, disabled && classes.disabled, !square && classes.rounded),\n ref: ref,\n square: square\n }, other), /*#__PURE__*/React.createElement(AccordionContext.Provider, {\n value: contextValue\n }, summary), /*#__PURE__*/React.createElement(TransitionComponent, _extends({\n in: expanded,\n timeout: \"auto\"\n }, TransitionProps), /*#__PURE__*/React.createElement(\"div\", {\n \"aria-labelledby\": summary.props.id,\n id: summary.props['aria-controls'],\n role: \"region\"\n }, children)));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default withStyles(styles, {\n name: 'MuiAccordion'\n})(Accordion);","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\n/* eslint-disable jsx-a11y/aria-role */\n\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@material-ui/utils';\nimport ButtonBase from '../ButtonBase';\nimport IconButton from '../IconButton';\nimport withStyles from '../styles/withStyles';\nimport AccordionContext from '../Accordion/AccordionContext';\nexport var styles = function styles(theme) {\n var transition = {\n duration: theme.transitions.duration.shortest\n };\n return {\n /* Styles applied to the root element. */\n root: {\n display: 'flex',\n minHeight: 8 * 6,\n transition: theme.transitions.create(['min-height', 'background-color'], transition),\n padding: theme.spacing(0, 2),\n '&:hover:not($disabled)': {\n cursor: 'pointer'\n },\n '&$expanded': {\n minHeight: 64\n },\n '&$focused, &$focusVisible': {\n backgroundColor: theme.palette.action.focus\n },\n '&$disabled': {\n opacity: theme.palette.action.disabledOpacity\n }\n },\n\n /* Pseudo-class applied to the root element, children wrapper element and `IconButton` component if `expanded={true}`. */\n expanded: {},\n\n /* Pseudo-class applied to the ButtonBase root element if the button is keyboard focused. */\n focused: {},\n\n /* Pseudo-class applied to the ButtonBase root element if the button is keyboard focused. */\n focusVisible: {},\n\n /* Pseudo-class applied to the root element if `disabled={true}`. */\n disabled: {},\n\n /* Styles applied to the children wrapper element. */\n content: {\n display: 'flex',\n flexGrow: 1,\n transition: theme.transitions.create(['margin'], transition),\n margin: '12px 0',\n '&$expanded': {\n margin: '20px 0'\n }\n },\n\n /* Styles applied to the `IconButton` component when `expandIcon` is supplied. */\n expandIcon: {\n transform: 'rotate(0deg)',\n transition: theme.transitions.create('transform', transition),\n '&:hover': {\n // Disable the hover effect for the IconButton,\n // because a hover effect should apply to the entire Expand button and\n // not only to the IconButton.\n backgroundColor: 'transparent'\n },\n '&$expanded': {\n transform: 'rotate(180deg)'\n }\n }\n };\n};\nvar AccordionSummary = /*#__PURE__*/React.forwardRef(function AccordionSummary(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n expandIcon = props.expandIcon,\n focusVisibleClassName = props.focusVisibleClassName,\n _props$IconButtonProp = props.IconButtonProps,\n IconButtonProps = _props$IconButtonProp === void 0 ? {} : _props$IconButtonProp,\n onClick = props.onClick,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"expandIcon\", \"focusVisibleClassName\", \"IconButtonProps\", \"onClick\"]);\n\n var _React$useContext = React.useContext(AccordionContext),\n _React$useContext$dis = _React$useContext.disabled,\n disabled = _React$useContext$dis === void 0 ? false : _React$useContext$dis,\n expanded = _React$useContext.expanded,\n toggle = _React$useContext.toggle;\n\n var handleChange = function handleChange(event) {\n if (toggle) {\n toggle(event);\n }\n\n if (onClick) {\n onClick(event);\n }\n };\n\n return /*#__PURE__*/React.createElement(ButtonBase, _extends({\n focusRipple: false,\n disableRipple: true,\n disabled: disabled,\n component: \"div\",\n \"aria-expanded\": expanded,\n className: clsx(classes.root, className, disabled && classes.disabled, expanded && classes.expanded),\n focusVisibleClassName: clsx(classes.focusVisible, classes.focused, focusVisibleClassName),\n onClick: handleChange,\n ref: ref\n }, other), /*#__PURE__*/React.createElement(\"div\", {\n className: clsx(classes.content, expanded && classes.expanded)\n }, children), expandIcon && /*#__PURE__*/React.createElement(IconButton, _extends({\n className: clsx(classes.expandIcon, expanded && classes.expanded),\n edge: \"end\",\n component: \"div\",\n tabIndex: null,\n role: null,\n \"aria-hidden\": true\n }, IconButtonProps), expandIcon));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default withStyles(styles, {\n name: 'MuiAccordionSummary'\n})(AccordionSummary);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n display: 'flex',\n padding: theme.spacing(1, 2, 2)\n }\n };\n};\nvar AccordionDetails = /*#__PURE__*/React.forwardRef(function AccordionDetails(props, ref) {\n var classes = props.classes,\n className = props.className,\n other = _objectWithoutProperties(props, [\"classes\", \"className\"]);\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx(classes.root, className),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default withStyles(styles, {\n name: 'MuiAccordionDetails'\n})(AccordionDetails);","import React, { useState, useEffect } from \"react\";\nimport Accordion from \"@material-ui/core/Accordion\";\nimport AccordionSummary from \"@material-ui/core/AccordionSummary\";\nimport AccordionDetails from \"@material-ui/core/AccordionDetails\";\nimport ExpandMoreIcon from \"@material-ui/icons/ExpandMore\";\n\nconst StationAccordion = (props) => {\n return (\n <>\n \n }\n aria-label=\"Expand\"\n aria-controls=\"additional-actions-content\"\n id=\"additional-actions-header\"\n >\n \n {props.isLine && (\n \n )}\n {props.title} \n
\n \n \n {props.children}\n \n \n >\n );\n};\n\nexport default StationAccordion;\n","'use strict';\n\nvar reactIs = require('react-is');\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\n\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","module.exports = __webpack_public_path__ + \"media/icon/icon-calendar-b4af74cf.svg\";","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20 3h-1V1h-2v2H7V1H5v2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 18H4V8h16v13z\"\n}), 'CalendarToday');\n\nexports.default = _default;","module.exports = __webpack_public_path__ + \"media/navi/navi_ok-57dc785b.png\";","module.exports = __webpack_public_path__ + \"media/navi/icon_pin-01e75992.png\";","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function isPM(input) {\n return /^nm$/i.test(input);\n },\n meridiem: function meridiem(hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function ordinal(number) {\n return number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1,\n // Maandag is die eerste dag van die week.\n doy: 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n\n }\n });\n return af;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠'\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0'\n },\n pluralForm = function pluralForm(n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n },\n plurals = {\n s: ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m: ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h: ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d: ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M: ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y: ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n },\n pluralize = function pluralize(u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n\n return str.replace(/%d/i, number);\n };\n },\n months = ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'];\n\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: \"D/\\u200FM/\\u200FYYYY\",\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|م/,\n isPM: function isPM(input) {\n return 'م' === input;\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y')\n },\n preparse: function preparse(string) {\n return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/،/g, ',');\n },\n postformat: function postformat(string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n week: {\n dow: 6,\n // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n\n }\n });\n return ar;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var pluralForm = function pluralForm(n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n },\n plurals = {\n s: ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m: ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h: ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d: ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M: ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y: ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n },\n pluralize = function pluralize(u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n\n return str.replace(/%d/i, number);\n };\n },\n months = ['جانفي', 'فيفري', 'مارس', 'أفريل', 'ماي', 'جوان', 'جويلية', 'أوت', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'];\n\n var arDz = moment.defineLocale('ar-dz', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: \"D/\\u200FM/\\u200FYYYY\",\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|م/,\n isPM: function isPM(input) {\n return 'م' === input;\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y')\n },\n postformat: function postformat(string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return arDz;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات'\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n\n }\n });\n return arKw;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Arabic (Lybia) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 0: '0'\n },\n pluralForm = function pluralForm(n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n },\n plurals = {\n s: ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m: ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h: ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d: ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M: ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y: ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n },\n pluralize = function pluralize(u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n\n return str.replace(/%d/i, number);\n };\n },\n months = ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'];\n\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: \"D/\\u200FM/\\u200FYYYY\",\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|م/,\n isPM: function isPM(input) {\n return 'م' === input;\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y')\n },\n preparse: function preparse(string) {\n return string.replace(/،/g, ',');\n },\n postformat: function postformat(string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n week: {\n dow: 6,\n // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n\n }\n });\n return arLy;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return arMa;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠'\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0'\n };\n var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|م/,\n isPM: function isPM(input) {\n return 'م' === input;\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات'\n },\n preparse: function preparse(string) {\n return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/،/g, ',');\n },\n postformat: function postformat(string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n }\n });\n return arSa;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return arTn;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı'\n };\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gələn həftə] dddd [saat] LT',\n lastDay: '[dünən] LT',\n lastWeek: '[keçən həftə] dddd [saat] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s əvvəl',\n s: 'bir neçə saniyə',\n ss: '%d saniyə',\n m: 'bir dəqiqə',\n mm: '%d dəqiqə',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il'\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM: function isPM(input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function ordinal(number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n\n var a = number % 10,\n b = number % 100 - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return az;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2];\n }\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'месяц_месяцы_месяцаў',\n yy: 'год_гады_гадоў'\n };\n\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months: {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'),\n standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_')\n },\n monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),\n weekdays: {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'),\n standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/\n },\n weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm'\n },\n calendar: {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function nextWeek() {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function lastWeek() {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі секунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM: function isPM(input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function ordinal(number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) && number % 100 !== 12 && number % 100 !== 13 ? number + '-і' : number + '-ы';\n\n case 'D':\n return number + '-га';\n\n default:\n return number;\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return be;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var bg = moment.defineLocale('bg', {\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),\n monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function lastWeek() {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Миналия] dddd [в] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дена',\n w: 'седмица',\n ww: '%d седмици',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function ordinal(number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return bg;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var bm = moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split('_'),\n monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm'\n },\n calendar: {\n sameDay: '[Bi lɛrɛ] LT',\n nextDay: '[Sini lɛrɛ] LT',\n nextWeek: 'dddd [don lɛrɛ] LT',\n lastDay: '[Kunu lɛrɛ] LT',\n lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s kɔnɔ',\n past: 'a bɛ %s bɔ',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lɛrɛ kelen',\n hh: 'lɛrɛ %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return bm;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০'\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0'\n };\n var bn = moment.defineLocale('bn', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),\n monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়'\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর'\n },\n preparse: function preparse(string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function postformat(string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour: function meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'রাত' && hour >= 4 || meridiem === 'দুপুর' && hour < 5 || meridiem === 'বিকাল') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n }\n });\n return bn;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০'\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0'\n };\n var bnBd = moment.defineLocale('bn-bd', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),\n monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়'\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর'\n },\n preparse: function preparse(string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function postformat(string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,\n meridiemHour: function meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'রাত') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ভোর') {\n return hour;\n } else if (meridiem === 'সকাল') {\n return hour;\n } else if (meridiem === 'দুপুর') {\n return hour >= 3 ? hour : hour + 12;\n } else if (meridiem === 'বিকাল') {\n return hour + 12;\n } else if (meridiem === 'সন্ধ্যা') {\n return hour + 12;\n }\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 6) {\n return 'ভোর';\n } else if (hour < 12) {\n return 'সকাল';\n } else if (hour < 15) {\n return 'দুপুর';\n } else if (hour < 18) {\n return 'বিকাল';\n } else if (hour < 20) {\n return 'সন্ধ্যা';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n }\n });\n return bnBd;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '༡',\n 2: '༢',\n 3: '༣',\n 4: '༤',\n 5: '༥',\n 6: '༦',\n 7: '༧',\n 8: '༨',\n 9: '༩',\n 0: '༠'\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0'\n };\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),\n monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split('_'),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ'\n },\n preparse: function preparse(string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function postformat(string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'མཚན་མོ' && hour >= 4 || meridiem === 'ཉིན་གུང' && hour < 5 || meridiem === 'དགོང་དག') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n }\n });\n return bo;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh'\n };\n return number + ' ' + mutation(format[key], number);\n }\n\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n\n default:\n return number + ' vloaz';\n }\n }\n\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n\n return number;\n }\n\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n\n return text;\n }\n\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z'\n };\n\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var monthsParse = [/^gen/i, /^c[ʼ\\']hwe/i, /^meu/i, /^ebr/i, /^mae/i, /^(mez|eve)/i, /^gou/i, /^eos/i, /^gwe/i, /^her/i, /^du/i, /^ker/i],\n monthsRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex = /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [/^sul/i, /^lun/i, /^meurzh/i, /^merc[ʼ\\']her/i, /^yaou/i, /^gwener/i, /^sadorn/i],\n shortWeekdaysParse = [/^Sul/i, /^Lun/i, /^Meu/i, /^Mer/i, /^Yao/i, /^Gwe/i, /^Sad/i],\n minWeekdaysParse = [/^Su/i, /^Lu/i, /^Me([^r]|$)/i, /^Mer/i, /^Ya/i, /^Gw/i, /^Sa/i];\n var br = moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function ordinal(number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n },\n meridiemParse: /a.m.|g.m./,\n // goude merenn | a-raok merenn\n isPM: function isPM(token) {\n return token === 'g.m.';\n },\n meridiem: function meridiem(hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n }\n });\n return br;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n\n return result;\n\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n\n return result;\n\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n\n return result;\n\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n\n return result;\n\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n\n return result;\n\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function nextWeek() {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n\n case 3:\n return '[u] [srijedu] [u] LT';\n\n case 6:\n return '[u] [subotu] [u] LT';\n\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function lastWeek() {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n\n case 6:\n return '[prošle] [subote] [u] LT';\n\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return bs;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var ca = moment.defineLocale('ca', {\n months: {\n standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split('_'),\n isFormat: /D[oD]?(\\s)+MMMM/\n },\n monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm'\n },\n calendar: {\n sameDay: function sameDay() {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function nextDay() {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function nextWeek() {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function lastDay() {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function lastWeek() {\n return '[el] dddd [passat a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function ordinal(number, period) {\n var output = number === 1 ? 'r' : number === 2 ? 'n' : number === 3 ? 'r' : number === 4 ? 't' : 'è';\n\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return ca;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'),\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n monthsParse = [/^led/i, /^úno/i, /^bře/i, /^dub/i, /^kvě/i, /^(čvn|červen$|června)/i, /^(čvc|červenec|července)/i, /^srp/i, /^zář/i, /^říj/i, /^lis/i, /^pro/i],\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n\n switch (key) {\n case 's':\n // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n\n case 'ss':\n // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n\n case 'm':\n // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n\n case 'mm':\n // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n\n case 'h':\n // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n\n case 'hh':\n // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n\n case 'd':\n // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n\n case 'dd':\n // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n\n case 'M':\n // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n\n case 'MM':\n // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n\n case 'y':\n // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n\n case 'yy':\n // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY'\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function nextWeek() {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n\n case 3:\n return '[ve středu v] LT';\n\n case 4:\n return '[ve čtvrtek v] LT';\n\n case 5:\n return '[v pátek v] LT';\n\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function lastWeek() {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n\n case 3:\n return '[minulou středu v] LT';\n\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return cs;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),\n monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm'\n },\n calendar: {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L'\n },\n relativeTime: {\n future: function future(output) {\n var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран';\n return output + affix;\n },\n past: '%s каялла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр сехет',\n hh: '%d сехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return cv;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),\n weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function ordinal(number) {\n var b = number,\n output = '',\n lookup = ['', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed\n 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed\n ];\n\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return cy;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return da;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return de;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return deAt;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return deCh;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var months = ['ޖެނުއަރީ', 'ފެބްރުއަރީ', 'މާރިޗު', 'އޭޕްރީލު', 'މޭ', 'ޖޫން', 'ޖުލައި', 'އޯގަސްޓު', 'ސެޕްޓެމްބަރު', 'އޮކްޓޯބަރު', 'ނޮވެމްބަރު', 'ޑިސެމްބަރު'],\n weekdays = ['އާދިއްތަ', 'ހޯމަ', 'އަންގާރަ', 'ބުދަ', 'ބުރާސްފަތި', 'ހުކުރު', 'ހޮނިހިރު'];\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /މކ|މފ/,\n isPM: function isPM(input) {\n return 'މފ' === input;\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d'\n },\n preparse: function preparse(string) {\n return string.replace(/،/g, ',');\n },\n postformat: function postformat(string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7,\n // Sunday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n\n }\n });\n return dv;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function isFunction(input) {\n return typeof Function !== 'undefined' && input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),\n monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'),\n months: function months(momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (typeof format === 'string' && /D/.test(format.substring(0, format.indexOf('MMMM')))) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'),\n weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function meridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM: function isPM(input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A'\n },\n calendarEl: {\n sameDay: '[Σήμερα {}] LT',\n nextDay: '[Αύριο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function lastWeek() {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L'\n },\n calendar: function calendar(key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s πριν',\n s: 'λίγα δευτερόλεπτα',\n ss: '%d δευτερόλεπτα',\n m: 'ένα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ώρα',\n hh: '%d ώρες',\n d: 'μία μέρα',\n dd: '%d μέρες',\n M: 'ένας μήνας',\n MM: '%d μήνες',\n y: 'ένας χρόνος',\n yy: '%d χρόνια'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4st is the first week of the year.\n\n }\n });\n return el;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function ordinal(number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return enAu;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function ordinal(number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n }\n });\n return enCa;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function ordinal(number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return enGb;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function ordinal(number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return enIe;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function ordinal(number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n }\n });\n return enIl;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function ordinal(number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 1st is the first week of the year.\n\n }\n });\n return enIn;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function ordinal(number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return enNz;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function ordinal(number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return enSg;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm'\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function isPM(input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function meridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodiaŭ je] LT',\n nextDay: '[Morgaŭ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hieraŭ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaŭ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago',\n //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return eo;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n _monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort: function monthsShort(m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return _monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar: {\n sameDay: function sameDay() {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function nextDay() {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function nextWeek() {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function lastDay() {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function lastWeek() {\n return '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n },\n invalidDate: 'Fecha inválida'\n });\n return es;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n _monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort: function monthsShort(m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return _monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A'\n },\n calendar: {\n sameDay: function sameDay() {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function nextDay() {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function nextWeek() {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function lastDay() {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function lastWeek() {\n return '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return esDo;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n _monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esMx = moment.defineLocale('es-mx', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort: function monthsShort(m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return _monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar: {\n sameDay: function sameDay() {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function nextDay() {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function nextWeek() {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function lastDay() {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function lastWeek() {\n return '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n },\n invalidDate: 'Fecha inválida'\n });\n return esMx;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n _monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort: function monthsShort(m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return _monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A'\n },\n calendar: {\n sameDay: function sameDay() {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function nextDay() {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function nextWeek() {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function lastDay() {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function lastWeek() {\n return '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n }\n });\n return esUs;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat']\n };\n\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),\n monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return et;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),\n monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),\n monthsParseExact: true,\n weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm'\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return eu;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '۱',\n 2: '۲',\n 3: '۳',\n 4: '۴',\n 5: '۵',\n 6: '۶',\n 7: '۷',\n 8: '۸',\n 9: '۹',\n 0: '۰'\n },\n numberMap = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0'\n };\n var fa = moment.defineLocale('fa', {\n months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n weekdays: \"\\u06CC\\u06A9\\u200C\\u0634\\u0646\\u0628\\u0647_\\u062F\\u0648\\u0634\\u0646\\u0628\\u0647_\\u0633\\u0647\\u200C\\u0634\\u0646\\u0628\\u0647_\\u0686\\u0647\\u0627\\u0631\\u0634\\u0646\\u0628\\u0647_\\u067E\\u0646\\u062C\\u200C\\u0634\\u0646\\u0628\\u0647_\\u062C\\u0645\\u0639\\u0647_\\u0634\\u0646\\u0628\\u0647\".split('_'),\n weekdaysShort: \"\\u06CC\\u06A9\\u200C\\u0634\\u0646\\u0628\\u0647_\\u062F\\u0648\\u0634\\u0646\\u0628\\u0647_\\u0633\\u0647\\u200C\\u0634\\u0646\\u0628\\u0647_\\u0686\\u0647\\u0627\\u0631\\u0634\\u0646\\u0628\\u0647_\\u067E\\u0646\\u062C\\u200C\\u0634\\u0646\\u0628\\u0647_\\u062C\\u0645\\u0639\\u0647_\\u0634\\u0646\\u0628\\u0647\".split('_'),\n weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function isPM(input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[فردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال'\n },\n preparse: function preparse(string) {\n return string.replace(/[۰-۹]/g, function (match) {\n return numberMap[match];\n }).replace(/،/g, ',');\n },\n postformat: function postformat(string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal: '%dم',\n week: {\n dow: 6,\n // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n\n }\n });\n return fa;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),\n numbersFuture = ['nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden', numbersPast[7], numbersPast[8], numbersPast[9]];\n\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n\n case 'ss':\n result = isFuture ? 'sekunnin' : 'sekuntia';\n break;\n\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n\n function verbalNumber(number, isFuture) {\n return number < 10 ? isFuture ? numbersFuture[number] : numbersPast[number] : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),\n monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),\n weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm'\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return fi;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm'\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function ordinal(number) {\n return number;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return fil;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'),\n weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Í dag kl.] LT',\n nextDay: '[Í morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[Í gjár kl.] LT',\n lastWeek: '[síðstu] dddd [kl] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'um %s',\n past: '%s síðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tími',\n hh: '%d tímar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return fo;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var monthsStrictRegex = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse = [/^janv/i, /^févr/i, /^mars/i, /^avr/i, /^mai/i, /^juin/i, /^juil/i, /^août/i, /^sept/i, /^oct/i, /^nov/i, /^déc/i];\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function ordinal(number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n // Words with masculine grammatical gender: mois, trimestre, jour\n\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n // Words with feminine grammatical gender: semaine\n\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return fr;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function ordinal(number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n // Words with feminine grammatical gender: semaine\n\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n }\n });\n return frCa;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function ordinal(number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n // Words with feminine grammatical gender: semaine\n\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return frCh;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),\n monthsShort: function monthsShort(m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function ordinal(number) {\n return number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de');\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return fy;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var months = ['Eanáir', 'Feabhra', 'Márta', 'Aibreán', 'Bealtaine', 'Meitheamh', 'Iúil', 'Lúnasa', 'Meán Fómhair', 'Deireadh Fómhair', 'Samhain', 'Nollaig'],\n monthsShort = ['Ean', 'Feabh', 'Márt', 'Aib', 'Beal', 'Meith', 'Iúil', 'Lún', 'M.F.', 'D.F.', 'Samh', 'Noll'],\n weekdays = ['Dé Domhnaigh', 'Dé Luain', 'Dé Máirt', 'Dé Céadaoin', 'Déardaoin', 'Dé hAoine', 'Dé Sathairn'],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d míonna',\n y: 'bliain',\n yy: '%d bliain'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function ordinal(number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return ga;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var months = ['Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd'],\n monthsShort = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh'],\n weekdays = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-màireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function ordinal(number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return gd;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),\n monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar: {\n sameDay: function sameDay() {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function nextDay() {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function nextWeek() {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function lastDay() {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function lastWeek() {\n return '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: function future(str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return gl;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['एका मिणटान', 'एक मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['एका वरान', 'एक वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['एका दिसान', 'एक दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['एका म्हयन्यान', 'एक म्हयनो'],\n MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n y: ['एका वर्सान', 'एक वर्स'],\n yy: [number + ' वर्सांनी', number + ' वर्सां']\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),\n format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split('_'),\n isFormat: /MMMM(\\s)+D[oD]?/\n },\n monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]'\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फाल्यां] LT',\n nextWeek: '[फुडलो] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function ordinal(number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week\n doy: 3 // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n }\n });\n return gomDeva;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam']\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split('_'),\n isFormat: /MMMM(\\s)+D[oD]?/\n },\n monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]'\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function ordinal(number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week\n doy: 3 // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n }\n });\n return gomLatn;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '૧',\n 2: '૨',\n 3: '૩',\n 4: '૪',\n 5: '૫',\n 6: '૬',\n 7: '૭',\n 8: '૮',\n 9: '૯',\n 0: '૦'\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0'\n };\n var gu = moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split('_'),\n monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split('_'),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split('_'),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે'\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પહેલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ'\n },\n preparse: function preparse(string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function postformat(string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n }\n });\n return gu;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var he = moment.defineLocale('he', {\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),\n monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function hh(number) {\n if (number === 2) {\n return 'שעתיים';\n }\n\n return number + ' שעות';\n },\n d: 'יום',\n dd: function dd(number) {\n if (number === 2) {\n return 'יומיים';\n }\n\n return number + ' ימים';\n },\n M: 'חודש',\n MM: function MM(number) {\n if (number === 2) {\n return 'חודשיים';\n }\n\n return number + ' חודשים';\n },\n y: 'שנה',\n yy: function yy(number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n\n return number + ' שנים';\n }\n },\n meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM: function isPM(input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n }\n });\n return he;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०'\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n },\n monthsParse = [/^जन/i, /^फ़र|फर/i, /^मार्च/i, /^अप्रै/i, /^मई/i, /^जून/i, /^जुल/i, /^अग/i, /^सितं|सित/i, /^अक्टू/i, /^नव|नवं/i, /^दिसं|दिस/i],\n shortMonthsParse = [/^जन/i, /^फ़र/i, /^मार्च/i, /^अप्रै/i, /^मई/i, /^जून/i, /^जुल/i, /^अग/i, /^सित/i, /^अक्टू/i, /^नव/i, /^दिस/i];\n var hi = moment.defineLocale('hi', {\n months: {\n format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),\n standalone: 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split('_')\n },\n monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे'\n },\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: shortMonthsParse,\n monthsRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n monthsShortRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n monthsStrictRegex: /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n monthsShortStrictRegex: /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष'\n },\n preparse: function preparse(string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function postformat(string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n }\n });\n return hi;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n\n return result;\n\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n\n return result;\n\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n\n return result;\n\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n\n return result;\n\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n\n return result;\n\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'),\n standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_')\n },\n monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function nextWeek() {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n\n case 3:\n return '[u] [srijedu] [u] LT';\n\n case 6:\n return '[u] [subotu] [u] LT';\n\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function lastWeek() {\n switch (this.day()) {\n case 0:\n return '[prošlu] [nedjelju] [u] LT';\n\n case 3:\n return '[prošlu] [srijedu] [u] LT';\n\n case 6:\n return '[prošle] [subote] [u] LT';\n\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return hr;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt : https://github.com/passatgt\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\n\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n\n switch (key) {\n case 's':\n return isFuture || withoutSuffix ? 'néhány másodperc' : 'néhány másodperce';\n\n case 'ss':\n return num + (isFuture || withoutSuffix) ? ' másodperc' : ' másodperce';\n\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n\n return '';\n }\n\n function week(isFuture) {\n return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';\n }\n\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),\n monthsShort: 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm'\n },\n meridiemParse: /de|du/i,\n isPM: function isPM(input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function meridiem(hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function nextWeek() {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function lastWeek() {\n return week.call(this, false);\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return hu;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'),\n standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_')\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm'\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function nextWeek() {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function lastWeek() {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի'\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function isPM(input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function meridiem(hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function ordinal(number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n\n return number + '-րդ';\n\n default:\n return number;\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return hyAm;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function meridiem(hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun'\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n }\n });\n return id;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n\n return true;\n }\n\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n\n switch (key) {\n case 's':\n return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';\n\n case 'ss':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum');\n }\n\n return result + 'sekúnda';\n\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n\n case 'mm':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum');\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n\n return result + 'mínútu';\n\n case 'hh':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');\n }\n\n return result + 'klukkustund';\n\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n\n return isFuture ? 'dag' : 'degi';\n\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n\n return result + (isFuture ? 'dag' : 'degi');\n\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n\n return isFuture ? 'mánuð' : 'mánuði';\n\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n\n return result + (isFuture ? 'mánuð' : 'mánuði');\n\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'),\n monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm'\n },\n calendar: {\n sameDay: '[í dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[í gær kl.] LT',\n lastWeek: '[síðasta] dddd [kl.] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s síðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return is;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: function sameDay() {\n return '[Oggi a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n },\n nextDay: function nextDay() {\n return '[Domani a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n },\n nextWeek: function nextWeek() {\n return 'dddd [a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n },\n lastDay: function lastDay() {\n return '[Ieri a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n },\n lastWeek: function lastWeek() {\n switch (this.day()) {\n case 0:\n return '[La scorsa] dddd [a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n\n default:\n return '[Lo scorso] dddd [a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return it;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function lastWeek() {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: function future(s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return itCh;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var ja = moment.defineLocale('ja', {\n eras: [{\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R'\n }, {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H'\n }, {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S'\n }, {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T'\n }, {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M'\n }, {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD'\n }, {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC'\n }],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function eraYearOrdinalParse(input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm'\n },\n meridiemParse: /午前|午後/i,\n isPM: function isPM(input) {\n return input === '午後';\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function nextWeek(now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function lastWeek(now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function ordinal(number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年'\n }\n });\n return ja;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function meridiem(hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return jv;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var ka = moment.defineLocale('ka', {\n months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'),\n isFormat: /(წინა|შემდეგ)/\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვალ] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინა] dddd LT-ზე',\n sameElse: 'L'\n },\n relativeTime: {\n future: function future(s) {\n return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function ($0, $1, $2) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n });\n },\n past: function past(s) {\n if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n\n return s;\n },\n s: 'რამდენიმე წამი',\n ss: '%d წამი',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'საათი',\n hh: '%d საათი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი'\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function ordinal(number) {\n if (number === 0) {\n return number;\n }\n\n if (number === 1) {\n return number + '-ლი';\n }\n\n if (number < 20 || number <= 100 && number % 20 === 0 || number % 100 === 0) {\n return 'მე-' + number;\n }\n\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7\n }\n });\n return ka;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші'\n };\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function ordinal(number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return kk;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '១',\n 2: '២',\n 3: '៣',\n 4: '៤',\n 5: '៥',\n 6: '៦',\n 7: '៧',\n 8: '៨',\n 9: '៩',\n 0: '០'\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0'\n };\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),\n monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function isPM(input) {\n return input === 'ល្ងាច';\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ'\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function preparse(string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function postformat(string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return km;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '೧',\n 2: '೨',\n 3: '೩',\n 4: '೪',\n 5: '೫',\n 6: '೬',\n 7: '೭',\n 8: '೮',\n 9: '೯',\n 0: '೦'\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0'\n };\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split('_'),\n monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split('_'),\n monthsParseExact: true,\n weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split('_'),\n weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar: {\n sameDay: '[ಇಂದು] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನ್ನೆ] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss: '%d ಸೆಕೆಂಡುಗಳು',\n m: 'ಒಂದು ನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದು ಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದು ದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದು ತಿಂಗಳು',\n MM: '%d ತಿಂಗಳು',\n y: 'ಒಂದು ವರ್ಷ',\n yy: '%d ವರ್ಷ'\n },\n preparse: function preparse(string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function postformat(string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour: function meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function ordinal(number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n }\n });\n return kn;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee \n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var ko = moment.defineLocale('ko', {\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm'\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function ordinal(number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n\n case 'M':\n return number + '월';\n\n case 'w':\n case 'W':\n return number + '주';\n\n default:\n return number;\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function isPM(token) {\n return token === '오후';\n },\n meridiem: function meridiem(hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n }\n });\n return ko;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠'\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0'\n },\n months = ['کانونی دووەم', 'شوبات', 'ئازار', 'نیسان', 'ئایار', 'حوزەیران', 'تەمموز', 'ئاب', 'ئەیلوول', 'تشرینی یەكەم', 'تشرینی دووەم', 'كانونی یەکەم'];\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays: 'یهكشهممه_دووشهممه_سێشهممه_چوارشهممه_پێنجشهممه_ههینی_شهممه'.split('_'),\n weekdaysShort: 'یهكشهم_دووشهم_سێشهم_چوارشهم_پێنجشهم_ههینی_شهممه'.split('_'),\n weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n meridiemParse: /ئێواره|بهیانی/,\n isPM: function isPM(input) {\n return /ئێواره/.test(input);\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 12) {\n return 'بهیانی';\n } else {\n return 'ئێواره';\n }\n },\n calendar: {\n sameDay: '[ئهمرۆ كاتژمێر] LT',\n nextDay: '[بهیانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'له %s',\n past: '%s',\n s: 'چهند چركهیهك',\n ss: 'چركه %d',\n m: 'یهك خولهك',\n mm: '%d خولهك',\n h: 'یهك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یهك ڕۆژ',\n dd: '%d ڕۆژ',\n M: 'یهك مانگ',\n MM: '%d مانگ',\n y: 'یهك ساڵ',\n yy: '%d ساڵ'\n },\n preparse: function preparse(string) {\n return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/،/g, ',');\n },\n postformat: function postformat(string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n week: {\n dow: 6,\n // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n\n }\n });\n return ku;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү'\n };\n var ky = moment.defineLocale('ky', {\n months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),\n monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Бүгүн саат] LT',\n nextDay: '[Эртең саат] LT',\n nextWeek: 'dddd [саат] LT',\n lastDay: '[Кечээ саат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече секунд',\n ss: '%d секунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир саат',\n hh: '%d саат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function ordinal(number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return ky;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n\n return 'an ' + string;\n }\n\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n\n\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n\n if (isNaN(number)) {\n return false;\n }\n\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function lastWeek() {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n\n default:\n return '[Leschte] dddd [um] LT';\n }\n }\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return lb;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var lo = moment.defineLocale('lo', {\n months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),\n monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),\n weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function isPM(input) {\n return input === 'ຕອນແລງ';\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້ອື່ນເວລາ] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'ອີກ %s',\n past: '%sຜ່ານມາ',\n s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືອນ',\n MM: '%d ເດືອນ',\n y: '1 ປີ',\n yy: '%d ປີ'\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function ordinal(number) {\n return 'ທີ່' + number;\n }\n });\n return lo;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var units = {\n ss: 'sekundė_sekundžių_sekundes',\n m: 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h: 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M: 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus'\n };\n\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix ? forms(key)[0] : isFuture ? forms(key)[1] : forms(key)[2];\n }\n\n function special(number) {\n return number % 10 === 0 || number > 10 && number < 20;\n }\n\n function forms(key) {\n return units[key].split('_');\n }\n\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n\n if (number === 1) {\n return result + translateSingular(number, withoutSuffix, key[0], isFuture);\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),\n standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'),\n standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),\n isFormat: /dddd HH:mm/\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'\n },\n calendar: {\n sameDay: '[Šiandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Praėjusį] dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieš %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function ordinal(number) {\n return number + '-oji';\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return lt;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var units = {\n ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n h: 'stundas_stundām_stunda_stundas'.split('_'),\n hh: 'stundas_stundām_stunda_stundas'.split('_'),\n d: 'dienas_dienām_diena_dienas'.split('_'),\n dd: 'dienas_dienām_diena_dienas'.split('_'),\n M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_')\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n var lv = moment.defineLocale('lv', {\n months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),\n monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm'\n },\n calendar: {\n sameDay: '[Šodien pulksten] LT',\n nextDay: '[Rīt pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[Pagājušā] dddd [pulksten] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'pēc %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return lv;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač : https://github.com/miodragnikac\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina']\n },\n correctGrammaticalCase: function correctGrammaticalCase(number, wordKey) {\n return number === 1 ? wordKey[0] : number >= 2 && number <= 4 ? wordKey[1] : wordKey[2];\n },\n translate: function translate(number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n }\n }\n };\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n nextWeek: function nextWeek() {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n\n case 3:\n return '[u] [srijedu] [u] LT';\n\n case 6:\n return '[u] [subotu] [u] LT';\n\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function lastWeek() {\n var lastWeekDays = ['[prošle] [nedjelje] [u] LT', '[prošlog] [ponedjeljka] [u] LT', '[prošlog] [utorka] [u] LT', '[prošle] [srijede] [u] LT', '[prošlog] [četvrtka] [u] LT', '[prošlog] [petka] [u] LT', '[prošle] [subote] [u] LT'];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return me;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan : https://github.com/johnideal\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split('_'),\n monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm'\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return mi;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'),\n weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[Денес во] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function lastWeek() {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку секунди',\n ss: '%d секунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден час',\n hh: '%d часа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден месец',\n MM: '%d месеци',\n y: 'една година',\n yy: '%d години'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function ordinal(number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return mk;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var ml = moment.defineLocale('ml', {\n months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),\n monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),\n monthsParseExact: true,\n weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),\n weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -നു',\n LTS: 'A h:mm:ss -നു',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -നു',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -നു'\n },\n calendar: {\n sameDay: '[ഇന്ന്] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇന്നലെ] LT',\n lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s കഴിഞ്ഞ്',\n past: '%s മുൻപ്',\n s: 'അൽപ നിമിഷങ്ങൾ',\n ss: '%d സെക്കൻഡ്',\n m: 'ഒരു മിനിറ്റ്',\n mm: '%d മിനിറ്റ്',\n h: 'ഒരു മണിക്കൂർ',\n hh: '%d മണിക്കൂർ',\n d: 'ഒരു ദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരു മാസം',\n MM: '%d മാസം',\n y: 'ഒരു വർഷം',\n yy: '%d വർഷം'\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour: function meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'രാത്രി' && hour >= 4 || meridiem === 'ഉച്ച കഴിഞ്ഞ്' || meridiem === 'വൈകുന്നേരം') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n }\n });\n return ml;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split('_'),\n monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split('_'),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm'\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function isPM(input) {\n return input === 'ҮХ';\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function ordinal(number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n\n default:\n return number;\n }\n }\n });\n return mn;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०'\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n\n case 'ss':\n output = '%d सेकंद';\n break;\n\n case 'm':\n output = 'एक मिनिट';\n break;\n\n case 'mm':\n output = '%d मिनिटे';\n break;\n\n case 'h':\n output = 'एक तास';\n break;\n\n case 'hh':\n output = '%d तास';\n break;\n\n case 'd':\n output = 'एक दिवस';\n break;\n\n case 'dd':\n output = '%d दिवस';\n break;\n\n case 'M':\n output = 'एक महिना';\n break;\n\n case 'MM':\n output = '%d महिने';\n break;\n\n case 'y':\n output = 'एक वर्ष';\n break;\n\n case 'yy':\n output = '%d वर्षे';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n\n case 'ss':\n output = '%d सेकंदां';\n break;\n\n case 'm':\n output = 'एका मिनिटा';\n break;\n\n case 'mm':\n output = '%d मिनिटां';\n break;\n\n case 'h':\n output = 'एका तासा';\n break;\n\n case 'hh':\n output = '%d तासां';\n break;\n\n case 'd':\n output = 'एका दिवसा';\n break;\n\n case 'dd':\n output = '%d दिवसां';\n break;\n\n case 'M':\n output = 'एका महिन्या';\n break;\n\n case 'MM':\n output = '%d महिन्यां';\n break;\n\n case 'y':\n output = 'एका वर्षा';\n break;\n\n case 'yy':\n output = '%d वर्षां';\n break;\n }\n }\n\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),\n monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता'\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उद्या] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr\n },\n preparse: function preparse(string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function postformat(string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n meridiemHour: function meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (meridiem === 'दुपारी' || meridiem === 'सायंकाळी' || meridiem === 'रात्री') {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n }\n });\n return mr;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function meridiem(hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return ms;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function meridiem(hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return msMy;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split('_'),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split('_'),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'ġurnata',\n dd: '%d ġranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return mt;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '၁',\n 2: '၂',\n 3: '၃',\n 4: '၄',\n 5: '၅',\n 6: '၆',\n 7: '၇',\n 8: '၈',\n 9: '၉',\n 0: '၀'\n },\n numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0'\n };\n var my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်'\n },\n preparse: function preparse(string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function postformat(string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return my;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm'\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n w: 'en uke',\n ww: '%d uker',\n M: 'en måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return nb;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०'\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n };\n var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'),\n monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'),\n weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे'\n },\n preparse: function preparse(string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function postformat(string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour: function meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[भोलि] LT',\n nextWeek: '[आउँदो] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गएको] dddd[,] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही क्षण',\n ss: '%d सेकेण्ड',\n m: 'एक मिनेट',\n mm: '%d मिनेट',\n h: 'एक घण्टा',\n hh: '%d घण्टा',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महिना',\n MM: '%d महिना',\n y: 'एक बर्ष',\n yy: '%d बर्ष'\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n }\n });\n return ne;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort: function monthsShort(m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n w: 'één week',\n ww: '%d weken',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function ordinal(number) {\n return number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de');\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return nl;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort: function monthsShort(m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function ordinal(number) {\n return number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de');\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return nlBe;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm'\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n w: 'ei veke',\n ww: '%d veker',\n M: 'ein månad',\n MM: '%d månader',\n y: 'eit år',\n yy: '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return nn;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split('_'),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split('_'),\n isFormat: /D[oD]?(\\s)+MMMM/\n },\n monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split('_'),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm'\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function ordinal(number, period) {\n var output = number === 1 ? 'r' : number === 2 ? 'n' : number === 3 ? 'r' : number === 4 ? 't' : 'è';\n\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4\n }\n });\n return ocLnc;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '੧',\n 2: '੨',\n 3: '੩',\n 4: '੪',\n 5: '੫',\n 6: '੬',\n 7: '੭',\n 8: '੮',\n 9: '੯',\n 0: '੦'\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0'\n };\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'),\n weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ'\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕੁਝ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ'\n },\n preparse: function preparse(string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function postformat(string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour: function meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n }\n });\n return paIn;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'),\n monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_'),\n monthsParse = [/^sty/i, /^lut/i, /^mar/i, /^kwi/i, /^maj/i, /^cze/i, /^lip/i, /^sie/i, /^wrz/i, /^paź/i, /^lis/i, /^gru/i];\n\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n\n case 'ww':\n return result + (plural(number) ? 'tygodnie' : 'tygodni');\n\n case 'MM':\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\n\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months: function months(momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function nextWeek() {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function lastWeek() {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n\n case 3:\n return '[W zeszłą środę o] LT';\n\n case 6:\n return '[W zeszłą sobotę o] LT';\n\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzień',\n dd: '%d dni',\n w: 'tydzień',\n ww: translate,\n M: 'miesiąc',\n MM: translate,\n y: 'rok',\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return pl;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function lastWeek() {\n return this.day() === 0 || this.day() === 6 ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n w: 'uma semana',\n ww: '%d semanas',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return pt;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split('_'),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function lastWeek() {\n return this.day() === 0 || this.day() === 6 ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n invalidDate: 'Data inválida'\n });\n return ptBr;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n ww: 'săptămâni',\n MM: 'luni',\n yy: 'ani'\n },\n separator = ' ';\n\n if (number % 100 >= 20 || number >= 100 && number % 100 === 0) {\n separator = ' de ';\n }\n\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),\n monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n w: 'o săptămână',\n ww: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return ro;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2];\n }\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n ww: 'неделя_недели_недель',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет'\n };\n\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var monthsParse = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i]; // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n\n var ru = moment.defineLocale('ru', {\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),\n standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),\n standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')\n },\n weekdays: {\n standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n // копия предыдущего\n monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n // полные названия с падежами\n monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n // Выражение, которое соответствует только сокращённым формам\n monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm'\n },\n calendar: {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function nextWeek(now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function lastWeek(now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'час',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n w: 'неделя',\n ww: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM: function isPM(input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function ordinal(number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n\n case 'D':\n return number + '-го';\n\n case 'w':\n case 'W':\n return number + '-я';\n\n default:\n return number;\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return ru;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var months = ['جنوري', 'فيبروري', 'مارچ', 'اپريل', 'مئي', 'جون', 'جولاءِ', 'آگسٽ', 'سيپٽمبر', 'آڪٽوبر', 'نومبر', 'ڊسمبر'],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm'\n },\n meridiemParse: /صبح|شام/,\n isPM: function isPM(input) {\n return 'شام' === input;\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين هفتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل هفتي] dddd [تي] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'هڪ منٽ',\n mm: '%d منٽ',\n h: 'هڪ ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'هڪ ڏينهن',\n dd: '%d ڏينهن',\n M: 'هڪ مهينو',\n MM: '%d مهينا',\n y: 'هڪ سال',\n yy: '%d سال'\n },\n preparse: function preparse(string) {\n return string.replace(/،/g, ',');\n },\n postformat: function postformat(string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return sd;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var se = moment.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'),\n monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return se;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n /*jshint -W100*/\n\n var si = moment.defineLocale('si', {\n months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'),\n monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'),\n weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්රහ_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_ස_අ_බ_බ්ර_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss'\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'තත්පර කිහිපය',\n ss: 'තත්පර %d',\n m: 'මිනිත්තුව',\n mm: 'මිනිත්තු %d',\n h: 'පැය',\n hh: 'පැය %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මාසය',\n MM: 'මාස %d',\n y: 'වසර',\n yy: 'වසර %d'\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal: function ordinal(number) {\n return number + ' වැනි';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM: function isPM(input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem: function meridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n }\n });\n return si;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n\n function plural(n) {\n return n > 1 && n < 5;\n }\n\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n\n switch (key) {\n case 's':\n // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n\n case 'ss':\n // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n\n case 'm':\n // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n\n case 'mm':\n // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n\n case 'h':\n // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n\n case 'hh':\n // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n\n case 'd':\n // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n\n case 'dd':\n // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n\n case 'M':\n // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n\n case 'MM':\n // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n\n case 'y':\n // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n\n case 'yy':\n // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function nextWeek() {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n\n case 3:\n return '[v stredu o] LT';\n\n case 4:\n return '[vo štvrtok o] LT';\n\n case 5:\n return '[v piatok o] LT';\n\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function lastWeek() {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n\n case 3:\n return '[minulú stredu o] LT';\n\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return sk;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n\n switch (key) {\n case 's':\n return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';\n\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n\n return result;\n\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n\n return result;\n\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n\n return result;\n\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n\n return result;\n\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n\n return result;\n\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n nextWeek: function nextWeek() {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n\n case 3:\n return '[v] [sredo] [ob] LT';\n\n case 6:\n return '[v] [soboto] [ob] LT';\n\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek: function lastWeek() {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return sl;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function isPM(input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function meridiem(hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return sq;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jedne minute'],\n mm: ['minut', 'minute', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mesec', 'meseca', 'meseci'],\n yy: ['godina', 'godine', 'godina']\n },\n correctGrammaticalCase: function correctGrammaticalCase(number, wordKey) {\n return number === 1 ? wordKey[0] : number >= 2 && number <= 4 ? wordKey[1] : wordKey[2];\n },\n translate: function translate(number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n }\n }\n };\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function nextWeek() {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n\n case 3:\n return '[u] [sredu] [u] LT';\n\n case 6:\n return '[u] [subotu] [u] LT';\n\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function lastWeek() {\n var lastWeekDays = ['[prošle] [nedelje] [u] LT', '[prošlog] [ponedeljka] [u] LT', '[prošlog] [utorka] [u] LT', '[prošle] [srede] [u] LT', '[prošlog] [četvrtka] [u] LT', '[prošlog] [petka] [u] LT', '[prošle] [subote] [u] LT'];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return sr;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једне минуте'],\n mm: ['минут', 'минуте', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n dd: ['дан', 'дана', 'дана'],\n MM: ['месец', 'месеца', 'месеци'],\n yy: ['година', 'године', 'година']\n },\n correctGrammaticalCase: function correctGrammaticalCase(number, wordKey) {\n return number === 1 ? wordKey[0] : number >= 2 && number <= 4 ? wordKey[1] : wordKey[2];\n },\n translate: function translate(number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n }\n }\n };\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'),\n monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm'\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function nextWeek() {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n\n case 3:\n return '[у] [среду] [у] LT';\n\n case 6:\n return '[у] [суботу] [у] LT';\n\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function lastWeek() {\n var lastWeekDays = ['[прошле] [недеље] [у] LT', '[прошлог] [понедељка] [у] LT', '[прошлог] [уторка] [у] LT', '[прошле] [среде] [у] LT', '[прошлог] [четвртка] [у] LT', '[прошлог] [петка] [у] LT', '[прошле] [суботе] [у] LT'];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико секунди',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'дан',\n dd: translator.translate,\n M: 'месец',\n MM: translator.translate,\n y: 'годину',\n yy: translator.translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n\n }\n });\n return srCyrl;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies : https://github.com/nicolaidavies\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split('_'),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A'\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka'\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function meridiem(hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return ss;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function ordinal(number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? ':e' : b === 1 ? ':a' : b === 2 ? ':a' : b === 3 ? ':e' : ':e';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return sv;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'hh:mm A',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return sw;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '௧',\n 2: '௨',\n 3: '௩',\n 4: '௪',\n 5: '௫',\n 6: '௬',\n 7: '௭',\n 8: '௮',\n 9: '௯',\n 0: '௦'\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0'\n };\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),\n monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),\n weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'),\n weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'),\n weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm'\n },\n calendar: {\n sameDay: '[இன்று] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேற்று] LT',\n lastWeek: '[கடந்த வாரம்] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s இல்',\n past: '%s முன்',\n s: 'ஒரு சில விநாடிகள்',\n ss: '%d விநாடிகள்',\n m: 'ஒரு நிமிடம்',\n mm: '%d நிமிடங்கள்',\n h: 'ஒரு மணி நேரம்',\n hh: '%d மணி நேரம்',\n d: 'ஒரு நாள்',\n dd: '%d நாட்கள்',\n M: 'ஒரு மாதம்',\n MM: '%d மாதங்கள்',\n y: 'ஒரு வருடம்',\n yy: '%d ஆண்டுகள்'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal: function ordinal(number) {\n return number + 'வது';\n },\n preparse: function preparse(string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function postformat(string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour: function meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n }\n });\n return ta;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var te = moment.defineLocale('te', {\n months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'),\n monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'),\n monthsParseExact: true,\n weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'),\n weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar: {\n sameDay: '[నేడు] LT',\n nextDay: '[రేపు] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నిన్న] LT',\n lastWeek: '[గత] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s లో',\n past: '%s క్రితం',\n s: 'కొన్ని క్షణాలు',\n ss: '%d సెకన్లు',\n m: 'ఒక నిమిషం',\n mm: '%d నిమిషాలు',\n h: 'ఒక గంట',\n hh: '%d గంటలు',\n d: 'ఒక రోజు',\n dd: '%d రోజులు',\n M: 'ఒక నెల',\n MM: '%d నెలలు',\n y: 'ఒక సంవత్సరం',\n yy: '%d సంవత్సరాలు'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n ordinal: '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour: function meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n }\n });\n return te;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split('_'),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function ordinal(number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return tet;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум'\n };\n var tg = moment.defineLocale('tg', {\n months: {\n format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split('_'),\n standalone: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_')\n },\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split('_'),\n weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Имрӯз соати] LT',\n nextDay: '[Фардо соати] LT',\n lastDay: '[Дирӯз соати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'якчанд сония',\n m: 'як дақиқа',\n mm: '%d дақиқа',\n h: 'як соат',\n hh: '%d соат',\n d: 'як рӯз',\n dd: '%d рӯз',\n M: 'як моҳ',\n MM: '%d моҳ',\n y: 'як сол',\n yy: '%d сол'\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function ordinal(number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 1th is the first week of the year.\n\n }\n });\n return tg;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var th = moment.defineLocale('th', {\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),\n monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'),\n // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm'\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function isPM(input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n w: '1 สัปดาห์',\n ww: '%d สัปดาห์',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี'\n }\n });\n return th;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inji\",\n 5: \"'inji\",\n 8: \"'inji\",\n 70: \"'inji\",\n 80: \"'inji\",\n 2: \"'nji\",\n 7: \"'nji\",\n 20: \"'nji\",\n 50: \"'nji\",\n 3: \"'ünji\",\n 4: \"'ünji\",\n 100: \"'ünji\",\n 6: \"'njy\",\n 9: \"'unjy\",\n 10: \"'unjy\",\n 30: \"'unjy\",\n 60: \"'ynjy\",\n 90: \"'ynjy\"\n };\n var tk = moment.defineLocale('tk', {\n months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split('_'),\n monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split('_'),\n weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[bugün sagat] LT',\n nextDay: '[ertir sagat] LT',\n nextWeek: '[indiki] dddd [sagat] LT',\n lastDay: '[düýn] LT',\n lastWeek: '[geçen] dddd [sagat] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s soň',\n past: '%s öň',\n s: 'birnäçe sekunt',\n m: 'bir minut',\n mm: '%d minut',\n h: 'bir sagat',\n hh: '%d sagat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir aý',\n MM: '%d aý',\n y: 'bir ýyl',\n yy: '%d ýyl'\n },\n ordinal: function ordinal(number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'unjy\";\n }\n\n var a = number % 10,\n b = number % 100 - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return tk;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm'\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function ordinal(number) {\n return number;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return tlPh;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time = output.indexOf('jaj') !== -1 ? time.slice(0, -3) + 'leS' : output.indexOf('jar') !== -1 ? time.slice(0, -3) + 'waQ' : output.indexOf('DIS') !== -1 ? time.slice(0, -3) + 'nem' : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time = output.indexOf('jaj') !== -1 ? time.slice(0, -3) + 'Hu’' : output.indexOf('jar') !== -1 ? time.slice(0, -3) + 'wen' : output.indexOf('DIS') !== -1 ? time.slice(0, -3) + 'ben' : time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n\n case 'mm':\n return numberNoun + ' tup';\n\n case 'hh':\n return numberNoun + ' rep';\n\n case 'dd':\n return numberNoun + ' jaj';\n\n case 'MM':\n return numberNoun + ' jar';\n\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor(number % 1000 / 100),\n ten = Math.floor(number % 100 / 10),\n one = number % 10,\n word = '';\n\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n\n return word === '' ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'),\n monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L'\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa’ tup',\n mm: translate,\n h: 'wa’ rep',\n hh: translate,\n d: 'wa’ jaj',\n dd: translate,\n M: 'wa’ jar',\n MM: translate,\n y: 'wa’ DIS',\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return tlh;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\"\n };\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),\n weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function meridiem(hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function isPM(input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n w: 'bir hafta',\n ww: '%d hafta',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl'\n },\n ordinal: function ordinal(number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n\n var a = number % 10,\n b = number % 100 - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return tr;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm'\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function isPM(input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function meridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à] LT',\n nextDay: '[demà à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[ieiri à] LT',\n lastWeek: '[sür el] dddd [lasteu à] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n míut\", \"'iens míut\"],\n mm: [number + ' míuts', '' + number + ' míuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars']\n };\n return isFuture ? format[key][0] : withoutSuffix ? format[key][0] : format[key][1];\n }\n\n return tzl;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var tzm = moment.defineLocale('tzm', {\n months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),\n monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past: 'ⵢⴰⵏ %s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉⵏⵓⴺ',\n mm: '%d ⵎⵉⵏⵓⴺ',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰⵏ',\n M: 'ⴰⵢoⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔⵏ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙⵏ'\n },\n week: {\n dow: 6,\n // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n\n }\n });\n return tzm;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuḍ',\n mm: '%d minuḍ',\n h: 'saɛa',\n hh: '%d tassaɛin',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn'\n },\n week: {\n dow: 6,\n // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n\n }\n });\n return tzmLatn;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split('_'),\n monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split('_'),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split('_'),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm'\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'يېرىم كېچە' || meridiem === 'سەھەر' || meridiem === 'چۈشتىن بۇرۇن') {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function meridiem(hour, minute, isLower) {\n var hm = hour * 100 + minute;\n\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function ordinal(number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n\n default:\n return number;\n }\n },\n preparse: function preparse(string) {\n return string.replace(/،/g, ',');\n },\n postformat: function postformat(string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n\n }\n });\n return ugCn;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2];\n }\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років'\n };\n\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),\n accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),\n genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative'].slice(1, 7).concat(weekdays['nominative'].slice(0, 1));\n }\n\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format) ? 'accusative' : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format) ? 'genitive' : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'),\n standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_')\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm'\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function lastWeek() {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'місяць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function isPM(input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function ordinal(number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n\n case 'D':\n return number + '-го';\n\n default:\n return number;\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return uk;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var months = ['جنوری', 'فروری', 'مارچ', 'اپریل', 'مئی', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', 'دسمبر'],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm'\n },\n meridiemParse: /صبح|شام/,\n isPM: function isPM(input) {\n return 'شام' === input;\n },\n meridiem: function meridiem(hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[کل بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[گذشتہ روز بوقت] LT',\n lastWeek: '[گذشتہ] dddd [بوقت] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹہ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماہ',\n MM: '%d ماہ',\n y: 'ایک سال',\n yy: '%d سال'\n },\n preparse: function preparse(string) {\n return string.replace(/،/g, ',');\n },\n postformat: function postformat(string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return ur;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var uz = moment.defineLocale('uz', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm'\n },\n calendar: {\n sameDay: '[Бугун соат] LT [да]',\n nextDay: '[Эртага] LT [да]',\n nextWeek: 'dddd [куни соат] LT [да]',\n lastDay: '[Кеча соат] LT [да]',\n lastWeek: '[Утган] dddd [куни соат] LT [да]',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурсат',\n ss: '%d фурсат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир соат',\n hh: '%d соат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return uz;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm'\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L'\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return uzLatn;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var vi = moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'),\n monthsShort: 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split('_'),\n monthsParseExact: true,\n weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function isPM(input) {\n return /^ch$/i.test(input);\n },\n meridiem: function meridiem(hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s tới',\n past: '%s trước',\n s: 'vài giây',\n ss: '%d giây',\n m: 'một phút',\n mm: '%d phút',\n h: 'một giờ',\n hh: '%d giờ',\n d: 'một ngày',\n dd: '%d ngày',\n w: 'một tuần',\n ww: '%d tuần',\n M: 'một tháng',\n MM: '%d tháng',\n y: 'một năm',\n yy: '%d năm'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function ordinal(number) {\n return number;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return vi;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'),\n monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'),\n monthsParseExact: true,\n weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function ordinal(number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return xPseudo;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var yo = moment.defineLocale('yo', {\n months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A'\n },\n calendar: {\n sameDay: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdún %d'\n },\n dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n ordinal: 'ọjọ́ %d',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return yo;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function meridiem(hour, minute, isLower) {\n var hm = hour * 100 + minute;\n\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function nextWeek(now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function lastWeek(now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function ordinal(number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n\n case 'M':\n return number + '月';\n\n case 'w':\n case 'W':\n return number + '周';\n\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n w: '1 周',\n ww: '%d 周',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年'\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return zhCn;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function meridiem(hour, minute, isLower) {\n var hm = hour * 100 + minute;\n\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上午';\n } else if (hm === 1200) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function ordinal(number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n\n case 'M':\n return number + '月';\n\n case 'w':\n case 'W':\n return number + '週';\n\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年'\n }\n });\n return zhHk;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function meridiem(hour, minute, isLower) {\n var hm = hour * 100 + minute;\n\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function ordinal(number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n\n case 'M':\n return number + '月';\n\n case 'w':\n case 'W':\n return number + '週';\n\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s內',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年'\n }\n });\n return zhMo;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n;\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function meridiem(hour, minute, isLower) {\n var hm = hour * 100 + minute;\n\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function ordinal(number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n\n case 'M':\n return number + '月';\n\n case 'w':\n case 'W':\n return number + '週';\n\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年'\n }\n });\n return zhTw;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n\n/* global define */\n(function () {\n 'use strict';\n\n var hasOwn = {}.hasOwnProperty;\n\n function classNames() {\n var classes = [];\n\n for (var i = 0; i < arguments.length; i++) {\n var arg = arguments[i];\n if (!arg) continue;\n\n var argType = _typeof(arg);\n\n if (argType === 'string' || argType === 'number') {\n classes.push(arg);\n } else if (Array.isArray(arg)) {\n if (arg.length) {\n var inner = classNames.apply(null, arg);\n\n if (inner) {\n classes.push(inner);\n }\n }\n } else if (argType === 'object') {\n if (arg.toString === Object.prototype.toString) {\n for (var key in arg) {\n if (hasOwn.call(arg, key) && arg[key]) {\n classes.push(key);\n }\n }\n } else {\n classes.push(arg.toString());\n }\n }\n }\n\n return classes.join(' ');\n }\n\n if (typeof module !== 'undefined' && module.exports) {\n classNames.default = classNames;\n module.exports = classNames;\n } else if (typeof define === 'function' && _typeof(define.amd) === 'object' && define.amd) {\n // register as 'classnames', consistent with npm package name\n define('classnames', [], function () {\n return classNames;\n });\n } else {\n window.classNames = classNames;\n }\n})();","import React from \"react\";\nimport rightIconImage from \"../../../../assets/images/icon/icon-arrow-right-black.svg\";\nimport iconMapPin from \"../../../../assets/images/icon/icon_map_pin.svg\";\nimport iconTime from \"../../../../assets/images/icon/icon_time.svg\";\nimport iconTrain from \"../../../../assets/images/icon/icon_train.svg\";\nimport iconCondition from \"../../../../assets/images/icon/icon_condition.svg\";\n\nconst ChangeConditions = ({\n handleAreaSearch,\n handleStationSearch,\n handleDetailConditions,\n showDetailSetting,\n stationNames,\n cities,\n}) => {\n \n return (\n \n \n
\n
トップ \n
> \n
検索結果 \n
> \n
検索条件の変更 \n
\n
検索条件の変更 \n\n
\n
\n
\n
\n
\n 地域\n
\n
\n 変更\n
\n
\n
\n
\n {cities}\n
\n
\n\n
\n
\n
\n
駅\n
\n
\n 変更\n
\n
\n
\n
\n {stationNames}\n
\n
\n\n {/*
\n
\n
\n
\n 通勤通学時間\n
\n
\n 変更\n
\n
\n
\n\n
指定なし
\n
*/}\n\n
\n
\n
\n
\n 詳細条件\n
\n
\n 変更\n
\n
\n
\n\n
\n {/* 12万円以下、礼金mなし、駅徒歩10分以内、ワンルーム、1K、1DK、専有面積20㎡以上 */}\n {showDetailSetting}\n
\n
\n
\n
\n \n );\n};\n\nexport default ChangeConditions;\n","import React from \"react\";\nimport CheckBox from \"./CheckBox\";\n\nconst BuildingType = ({ values, handleSelectValues, rooms_building_in }) => {\n const rooms_building_prettier =\n rooms_building_in?.building_in &&\n rooms_building_in?.building_in.map((a) => {\n return Number(a);\n });\n\n const include_1 = rooms_building_prettier?.filter((output, index) => {\n return output === 1;\n });\n const include_2 = rooms_building_prettier?.filter((output, index) => {\n return output === 2;\n });\n const include_3 = rooms_building_prettier?.filter((output, index) => {\n return output === 3;\n });\n \n return (\n \n );\n};\n\nexport default BuildingType;\n","// based on https://github.com/WICG/focus-visible/blob/v4.1.5/src/focus-visible.js\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nvar hadKeyboardEvent = true;\nvar hadFocusVisibleRecently = false;\nvar hadFocusVisibleRecentlyTimeout = null;\nvar inputTypesWhitelist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n};\n/**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} node\n * @return {boolean}\n */\n\nfunction focusTriggersKeyboardModality(node) {\n var type = node.type,\n tagName = node.tagName;\n\n if (tagName === 'INPUT' && inputTypesWhitelist[type] && !node.readOnly) {\n return true;\n }\n\n if (tagName === 'TEXTAREA' && !node.readOnly) {\n return true;\n }\n\n if (node.isContentEditable) {\n return true;\n }\n\n return false;\n}\n/**\n * Keep track of our keyboard modality state with `hadKeyboardEvent`.\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * @param {KeyboardEvent} event\n */\n\n\nfunction handleKeyDown(event) {\n if (event.metaKey || event.altKey || event.ctrlKey) {\n return;\n }\n\n hadKeyboardEvent = true;\n}\n/**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n */\n\n\nfunction handlePointerDown() {\n hadKeyboardEvent = false;\n}\n\nfunction handleVisibilityChange() {\n if (this.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n }\n}\n\nfunction prepare(doc) {\n doc.addEventListener('keydown', handleKeyDown, true);\n doc.addEventListener('mousedown', handlePointerDown, true);\n doc.addEventListener('pointerdown', handlePointerDown, true);\n doc.addEventListener('touchstart', handlePointerDown, true);\n doc.addEventListener('visibilitychange', handleVisibilityChange, true);\n}\n\nexport function teardown(doc) {\n doc.removeEventListener('keydown', handleKeyDown, true);\n doc.removeEventListener('mousedown', handlePointerDown, true);\n doc.removeEventListener('pointerdown', handlePointerDown, true);\n doc.removeEventListener('touchstart', handlePointerDown, true);\n doc.removeEventListener('visibilitychange', handleVisibilityChange, true);\n}\n\nfunction isFocusVisible(event) {\n var target = event.target;\n\n try {\n return target.matches(':focus-visible');\n } catch (error) {} // browsers not implementing :focus-visible will throw a SyntaxError\n // we use our own heuristic for those browsers\n // rethrow might be better if it's not the expected error but do we really\n // want to crash if focus-visible malfunctioned?\n // no need for validFocusTarget check. the user does that by attaching it to\n // focusable events only\n\n\n return hadKeyboardEvent || focusTriggersKeyboardModality(target);\n}\n/**\n * Should be called if a blur event is fired on a focus-visible element\n */\n\n\nfunction handleBlurVisible() {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n hadFocusVisibleRecentlyTimeout = window.setTimeout(function () {\n hadFocusVisibleRecently = false;\n }, 100);\n}\n\nexport default function useIsFocusVisible() {\n var ref = React.useCallback(function (instance) {\n var node = ReactDOM.findDOMNode(instance);\n\n if (node != null) {\n prepare(node.ownerDocument);\n }\n }, []);\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(isFocusVisible);\n }\n\n return {\n isFocusVisible: isFocusVisible,\n onBlurVisible: handleBlurVisible,\n ref: ref\n };\n}","import React from \"react\";\nimport CheckBox from \"./CheckBox\";\n\nconst FloorType = ({ values, handleSelectValues, rooms_type_in }) => {\n const rooms_layout_prettier =\n rooms_type_in?.rooms_layout_in &&\n rooms_type_in?.rooms_layout_in.map((a) => {\n return Number(a);\n });\n const include_1 = rooms_layout_prettier?.filter((output, index) => {\n return output === 1;\n });\n const include_2 = rooms_layout_prettier?.filter((output, index) => {\n return output === 2;\n });\n const include_3 = rooms_layout_prettier?.filter((output, index) => {\n return output === 3;\n });\n const include_4 = rooms_layout_prettier?.filter((output, index) => {\n return output === 4;\n });\n const include_5 = rooms_layout_prettier?.filter((output, index) => {\n return output === 5;\n });\n const include_6 = rooms_layout_prettier?.filter((output, index) => {\n return output === 6;\n });\n const include_7 = rooms_layout_prettier?.filter((output, index) => {\n return output === 7;\n });\n const include_8 = rooms_layout_prettier?.filter((output, index) => {\n return output === 8;\n });\n const include_9 = rooms_layout_prettier?.filter((output, index) => {\n return output === 9;\n });\n const include_10 = rooms_layout_prettier?.filter((output, index) => {\n return output === 10;\n });\n const include_11 = rooms_layout_prettier?.filter((output, index) => {\n return output === 11;\n });\n const include_12 = rooms_layout_prettier?.filter((output, index) => {\n return output === 12;\n });\n const include_13 = rooms_layout_prettier?.filter((output, index) => {\n return output === 13;\n });\n return (\n \n );\n};\n\nexport default FloorType;\n","import React from \"react\";\nimport { FormControl, Select, MenuItem } from \"@material-ui/core\";\nimport CheckBox from \"./CheckBox\";\n\nconst Rent = ({ values, handleSelectValues, details }) => {\n return (\n \n
賃料
\n
\n
\n
\n \n \n 下限なし\n \n 1万以上 \n 2万以上 \n 3万以上 \n 3.5万以上 \n 4万以上 \n 4.5万以上 \n 5万以上 \n 5.5万以上 \n 6万以上 \n 6.5万以上 \n 7万以上 \n 7.5万以上 \n 8万以上 \n 8.5万以上 \n 9万以上 \n 9.5万以上 \n 10万以上 \n 10.5万以上 \n 11万以上 \n 11.5万以上 \n 12万以上 \n 12.5万以上 \n 13万以上 \n 13.5万以上 \n 14万以上 \n 14.5万以上 \n 15万以上 \n 15.5万以上 \n 16万以上 \n 16.5万以上 \n 17万以上 \n 17.5万以上 \n 18万以上 \n 18.5万以上 \n 19万以上 \n 19.5万以上 \n 20万以上 \n 21万以上 \n 22万以上 \n 23万以上 \n 24万以上 \n 25万以上 \n 26万以上 \n 27万以上 \n 28万以上 \n 29万以上 \n 30万以上 \n 35万以上 \n 40万以上 \n 50万以上 \n 100万以上 \n \n
\n
\n
〜 \n
\n
\n \n \n 上限なし\n \n 1万以下 \n 2万以下 \n 3万以下 \n 3.5万以下 \n 4万以下 \n 4.5万以下 \n 5万以下 \n 5.5万以下 \n 6万以下 \n 6.5万以下 \n 7万以下 \n 7.5万以下 \n 8万以下 \n 8.5万以下 \n 9万以下 \n 9.5万以下 \n 10万以下 \n 10.5万以下 \n 11万以下 \n 11.5万以下 \n 12万以下 \n 12.5万以下 \n 13万以下 \n 13.5万以下 \n 14万以下 \n 14.5万以下 \n 15万以下 \n 15.5万以下 \n 16万以下 \n 16.5万以下 \n 17万以下 \n 17.5万以下 \n 18万以下 \n 18.5万以下 \n 19万以下 \n 19.5万以下 \n 20万以下 \n 21万以下 \n 22万以下 \n 23万以下 \n 24万以下 \n 25万以下 \n 26万以下 \n 27万以下 \n 28万以下 \n 29万以下 \n 30万以下 \n 35万以下 \n 40万以下 \n 50万以下 \n 100万以下 \n \n
\n
\n
\n\n
\n
\n );\n};\n\nexport default Rent;\n","import React from \"react\";\nimport CheckBox from \"./CheckBox\";\n\nconst Structure = ({ values, handleSelectValues, rooms_structure_in }) => {\n const rooms_structure_prettier =\n rooms_structure_in?.structure_in &&\n rooms_structure_in?.structure_in.map((a) => {\n return Number(a);\n });\n\n const include_1 = rooms_structure_prettier?.filter((output, index) => {\n return output === 1;\n });\n const include_4 = rooms_structure_prettier?.filter((output, index) => {\n return output === 4;\n });\n const include_5 = rooms_structure_prettier?.filter((output, index) => {\n return output === 5;\n });\n const include_14 = rooms_structure_prettier?.filter((output, index) => {\n return output === 14;\n });\n return (\n \n );\n};\nexport default Structure;\n","import React, { useEffect, useState } from \"react\";\nimport Radio from \"@material-ui/core/Radio\";\nimport RadioGroup from \"@material-ui/core/RadioGroup\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\nimport FormControl from \"@material-ui/core/FormControl\";\n\nconst WalkFromStation = ({\n value,\n handleSelectValue,\n property_accesses_walkby_lteq,\n}) => {\n return (\n \n );\n};\n\nexport default WalkFromStation;\n","import React from \"react\";\nimport CheckBox from \"./CheckBox\";\n\nconst Particulars = ({ values, handleSelectValues, rooms_features_name_in }) => {\n const rooms_features_name_in_prettier =\n rooms_features_name_in?.features_name_in &&\n rooms_features_name_in?.features_name_in.map((a) => {\n return a;\n });\n\n const include_1 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"1階の部屋\";\n });\n const include_2 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"2階以上の部屋\";\n });\n const include_3 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"最上階の部屋\";\n });\n const include_4 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"角部屋\";\n });\n const include_5 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"南向き\";\n });\n const include_6 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"タワーマンション\";\n });\n const include_7 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"バリアフリー\";\n });\n const include_8 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"デザイナーズ\";\n });\n const include_9 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"特定優良賃貸住宅\";\n });\n const include_10 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"即入居可\";\n });\n const include_11 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"保証人不要\";\n });\n const include_12 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"楽器相談\";\n });\n const include_13 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"事務所可\";\n });\n const include_14 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"女性限定\";\n });\n const include_15 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"家具家電付き\";\n });\n const include_16 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"風呂・トイレ・キッチン\";\n });\n const include_17 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"ガスコンロ\";\n });\n const include_18 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"IHコンロ\";\n });\n const include_19 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"コンロ二口以上\";\n });\n const include_20 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"システムキッチン\";\n });\n const include_21 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"カウンターキッチン\";\n });\n const include_22 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"冷蔵庫あり\";\n });\n const include_23 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"バス・トイレ別\";\n });\n const include_24 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"追い焚き\";\n });\n const include_25 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"洗面所独立\";\n });\n const include_26 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"温水洗浄便座\";\n });\n const include_27 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"浴室乾燥機\";\n });\n const include_28 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"トイレあり\";\n });\n const include_29 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"エアコン\";\n });\n const include_30 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"床暖房\";\n });\n const include_31 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"ガス暖房\";\n });\n const include_32 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"石油暖房\";\n });\n const include_33 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"ウォークインクローゼット\";\n });\n const include_34 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"床下収納\";\n });\n const include_35 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"トランクルーム\";\n });\n const include_36 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"インターネット接続\";\n });\n const include_38 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"CSアンテナ\";\n });\n const include_39 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"BSアンテナ\";\n });\n const include_40 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"CATV\";\n });\n const include_41 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"有線放送\";\n });\n const include_42 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"宅配ボックス\";\n });\n const include_43 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"モニタ付きドアホン\";\n });\n const include_44 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"オートロック\";\n });\n const include_45 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"管理人あり\";\n });\n const include_46 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"エレベーターあり\";\n });\n const include_47 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"フローリング\";\n });\n const include_48 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"室内洗濯機置き場\";\n });\n const include_49 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"都市ガス\";\n });\n const include_50 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"プロパンガス\";\n });\n const include_51 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"オール電化\";\n });\n const include_52 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"専用庭\";\n });\n const include_53 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"出窓\";\n });\n const include_54 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"バルコニー\";\n });\n const include_55 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"ロフト付き\";\n });\n const include_56 = rooms_features_name_in_prettier?.filter((output, index) => {\n return output === \"タイル貼り\";\n });\n\n return (\n \n );\n};\n\nexport default Particulars;\n","import React, { useEffect, useState } from \"react\";\nimport {\n GoogleMap,\n LoadScriptNext,\n MarkerClusterer,\n StreetViewPanorama,\n Marker\n} from \"@react-google-maps/api\";\nimport { useRecoilState, useRecoilValue } from \"recoil\";\nimport {\n propertiesState,\n centerState,\n placeChangedState,\n isCurrentLocationState,\n boundState,\n} from \"./state\";\nimport axios from \"axios\";\nimport SearchForm from \"./SearchForm\";\nimport { PropertiesApiPath } from \"./common\";\nimport MapProperties3 from \"../top/MapProperties3\";\nimport iconMapArea from \"../../../../assets/images/icon/icon-map-area.svg\";\n\nconst containerStyle = {\n width: \"100%\",\n height: \"90%\",\n};\n\nconst Map3 = (props) => {\n const [properties, setProperties] = useRecoilState(propertiesState);\n const [center, setCenter] = useRecoilState(centerState);\n const [bound, setBound] = useRecoilState(boundState);\n const [libraries] = useState([\"places\"]);\n const [mapObj, setMapObj] = useState(null);\n const placeChanged = useRecoilValue(placeChangedState);\n const [zoom, setZoom] = useState(13);\n\n useEffect(() => {\n if (props.isCurrentLocation) {\n navigator.geolocation.getCurrentPosition((position) => {\n const { latitude, longitude } = position.coords;\n setZoom(14);\n setCenter({\n lat: Number(latitude),\n lng: Number(longitude),\n });\n });\n }\n }, []);\n\n useEffect(() => boundsAreaSearch(mapObj), [placeChanged]);\n\n const mapOptions = {\n mapTypeControl: false,\n streetViewControl: false,\n fullscreenControl: false,\n };\n\n const boundsAreaSearch = (map) => {\n const bounds = map?.getBounds();\n if (!center && !bounds) return;\n\n const boundParams = {\n south_west_lat: bounds ? bounds?.getSouthWest()?.lat() : center.lat - 0.1,\n north_east_lat: bounds ? bounds?.getNorthEast()?.lat() : center.lat + 0.1,\n south_west_lon: bounds ? bounds?.getSouthWest()?.lng() : center.lng - 0.5,\n north_east_lon: bounds ? bounds?.getNorthEast()?.lng() : center.lng + 0.5,\n };\n\n // axios.get(PropertiesApiPath, {\n // params: bound || boundParams\n // }).then(res => {\n // setBound(boundParams)\n // setProperties(res.data.properties);\n // })\n // setProperties(props.property);\n };\n\n const addBoundsAreaSearchEvent = (controlDiv, map) => {\n const controlButton = document.createElement(\"button\");\n controlButton.style.backgroundColor = \"#fff\";\n controlButton.style.color = \"#666\";\n controlButton.style.borderRadius = \"999px\";\n controlButton.style.fontSize = \"14px\";\n controlButton.style.fontWeight = \"600\";\n controlButton.style.marginTop = \"8px\";\n controlButton.style.marginRight = \"2px\";\n controlButton.style.padding = \"3px 8px\";\n controlButton.style.boxShadow = \"0 2px 6px rgba(0,0,0,.3)\";\n controlButton.innerHTML = \"このエリアで検索\";\n controlDiv.appendChild(controlButton);\n controlButton.addEventListener(\"click\", () => boundsAreaSearch(map));\n };\n\n const onLoad = (map) => {\n setMapObj(map);\n const customControlDiv = document.createElement(\"div\");\n addBoundsAreaSearchEvent(customControlDiv, map);\n map.controls[google.maps.ControlPosition.TOP_RIGHT].push(customControlDiv);\n props.isCurrentLocation && boundsAreaSearch(map);\n };\n\n const onZoomChanged = () => boundsAreaSearch(mapObj);\n\n const clusterStyles = [\n {\n textColor: \"white\",\n url: iconMapArea,\n height: 32,\n width: 32,\n },\n {\n textColor: \"white\",\n url: iconMapArea,\n height: 32,\n width: 32,\n },\n {\n textColor: \"white\",\n url: iconMapArea,\n height: 32,\n width: 32,\n },\n ];\n\n const options = {\n gridSize: 32,\n styles: clusterStyles,\n maxZoom: 15,\n };\n\n // const latLon = {\n // lat: parseFloat(props.property.lat),\n // lng: parseFloat(props.property.lon),\n // };\n\n const latLon = props.property[0]\n ? {\n lat: parseFloat(props.property[0].lat),\n lng: parseFloat(props.property[0].lon),\n }\n : {\n lat: 35.6809591, \n lng: 139.7673068\n };\n\n return (\n \n \n {props.isStreetView ? (\n <>\n \n \n >\n ) : (\n <>\n \n \n {(clusterer) => {\n const component = [];\n props.property?.map((property) => {\n component.push(\n \n );\n });\n return component;\n }}\n \n >\n )}\n \n \n );\n};\n\nexport default Map3;\n","import React from \"react\";\nimport Map3 from \"./Map3\";\nimport arrowLeft from \"../../../../assets/images/icon/icon-arrow-left.svg\";\nimport arrowRight from \"../../../../assets/images/icon/icon-arrow-left-right.svg\";\n\nconst MapContent = ({\n googleMapsApiKey,\n isShow,\n handleShowMap,\n cities,\n stationNames,\n detailNames,\n length,\n setIsShowChangeConditions,\n property\n}) => {\n\n \n return (\n \n
\n
\n
\n {cities} {stationNames} {detailNames}{\" \"}\n {(!cities.length && !stationNames.length && !detailNames.length) && \"現在地\" }\n の賃貸(賃貸マンション・アパート)\n \n
\n
\n
\n
\n 一覧へ戻る\n
\n
\n
\n
\n 検索結果:\n {length} 件\n
\n
{\n setIsShowChangeConditions(true);\n }}\n >\n
\n 条件変更\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n );\n};\nexport default MapContent;\n","import React from \"react\";\nimport Map2 from \"./Map2\";\nimport { useSetRecoilState } from \"recoil\";\nimport { modalShowState } from \"./state\";\n\nconst MapViewModal = ({ setMapViewModal, property}) => {\n const googleMapsApiKey = process.env.GOOGLE_MAPS_API_KEY_202210;\n const setModalShow = useSetRecoilState(modalShowState);\n return (\n <>\n \n
\n
\n
{\n setMapViewModal(false);\n setModalShow(true);\n }}\n >\n
\n お部屋情報に戻る\n
\n {/*
地図アプリを開く
*/}\n
\n 地図アプリを開く\n \n
\n
\n
\n
\n >\n );\n};\n\nexport default MapViewModal;\n","import React, { useEffect, useState } from \"react\";\nimport axios from \"axios\";\nimport { useSetRecoilState, useRecoilValue, useRecoilState } from \"recoil\";\nimport { modalShowState, modalData, streetViewShowState } from \"./state\";\nimport VideoPlayer from \"../VideoPlayer/VideoPlayer\";\nimport Slider from \"react-slick\";\nimport \"slick-carousel/slick/slick.css\";\nimport \"slick-carousel/slick/slick-theme.css\";\nimport { roomLayoutEnums } from \"../../enums/layouts\";\nimport { propertyStructureEnums } from \"../../enums/structure\";\nimport { propertyDirectionEnums } from \"../../enums/direction\";\nimport { feeUnitEnums } from \"../../enums/unit\";\nimport { Tab, Tabs, TabList, TabPanel } from \"react-tabs\";\nimport PropertyModal from \"../top/PropertyModal\";\nimport comingSoon from \"../../../../assets/images/coming_soon\";\nimport iconBathtubGreen from \"../../../../assets/images/icon/icon-bathtub-green.svg\";\nimport iconBathtubGray from \"../../../../assets/images/icon/icon-bathtub-gray.svg\";\nimport iconHottubGreen from \"../../../../assets/images/icon/icon-hot_tub-green.svg\";\nimport iconHottubGray from \"../../../../assets/images/icon/icon-hot_tub-gray.svg\";\nimport iconCountertopsGreen from \"../../../../assets/images/icon/icon-countertops-green.svg\";\nimport iconCountertopsGray from \"../../../../assets/images/icon/icon-countertops-gray.svg\";\nimport iconLaundryGreen from \"../../../../assets/images/icon/icon-local_laundry_service-green.svg\";\nimport iconLaundryGray from \"../../../../assets/images/icon/icon-local_laundry_service-gray.svg\";\nimport iconWindyGreen from \"../../../../assets/images/icon/icon-windy-green.svg\";\nimport iconWindyGray from \"../../../../assets/images/icon/icon-windy-gray.svg\";\nimport iconBuildingGreen from \"../../../../assets/images/icon/icon-building-green.svg\";\nimport iconBuildingGray from \"../../../../assets/images/icon/icon-building-gray.svg\";\nimport iconBearGreen from \"../../../../assets/images/icon/icon-bear-green.svg\";\nimport iconBearGray from \"../../../../assets/images/icon/icon-bear-gray.svg\";\nimport iconTruckGreen from \"../../../../assets/images/icon/icon-truck-green.svg\";\nimport iconTruckGray from \"../../../../assets/images/icon/icon-truck-gray.svg\";\nimport iconCarGreen from \"../../../../assets/images/icon/icon-car-green.svg\";\nimport iconCarGray from \"../../../../assets/images/icon/icon-car-gray.svg\";\nimport iconDoorGreen from \"../../../../assets/images/icon/icon-door-lock-box-green.svg\";\nimport iconDoorGray from \"../../../../assets/images/icon/icon-door-lock-box-gray.svg\";\nimport character from \"../../../../assets/images/character/character06.png\";\nimport { propertyKindEnums } from \"../../enums/propertyKind\";\nimport MapViewModal from \"./MapViewModal\";\nimport StreetViewModal from \"./StreetViewModal\";\n\nconst Modal = () => {\n const [data, setData] = useState(null);\n const [roomImages, setRoomImages] = useState([]);\n const [roomFeatures, setRoomFeatures] = useState([]);\n const [propertyMovieUrl, setPropertyMovieUrl] = useState([]);\n const [roomMovieUrl, setRoomMovieUrl] = useState([]);\n const setModalShow = useSetRecoilState(modalShowState);\n const closeModal = () => setModalShow(false);\n const room = useRecoilValue(modalData);\n const [isStreetView, setShowStreetView] = useRecoilState(streetViewShowState);\n\n useEffect(() => {\n if (room) {\n const getRoom = async () => {\n await axios.get(`/api/portal/rooms/${room.id}`).then((res) => {\n setData(res.data);\n setRoomFeatures(res.data.room_features);\n setRoomImages(res.data.room_images);\n setPropertyMovieUrl(res.data.property_movie_url);\n setRoomMovieUrl(res.data.room_movie_url);\n });\n };\n getRoom();\n }\n return () => setData(null);\n }, []);\n\n const handleGoToReservation = () => {\n location.href = `/reservations/${data.id}`;\n };\n const elapsedYearsAndMonth = (year, month) => {\n const nowDate = new Date();\n const buildingDate = new Date(1970, 0, 1);\n buildingDate.setTime(nowDate.getTime() - buildingDate.getTime());\n let elapsedYear = buildingDate.getUTCFullYear() - year;\n let elapsedMonth = buildingDate.getUTCMonth() - (month - 1);\n if (elapsedMonth < 0) {\n elapsedYear--;\n elapsedMonth += 12;\n }\n return `${year}年${month}月(築${elapsedYear}年${elapsedMonth}ヶ月)`;\n };\n\n const photo = [1, 2, 3, 4, 5];\n var thumbnail = photo.length;\n if (thumbnail >= 16) {\n thumbnail = 16;\n }\n\n const sliderSettings = {\n infinite: true,\n speed: 500,\n slidesToShow: 1,\n centerMode: true,\n centerPadding: \"0px\",\n slidesToScroll: 1,\n arrows: true,\n asNavFor: \".slider-nav\",\n responsive: [\n {\n breakpoint: 767,\n settings: {\n slidesToShow: 1,\n },\n },\n ],\n };\n\n\n const sliderNavSettings = {\n infinite: true,\n speed: 500,\n slidesToShow: roomImages.length,\n slidesToScroll: 1,\n arrows: true,\n asNavFor: \".slider-for\",\n dots: true,\n centerMode: true,\n focusOnSelect: true,\n };\n\n const [tabIndex, setTabIndex] = useState(0);\n const underline = {\n borderBottom: \"solid 3px #04bfad\",\n fontWeight: \"bold\",\n width: \"100%\",\n marginBottom: \"0px\",\n paddingBottom: \"1px\",\n };\n\n const [slider1, setSlider1] = useState(null);\n const [slider2, setSlider2] = useState(null);\n\n const [ModalAppear, setModalAppear] = useState(false);\n const [mapViewModal, setMapViewModal] = useState(false);\n\n const oheyaGirlVideo = roomMovieUrl.filter(\n (item) => item.role === \"oheya_girl\"\n );\n const interiorVideo = roomMovieUrl.filter((item) => item.role === \"interior\");\n const appearanceVideo = propertyMovieUrl.filter(\n (item) => item.role === \"appearance\"\n );\n const sharedVideo = propertyMovieUrl.filter((item) => item.role === \"shared\");\n const surroundingVideo = propertyMovieUrl.filter(\n (item) => item.role === \"surrounding\"\n );\n\n const moreThanSecondFloor = roomFeatures.filter(\n (item) => item.feature.name === \"2階以上の部屋\"\n );\n const havePets = roomFeatures.filter(\n (item) => item.feature.name === \"ペット相談\"\n );\n const separateBath = roomFeatures.filter(\n (item) => item.feature.name === \"バス・トイレ別\"\n );\n const reHeating = roomFeatures.filter(\n (item) => item.feature.name === \"追い焚き\"\n );\n const washroom = roomFeatures.filter(\n (item) => item.feature.name === \"洗面所独立\"\n );\n const airConditioner = roomFeatures.filter(\n (item) => item.feature.name === \"エアコン\"\n );\n const deliverBox = roomFeatures.filter(\n (item) => item.feature.name === \"宅配ボックス\"\n );\n const washingMachine = roomFeatures.filter(\n (item) => item.feature.name === \"室内洗濯機置き場\"\n );\n const autoLock = roomFeatures.filter(\n (item) => item.feature.name === \"オートロック\"\n );\n\n const bathAndToilet = roomFeatures.filter(\n (item) =>\n item.feature.name === \"バス・トイレ別\" ||\n item.feature.name === \"追い焚き\" ||\n item.feature.name === \"洗面所独立\" ||\n item.feature.name === \"温水洗浄便座\" ||\n item.feature.name === \"浴室乾燥機\" ||\n item.feature.name === \"トイレあり\"\n );\n\n const kitchen = roomFeatures.filter(\n (item) =>\n item.feature.name === \"ガスコンロ\" ||\n item.feature.name === \"IHコンロ\" ||\n item.feature.name === \"コンロ二口以上\" ||\n item.feature.name === \"システムキッチン\" ||\n item.feature.name === \"カウンターキッチン\" ||\n item.feature.name === \"冷蔵庫あり\" ||\n item.feature.name === \"都市ガス\" ||\n item.feature.name === \"プロパンガス\" ||\n item.feature.name === \"オール電化\"\n );\n\n const security = roomFeatures.filter(\n (item) =>\n item.feature.name === \"モニタ付きドアホン\" ||\n item.feature.name === \"オートロック\" ||\n item.feature.name === \"管理人あり\"\n );\n\n const insideFacility = roomFeatures.filter(\n (item) =>\n item.feature.name === \"家具家電付き\" ||\n item.feature.name === \"エアコン\" ||\n item.feature.name === \"床暖房\" ||\n item.feature.name === \"ガス暖房\" ||\n item.feature.name === \"石油暖房\" ||\n item.feature.name === \"ウォークインクローゼット\" ||\n item.feature.name === \"床下収納\" ||\n item.feature.name === \"トランクルーム\" ||\n item.feature.name === \"インターネット接続\" ||\n item.feature.name === \"CSアンテナ\" ||\n item.feature.name === \"BSアンテナ\" ||\n item.feature.name === \"CATV\" ||\n item.feature.name === \"有線放送\" ||\n item.feature.name === \"フローリング\" ||\n item.feature.name === \"室内洗濯機置き場\" ||\n item.feature.name === \"専用庭\" ||\n item.feature.name === \"出窓\" ||\n item.feature.name === \"バルコニー\" ||\n item.feature.name === \"ロフト付き\" ||\n item.feature.name === \"タイル貼り\"\n );\n\n const sharing = roomFeatures.filter(\n (item) =>\n item.feature.name === \"宅配ボックス\" ||\n item.feature.name === \"エレベーターあり\"\n );\n\n const others = roomFeatures.filter(\n (item) =>\n item.feature.name === \"1階の部屋\" ||\n item.feature.name === \"2階以上の部屋\" ||\n item.feature.name === \"最上階の部屋\" ||\n item.feature.name === \"角部屋\" ||\n item.feature.name === \"南向き\" ||\n item.feature.name === \"タワーマンション\" ||\n item.feature.name === \"バリアフリー\" ||\n item.feature.name === \"デザイナーズ\" ||\n item.feature.name === \"特定優良賃貸住宅\" ||\n item.feature.name === \"ペット相談\" ||\n item.feature.name === \"2人入居可\" ||\n item.feature.name === \"即入居可\" ||\n item.feature.name === \"保証人不要\" ||\n item.feature.name === \"楽器相談\" ||\n item.feature.name === \"事務所可\" ||\n item.feature.name === \"女性限定\"\n );\n\n const handleToDate = (date) => {\n date = new Date(date);\n if (date.getMinutes() < 10) {\n date =\n date.getFullYear() +\n \"/\" +\n ((date.getMonth() % 12) + 1) +\n \"/\" +\n date.getDate() +\n \" \";\n } else {\n date =\n date.getFullYear() +\n \"/\" +\n ((date.getMonth() % 12) + 1) +\n \"/\" +\n date.getDate() +\n \" \";\n }\n\n return date;\n };\n\n\n return (\n <>\n {data ? (\n \n
\n
\n
\n
\n {data.property.name} {data.name}\n \n
\n \n \n
\n
\n {/*動画エリア*/}\n
\n {/*動画カテゴリタブ*/}\n
setTabIndex(index)}\n >\n \n \n \n TikTok\n
\n \n \n \n 内観\n
\n \n \n \n 外観\n
\n \n \n \n 共有部\n
\n \n \n \n 周辺環境\n
\n \n \n\n \n {oheyaGirlVideo.length === 0 ? (\n \n ) : (\n \n )}\n \n \n {interiorVideo.length === 0 ? (\n \n ) : (\n \n )}\n \n \n {appearanceVideo.length === 0 ? (\n \n ) : (\n \n )}\n \n \n {sharedVideo.length === 0 ? (\n \n ) : (\n \n )}\n \n \n {surroundingVideo.length === 0 ? (\n \n ) : (\n \n )}\n \n \n {/*動画カテゴリタブ end*/}\n
\n {/*動画エリア end*/}\n {/*概要*/}\n
\n
\n \n {data.contracts[0]?.rent ? (\n \n {(data.contracts[0]?.rent / 10000).toFixed(1)}\n \n ) : (\n \" お問い合わせください \"\n )}\n {data.contracts[0]?.rent && \"万円\"}\n \n \n (管理費\n \n {data.contracts[0]?.management_fee ? (\n <>\n {data.contracts[0]?.management_fee.toLocaleString()}\n >\n ) : (\n \" \"\n )}\n \n 円)\n \n
\n
\n
\n
\n
敷金
\n
\n {data.contracts[0]?.rent &&\n data.contracts[0]?.shikikin}{\" \"}\n {data.contracts[0]?.rent &&\n feeUnitEnums[data.contracts[0]?.shikikin_unit]}\n
\n
\n
\n
礼金
\n
\n \n {data.contracts[0]?.reikin &&\n data.contracts[0]?.reikin}{\" \"}\n {data.contracts[0]?.reikin &&\n feeUnitEnums[data.contracts[0]?.reikin_unit]}\n
\n \n
\n
\n
\n
\n
間取り
\n
\n {data?.layout && roomLayoutEnums[data?.layout]}\n
\n
\n
\n
面積
\n
\n {data?.size && data?.size}㎡\n
\n
\n
\n
\n
\n
階建
\n
\n {data?.floor && data?.floor}階 /{\" \"}\n {data.property?.floor && data.property?.floor}階\n
\n
\n
\n
種別
\n
\n {/* 1ヶ月 */}\n {data.property?.layout &&\n propertyKindEnums[data.property?.layout]}\n
\n
\n
\n
\n \n
\n
\n \n
\n\n
\n
{\n setMapViewModal(true);\n }}\n >\n
\n 地図を見る\n
\n
{\n setShowStreetView(true);\n }}\n >\n
\n ストリートビューを見る\n
\n
\n\n {data.property.property_accesses?.map((item) => {\n return (\n
\n
\n
\n 交通\n \n
\n {item.station_master.station_line_master.name} /{\" \"}\n {item.station_master.name}駅 徒歩{item.walkby}分\n
\n
\n
\n );\n })}\n {/*
*/}\n
\n
\n {/*概要 end*/}\n
\n\n
\n
setSlider1(slider)}\n className=\"slider-for PropertiesModalSlickDefault_for\"\n >\n {data.room_images.map((value, index) => (\n \n
\n
{\n setModalAppear(true);\n }}\n />\n
\n {/*
{imageTypeEnums[value.role]}
*/}\n
\n ))}\n \n\n
setSlider1(slider)}\n className=\"slider-nav PropertiesModalSlickDefault_nav\"\n >\n {data.room_images.map((value, index) => (\n \n
{\n setModalAppear(true);\n }}\n />\n
\n ))}\n \n
\n\n
\n
\n
\n 良いところあるじゃん!\n
\n
\n
\n
\n
\n\n {/*
\n
\n
\n
バストイレ別
\n
\n
\n
\n
追い焚き機能
\n
\n
\n
\n
洗面所独立
\n
\n
\n
\n
室内洗濯機置場
\n
\n
\n
\n
エアコン
\n
\n
\n
\n
2階以上
\n
\n
\n
\n
ペット相談可
\n
\n
\n
\n
宅配ボックス
\n
\n
\n
\n
駐車場
\n
\n
\n
\n
オートロック
\n
\n
*/}\n
\n
\n {separateBath.length === 0 ? (\n <>\n
\n
\n バストイレ別\n
\n >\n ) : (\n <>\n
\n
バストイレ別
\n >\n )}\n
\n
\n {reHeating.length === 0 ? (\n <>\n
\n
\n 追い焚き機能\n
\n >\n ) : (\n <>\n
\n
追い焚き機能
\n >\n )}\n
\n
\n {washroom.length === 0 ? (\n <>\n
\n
\n 洗面所独立\n
\n >\n ) : (\n <>\n
\n
洗面所独立
\n >\n )}\n
\n
\n {washingMachine.length === 0 ? (\n <>\n
\n
\n 室内洗濯機置場\n
\n >\n ) : (\n <>\n
\n
室内洗濯機置場
\n >\n )}\n
\n
\n {airConditioner.length === 0 ? (\n <>\n
\n
\n エアコン\n
\n >\n ) : (\n <>\n
\n
エアコン
\n >\n )}\n
\n
\n {moreThanSecondFloor.length === 0 ? (\n <>\n
\n
2階以上
\n >\n ) : (\n <>\n
\n
2階以上
\n >\n )}\n
\n
\n {havePets.length === 0 ? (\n <>\n
\n
\n ペット相談可\n
\n >\n ) : (\n <>\n
\n
ペット相談可
\n >\n )}\n
\n
\n {deliverBox.length === 0 ? (\n <>\n
\n
\n 宅配ボックス\n
\n >\n ) : (\n <>\n
\n
宅配ボックス
\n >\n )}\n
\n
\n {data.property.have_parking === false ? (\n <>\n
\n
駐車場
\n >\n ) : (\n <>\n
\n
駐車場
\n >\n )}\n
\n
\n {autoLock.length === 0 ? (\n <>\n
\n
\n オートロック\n
\n >\n ) : (\n <>\n
\n
オートロック
\n >\n )}\n
\n
\n\n
\n
{data?.introduction && data?.introduction}
\n
\n\n
\n {roomFeatures.map((item) => {\n return (\n
\n {item.feature.name}\n
\n );\n })}\n
\n
\n\n
\n
費用
\n
\n
\n
賃料
\n
\n {data.contracts[0]?.rent ? (\n \n {(data.contracts[0]?.rent / 10000).toFixed(1)}\n \n ) : (\n \" お問い合わせください \"\n )}\n {data.contracts[0]?.rent && \"万円\"}\n
\n
\n
\n
管理費等
\n
\n {data.contracts[0]?.management_fee ? (\n <>\n {data.contracts[0]?.management_fee.toLocaleString()}\n >\n ) : (\n \" \"\n )}\n 円\n
\n
\n
\n
敷金
\n
\n {data.contracts[0]?.shikikin &&\n data.contracts[0].shikikin}{\" \"}\n {data.contracts[0]?.shikikin &&\n feeUnitEnums[data.contracts[0]?.shikikin_unit]}\n
\n
\n
\n
保証金
\n
\n {data.contracts[0]?.guaranty_fee &&\n data.contracts[0]?.guaranty_fee}{\" \"}\n {data.contracts[0]?.guaranty_fee &&\n feeUnitEnums[data.contracts[0]?.guaranty_fee_unit]}\n
\n
\n
\n
礼金
\n
\n {data.contracts[0]?.reikin && data.contracts[0]?.reikin}{\" \"}\n {data.contracts[0]?.reikin &&\n feeUnitEnums[data.contracts[0]?.reikin_unit]}\n
\n
\n
\n\n {/*
費用
\n
*/}\n\n
\n お部屋の設備・特徴\n
\n
\n
\n
\n バス・トイレ\n
\n
\n {bathAndToilet.map((item, i, arr) => {\n return (\n <>\n {item.feature.name}\n {i != arr.length - 1 ? \"、 \" : \"\"}\n >\n );\n })}\n
\n
\n
\n
キッチン
\n
\n {kitchen.map((item, i, arr) => {\n return (\n <>\n {item.feature.name}\n {i != arr.length - 1 ? \"、 \" : \"\"}\n >\n );\n })}\n
\n
\n
\n
\n セキュリティ\n
\n
\n {security.map((item, i, arr) => {\n return (\n <>\n {item.feature.name}\n {i != arr.length - 1 ? \"、 \" : \"\"}\n >\n );\n })}\n
\n
\n
\n
室内設備
\n
\n {insideFacility.map((item, i, arr) => {\n return (\n <>\n {item.feature.name}\n {i != arr.length - 1 ? \"、 \" : \"\"}\n >\n );\n })}\n
\n
\n
\n
共有部
\n
\n {sharing.map((item, i, arr) => {\n return (\n <>\n {item.feature.name}\n {i != arr.length - 1 ? \"、 \" : \"\"}\n >\n );\n })}\n
\n
\n
\n
その他
\n
\n {others.map((item, i, arr) => {\n return (\n <>\n {item.feature.name}\n {i != arr.length - 1 ? \"、 \" : \"\"}\n >\n );\n })}\n
\n
\n
\n\n
\n その他お部屋情報\n
\n
\n
\n
\n 建物名・部屋\n
\n
\n {data.property.name} {data.name}\n
\n
\n
\n
階 / 階建
\n
\n {data?.floor && data?.floor}階 /{\" \"}\n {data.property?.floor && data.property?.floor}階\n
\n
\n
\n
間取り
\n
\n {roomLayoutEnums[data?.layout]} ({data?.layout_detail})\n
\n
\n
\n
占有面積
\n
\n {data?.size}㎡\n
\n
\n
\n
主要採光面
\n
\n {propertyDirectionEnums[data?.direction]}\n
\n
\n
\n
物件種目
\n
\n {/* 賃貸マンション */}\n {propertyKindEnums[data.property?.kind]}\n
\n
\n
\n
築年月
\n
\n {[\n elapsedYearsAndMonth(\n data.property?.building_year,\n data.property?.building_month\n ),\n ]}\n
\n
\n
\n
\n 建物構造・工法\n
\n
\n {propertyStructureEnums[data.property?.structure]}\n
\n
\n
\n
契約期間
\n
\n {data.contracts[0]?.term &&\n `${data.contracts[0]?.term}年`}\n
\n
\n
\n
\n
更新料
\n
\n {data.contracts[0]?.renewal_fee &&\n data.contracts[0]?.renewal_fee}\n {data.contracts[0]?.renewal_fee_unit &&\n feeUnitEnums[data.contracts[0]?.renewal_fee_unit]}\n
\n
\n
\n
\n
\n\n
\n
\n
情報公開日
\n
\n {data.published_at && handleToDate(data.published_at)}\n
\n
\n {/*
\n
\n 次回更新予定日\n
\n
\n 2022年1月19日\n
\n
*/}\n
\n
物件番号
\n
\n {data.property.id}\n
\n
\n
\n\n {/*
\n その他お部屋情報\n
\n\n
\n
\n
\n 地図を見る\n
\n
\n
\n ストリートビューを見る\n
\n
\n\n
\n
\n
コンビニ
\n
\n {/* ファミリーマート 渋谷駅前店まで191m(徒歩3分) */}\n {/*
\n
\n
\n
\n ドラッグストア\n
\n
\n くすりの福太郎 渋谷駅前店まで453m(徒歩6分)\n
\n
\n
*/}\n
\n\n
\n\n
\n\n
\n
\n
\n
\n
メール で送る\n
\n
\n
\n
LINE で送る\n
\n
\n
\n
Twitter シェア\n
\n
\n
\n
Facebook シェア\n
\n
\n
\n
\n
\n\n {/*地図を見るモーダル*/}\n {/*
\n
\n
\n
\n お部屋情報に戻る\n
\n
地図アプリを開く
\n
\n
*/}\n {mapViewModal ? (\n
\n ) : null}\n {/*地図を見るモーダル end*/}\n\n {/*ストリートビューモーダル*/}\n {isStreetView && data && (\n
\n )}\n {/*ストリートビューモーダル end*/}\n\n {/*画像を拡大モーダル*/}\n {/*
\n
\n
\n
\n お部屋情報に戻る\n
\n
1/10
\n
\n
\n {photo.map((value) => (\n \n
\n
\n
\n
{value}
\n
\n ))}\n \n
\n {photo.map((value) => (\n \n
\n
\n ))}\n \n
*/}\n {/*画像を拡大モーダル end*/}\n
\n \n ) : null}\n {ModalAppear ? (\n \n ) : null}\n >\n );\n};\nconst DetailItem = ({ label, values }) => (\n \n
{label} \n
\n {values.map((value, index) => (\n {value} \n ))}\n
\n
\n);\nexport default Modal;","import React, { useState } from \"react\";\nimport Room from \"./Room\";\nimport iconSlideArrow from \"../../../../assets/images/icon/icon-slide-arrow.svg\";\nimport Slider from \"react-slick\";\n\nconst Property = ({ property, detail, sort }) => {\n const [total, setTotal] = useState(\n property.rooms ? property.rooms.length : 0\n );\n const [nowNum, setNowNum] = useState(1);\n const NextArrow = (props) => {\n const onClick = () => {\n if (nowNum === total) {\n setNowNum(1);\n } else {\n setNowNum(nowNum + 1);\n }\n props.onClick();\n };\n return (\n \n
他の物件も見てみる
\n
\n
\n {nowNum}/{total}件\n
\n
\n );\n };\n const PrevArrow = (props) => {\n const onClick = () => {\n if (nowNum === 1) {\n setNowNum(total);\n } else {\n setNowNum(nowNum - 1);\n }\n props.onClick();\n };\n\n return (\n \n
\n
\n );\n };\n\n const settings = {\n dots: false,\n infinite: true,\n slidesToShow: 1,\n slidesToScroll: 1,\n nextArrow: ,\n prevArrow: ,\n };\n\n const rooms = [...property.rooms].sort((a, b) => {\n if ((sort === \"3\" && a.contracts[0]?.rent > b.contracts[0]?.rent) || a.contracts.length === 0) {\n return 1\n } \n \n if ((sort === \"2\" && a.contracts[0]?.rent > b.contracts[0]?.rent) || a.contracts.length === 0) {\n return 1\n } \n\n if (b.contracts.length > 0 && b.contracts[0].rent >= detail.contracts_rent_gteq && b.contracts[0].rent <= detail.contracts_rent_lteq) {\n return 1\n }\n\n return -1\n })\n\n return (\n <>\n \n
\n \n {rooms.map((room, index) => {\n return (\n \n );\n })}\n \n
\n
\n >\n );\n};\n\nexport default Property;\n","import React from \"react\";\nimport { useSetRecoilState } from \"recoil\";\nimport { modalShowState, modalDataState } from \"./state\";\nimport { roomLayoutEnums } from \"../../enums/layouts\";\nimport VideoPlayer from \"../VideoPlayer/VideoPlayer\";\n\nimport comingSoon from \"../../../../assets/images/coming_soon.png\";\n\nconst Room = ({ property, room, myNum, total }) => {\n const setModalData = useSetRecoilState(modalDataState);\n const setShow = useSetRecoilState(modalShowState);\n const propertyAccess = property.property_accesses[0];\n const oheyaGirlVideo = room.room_videos.filter(\n (item) => item.role === \"oheya_girl\"\n );\n const interiorVideo = room.room_videos.filter(\n (item) => item.role === \"interior\"\n );\n\n const appearanceVideo = property.property_videos.filter(\n (item) => item.role === \"appearance\"\n );\n\n return (\n \n
\n
{property.name} \n
\n {propertyAccess?.station_master.name}駅 徒歩{propertyAccess?.walkby}分\n
\n
\n
\n {(() => {\n if (oheyaGirlVideo.length > 0) {\n return
;\n } else if (interiorVideo.length > 0) {\n return
;\n } else if (appearanceVideo.length > 0) {\n return
;\n } else {\n return
;\n }\n })()}\n
\n
\n スクロールして他の部屋も見る >\n
\n
\n {myNum}/{total}件\n
\n
\n
\n
\n
\n {room.name} / {roomLayoutEnums[room.layout]}\n
\n
\n
\n {room.contracts[0]?.rent ? (\n {(room.contracts[0]?.rent / 10000).toFixed(1)} \n ) : (\n お問い合わせください \n )}\n \n
{room.contracts[0]?.rent && \"万円\"} \n
\n (管理費\n \n {room.contracts[0]?.management_fee ? (\n <>{room.contracts[0]?.management_fee.toLocaleString()}>\n ) : (\n \" \"\n )}\n \n 円)\n
\n
\n
\n
\n {\n setModalData(room);\n setShow(true);\n }}\n >\n 詳細を見る\n \n
\n
\n );\n};\n\nexport default Room;\n","import React, { useEffect, useState } from \"react\";\nimport SelfReservationForm from \"./SelfReservationForm\";\nimport ScheduleCheckReservationForm from \"./ScheduleCheckReservationForm\";\nimport axios from \"axios\";\n\nconst Reservation_modal = ({ props }) => {\n const { room, ...other } = props\n const [reserved, setReserved] = useState(null);\n const reservedUrl = \"/reservations/[room_id].json\";\n useEffect(async () => {\n try {\n if (!props || !room || !room.id) return;\n const regUrl = reservedUrl.replace(\"[room_id]\", room.id);\n const ret = await axios.get(regUrl);\n setReserved(ret.data);\n } catch (e) {\n document.body.innerHTML = e.response.data;\n }\n }, []);\n return (\n \n
\n {(() => {\n if (room.property.require_schedule_confirming == true) {\n return (\n \n );\n } \n else {\n return ;\n }\n })()}\n
\n
\n );\n};\n\nexport default Reservation_modal;\n","import React from \"react\";\nimport { useForm, useStep } from \"react-hooks-helper\";\nimport { SelfInput } from \"./ReservationForm/SelfInput\";\nimport { SelfConfirm } from \"./ReservationForm/SelfConfirm\";\nimport { SelfComplete } from \"./ReservationForm/SelfComplete\";\nimport Stepper from \"@material-ui/core/Stepper\";\nimport Step from \"@material-ui/core/Step\";\nimport StepLabel from \"@material-ui/core/StepLabel\";\n\nconst defaultData = {\n id: \"\",\n date_time: \"\",\n date: \"\",\n time: \"\",\n first_name: \"\",\n last_name: \"\",\n tel: \"\",\n email: \"\",\n};\n\nconst steps = [{ id: \"input\" }, { id: \"confirm\" }, { id: \"complete\" }];\n\nexport default function SalesReservationForm({ props, reserved }) {\n const [formData, setForm] = useForm(defaultData);\n const { step, navigation } = useStep({\n steps,\n initialStep: 0,\n });\n\n const stepData = { formData, setForm, navigation };\n\n switch (step.id) {\n case \"input\":\n return (\n <>\n \n \n 情報入力 \n \n \n 確認 \n \n \n 完了 \n \n \n \n >\n );\n case \"confirm\":\n return (\n <>\n \n \n 情報入力 \n \n \n 確認 \n \n \n 完了 \n \n \n \n >\n );\n case \"complete\":\n return (\n <>\n \n \n 情報入力 \n \n \n 確認 \n \n \n 完了 \n \n \n \n >\n );\n }\n\n return
;\n}\n","import React, { useState, useEffect } from \"react\";\nimport Container from \"@material-ui/core/Container\";\nimport Button from \"@material-ui/core/Button\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport CalendarTodayIcon from \"@material-ui/icons/CalendarToday\";\nimport { ThemeProvider } from \"@material-ui/styles\";\nimport { format } from \"date-fns\";\nimport { useForm } from \"react-hook-form\";\nimport { roomLayoutEnums } from \"../../../enums/layouts\";\nimport { RecoilRoot } from \"recoil\";\n\nimport comingSoon from \"../../../../../assets/images/coming_soon.png\";\nimport iconCalender from \"../../../../../assets/images/icon/icon-calendar.svg\";\n\nimport ReservationCalenderModal, {\n convertDateTimeStr,\n convertDateTimeObj,\n generateNotAcceptedDates,\n} from \"../ReservationCalenderModal\";\nimport { Modal } from \"./Modal\";\n\nexport const SelfInput = ({ formData, setForm, navigation, props, reserved }) => {\n const [showModal, setShowModal] = useState(false);\n const { room, company_id, user_id, ...other } = props\n const property = room.property\n const contract = room.contracts[0]\n const property_access = property.property_accesses[0]\n const { register, handleSubmit, formState: { errors } } = useForm();\n\n const [errorMessage, setErrorMessage] = useState(\"\");\n const [telError, setTelError] = useState(\"\");\n const [emailError, setEmailError] = useState(\"\");\n const [firstNameError, setFirstNameError] = useState(\"\");\n const [lastNameError, setLastNameError] = useState(\"\");\n const onSubmit = () => {\n if (formData.date_time) {\n setErrorMessage(\"\");\n }\n if (formData.last_name) {\n setLastNameError(\"\");\n }\n\n if (formData.first_name) {\n setFirstNameError(\"\");\n }\n\n if (formData.tel) {\n setTelError(\"\");\n }\n\n if (formData.email) {\n setEmailError(\"\");\n }\n if (\n !formData.date_time ||\n !formData.last_name ||\n !formData.first_name ||\n !formData.email ||\n !formData.tel\n ) {\n if (!formData.date_time) {\n setErrorMessage(\"入力必須項目です\");\n }\n if (!formData.last_name) {\n setLastNameError(\"姓を入力してください。\");\n }\n if (!formData.first_name) {\n setFirstNameError(\"名を入力してください。\");\n }\n if (!formData.tel) {\n setTelError(\"お電話番号を入力してください。\");\n } \n if (!formData.email) {\n setEmailError(\"メールアドレスを入力してください。\");\n } \n return;\n } \n navigation.next();\n };\n const [isShowModal, setIsShowModal] = useState(false);\n const [reservedDateTimes, setReservedDateTimes] = useState({});\n const [notAcceptedDates, setNotAcceptedDates] = useState([]);\n useEffect(() => {\n if (reserved === null || reserved === []) return;\n let tmpArr = [];\n for (const v of reserved) {\n if (v.start_at) {\n tmpArr.push(format(new Date(v.start_at), \"yyyy-MM-dd HH:mm\"));\n }\n }\n const tmpReservedDateTimes = convertDateTimeObj(tmpArr);\n const tmpNotAcceptedDates = generateNotAcceptedDates(tmpReservedDateTimes);\n setReservedDateTimes(tmpReservedDateTimes);\n setNotAcceptedDates(tmpNotAcceptedDates);\n }, [reserved]);\n\n const handleCloseModal = () => {\n setIsShowModal(false);\n };\n\n const handleSetPreviewReserveInfo = (date, time) => {\n if (date === \"\" || time === \"\") return;\n formData.date = date;\n formData.time = time;\n formData.date_time = convertDateTimeStr(date, time);\n handleCloseModal();\n };\n\n useEffect(() => {\n const body = document.querySelector(\"body\");\n body.style.overflow = showModal ? \"hidden\" : \"auto\";\n }, [showModal]);\n\n return (\n \n \n \n
\n
\n\n
\n
\n
\n
\n
\n
\n {property.name} {room.name}\n
\n
\n \n {contract?.rent ? (\n {(contract?.rent / 10000).toFixed(1)} \n ) : (\n \" お問い合わせください \"\n )}\n \n {contract?.rent && \"万円\"}\n (管:\n {contract?.management_fee ? (\n <>{contract?.management_fee.toLocaleString()}>\n ) : (\n \" \"\n )}\n 円)\n
\n
\n \n {property_access?.station_master.name}\n {property_access?.station_master.name && \"駅\"}\n {property_access?.walkby && \"徒歩\"}\n {property_access?.walkby}\n {property_access?.walkby && \"分\"}\n \n \n {room?.layout && roomLayoutEnums[room?.layout]}\n {room?.size && \"/\"} {room?.size && room?.size}\n {room?.size && \"㎡\"}\n \n
\n
\n
setShowModal(true)}\n >\n 詳細を見る\n
\n
\n
\n
\n {isShowModal ? (\n
\n ) : null}\n {showModal ? (\n
\n \n \n ) : null}\n
\n \n \n );\n};\n","import * as React from 'react';\n/**\n * Private module reserved for @material-ui/x packages.\n */\n\nexport default function useId(idOverride) {\n var _React$useState = React.useState(idOverride),\n defaultId = _React$useState[0],\n setDefaultId = _React$useState[1];\n\n var id = idOverride || defaultId;\n React.useEffect(function () {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the random value for client-side rendering only.\n // We can't use it server-side.\n setDefaultId(\"mui-\".concat(Math.round(Math.random() * 1e5)));\n }\n }, [defaultId]);\n return id;\n}","import React, { useState, useEffect } from \"react\";\nimport Button from \"@material-ui/core/Button\";\nimport Container from \"@material-ui/core/Container\";\nimport { useForm } from \"react-hook-form\";\nimport axios from \"axios\";\nimport { format, addMinutes } from \"date-fns\";\nimport { csrfToken } from \"@rails/ujs\";\nimport { roomLayoutEnums } from \"../../../enums/layouts\";\nimport comingSoon from \"../../../../../assets/images/coming_soon.png\";\nimport imgCharacter from \"../../../../../assets/images/character/character07.png\";\nimport { Modal } from \"./Modal\";\nimport { RecoilRoot } from \"recoil\";\n\nexport const SelfConfirm = ({ setForm, formData, navigation, props }) => {\n const [showModal, setShowModal] = useState(false);\n const { room, company_id, user_id, ...other } = props\n const property = room.property\n const contract = room.contracts[0]\n const property_access = property.property_accesses[0]\n const [reservation, setReservation] = useState(null);\n useEffect(() => {\n const body = document.querySelector(\"body\");\n body.style.overflow = showModal ? \"hidden\" : \"auto\";\n }, [showModal]);\n\n const [disable, setDisable] = useState(false);\n\n function change() {\n document.getElementById(\"one\").select();\n }\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm();\n axios.defaults.headers.common[\"X-CSRF-Token\"] = csrfToken();\n\n const onSubmit = (data) => {\n const dateTime = convertDateTimeStr();\n const customer_params = {\n customer: {\n first_name: data.first_name,\n last_name: data.last_name,\n tel: data.tel,\n email: data.email,\n company_id: company_id,\n reservations_attributes: [\n {\n start_at: format(new Date(dateTime), \"yyyy-MM-dd HH:mm:ss\"),\n finish_at: format(\n addMinutes(new Date(dateTime), 30),\n \"yyyy-MM-dd HH:mm:ss\"\n ),\n room_id: room.id,\n user_id: user_id,\n },\n ],\n },\n };\n\n axios\n .post(\"/api/portal/reservations\", customer_params)\n .then((res) => {\n // console.log(res.data);\n setReservation(res.data.id);\n })\n .then(() => {\n setTimeout(() => {\n navigation.next();\n }, 1000);\n })\n .catch((e) => {\n document.body.innerHTML = e.response.data;\n });\n setTimeout(() => {\n change();\n }, 600);\n setDisable(true);\n };\n\n const convertDateTimeStr = () => {\n const date = new Date(formData.date);\n\n const [month, day, year] = [\n date.getMonth() + 1,\n date.getDate(),\n date.getFullYear(),\n ];\n\n let time = formData.time.replace(\"~\", \":00\");\n if (time.length !== 8) {\n time = \"0\" + time;\n }\n return year + \"/\" + month + \"/\" + day + \" \" + time;\n };\n\n const { id, date_time, first_name, last_name, tel, email } = formData;\n\n return (\n \n \n \n
\n
\n
\n
\n
選択した内見希望日の予約に失敗しました。 \n
\n\n
\n \n 内見希望日の日時を変更をして\n \n 再度内見予約をお試しください。\n \n
\n\n
\n
\n
\n
\n {showModal ? (\n \n \n \n ) : null}\n \n );\n};\n","import React from \"react\";\nimport Container from \"@material-ui/core/Container\";\nimport { CopyToClipboard } from \"react-copy-to-clipboard\";\nimport { Recommendation } from \"./Recommendation\";\nimport { roomLayoutEnums } from \"../../../enums/layouts\";\nimport comingSoon from \"../../../../../assets/images/coming_soon.png\";\nimport dummyQr from \"../../../../../assets/images/dummy-qr.png\";\nimport iconLine from \"../../../../../assets/images/icon/icon-LINE.svg\";\nimport imgCharacter from \"../../../../../assets/images/character/character07.png\";\nimport linePhone from \"../../../../../assets/images/line-phone.svg\";\n\nexport const SelfComplete = ({ formData, props }) => {\n const { room, ...other } = props\n const property = room.property\n const contract = room.contracts[0]\n const property_access = property.property_accesses[0]\n const { id, date_time, first_name, last_name, tel, email } = formData;\n let array2 = [\n `予約ID: ${formData.id}`,\n `希望日時: ${formData.date_time}`,\n `物件名: ${property.name} / ${room.name}`,\n `予約者名: ${formData.last_name} ${formData.first_name}`,\n ];\n let array = array2.join(\"\\n\");\n\n return (\n \n \n
\n ご予約ありがとうございます。\n \n 予約完了メールをご確認ください。\n \n
\n 鍵の受け渡し方法に関しましては、 \n 内見の当日にメールにてご案内します。 \n
\n
\n 予約完了メールが届かない場合は \n 鍵受け渡しの案内ができませんので、 \n \n \n お問い合わせページ\n \n よりご連絡お願いします。\n \n
\n
\n
\n
\n
\n
\n
\n
LINE公式アカウント
\n
@lifereechintai
\n
\n 友だち追加をすると、 \n 内見までのやりとりがスムーズにできます。 \n
\n\n
alert(\"クリップボードにコピーしました!\")}\n >\n 必要情報をコピーする \n \n
\n
\n
\n
\n
QRコードから友だち追加
\n
\n
\n\n
\n
ID検索から友だち追加
\n
\n @lifereechintai \n
\n
で検索
\n
\n
\n
\n \n 友だち追加 \n \n
\n\n
予約内容
\n
\n
\n
\n
\n
\n
\n
\n {property.name} {room.name}\n
\n
\n {(contract?.rent / 10000).toFixed(1)} \n 万円(管:{(contract?.management_fee * 1000).toLocaleString()}円)\n
\n
\n \n {property_access?.station_master.name}\n {property_access?.station_master.name && \"駅\"}{\" \"}\n {property_access?.walkby && \"徒歩\"}\n {property_access?.walkby}\n {property_access?.walkby && \"分\"}\n \n \n {room?.layout && roomLayoutEnums[room?.layout]}\n {room?.size && \"/\"} {room?.size && room?.size}\n {room?.size && \"㎡\"}\n \n
\n
\n
\n
\n\n
\n
お名前
\n
\n {last_name} {first_name}\n
\n
\n\n
\n\n
\n
\n
\n
\n {props.recommend.length >= 4 && (\n \n )}\n \n );\n};\n","import React, { useRef, useCallback } from \"react\";\nimport Slider from \"react-slick\";\nimport \"slick-carousel/slick/slick.css\";\nimport \"slick-carousel/slick/slick-theme.css\";\nimport Properties from \"../../top/Properties\";\nimport imgCharacter from \"../../../../../assets/images/character/character08.png\";\n\nconst RecommendationTop = React.memo(\n ({ tiktok_videos, oheyaGirlVideos, handleRecommendPropertyModal }) => {\n console.log(oheyaGirlVideos)\n let slideNumber = oheyaGirlVideos.length;\n if (slideNumber == 1) {\n slideNumber = 1;\n } \n else if (slideNumber >= 4) {\n slideNumber = 3;\n }\n else {\n slideNumber -= 1;\n }\n\n const sliderSettings = {\n infinite: true,\n speed: 500,\n slidesToShow: slideNumber,\n centerMode: true,\n slidesToScroll: 1,\n arrows: true,\n centerPadding: \"0px\",\n dots: true,\n responsive: [\n {\n breakpoint: 768,\n settings: {\n dots: false,\n arrows: false,\n centerMode: true,\n centerPadding: \"50px\",\n slidesToShow: 1,\n },\n },\n ],\n };\n const sliderRef = useRef();\n const playArrRef = useRef([]);\n const audioArrRef = useRef([]);\n const goToNext = useCallback((current) => {\n let nextNum = 0;\n if (current < oheyaGirlVideos.length - 1) {\n nextNum = current + 1;\n }\n sliderRef.current.slickGoTo(nextNum);\n playArrRef.current[nextNum].current.play();\n }, []);\n\n const properties = oheyaGirlVideos.map((item, index) => (\n \n ));\n\n return (\n \n
\n
\n このお部屋を予約した人は\n \n こっちのお部屋も見ているよ!\n
\n
\n
\n
\n {properties}\n \n
\n );\n }\n);\n\nexport default RecommendationTop;\n","import React from \"react\";\nimport { useForm, useStep } from \"react-hooks-helper\";\nimport { SchedeleCheckInput } from \"./ReservationForm/SchedeleCheckInput\";\nimport { SchedeleCheckConfirm } from \"./ReservationForm/SchedeleCheckConfirm\";\nimport { SchedeleCheckComplete } from \"./ReservationForm/SchedeleCheckComplete\";\nimport Stepper from \"@material-ui/core/Stepper\";\nimport Step from \"@material-ui/core/Step\";\nimport StepLabel from \"@material-ui/core/StepLabel\";\n\nconst defaultData = {\n id: \"\",\n first_date_time: \"\",\n first_date: \"\",\n first_time: \"\",\n second_date_time: \"\",\n second_date: \"\",\n second_time: \"\",\n first_name: \"\",\n last_name: \"\",\n tel: \"\",\n email: \"\",\n};\n\nconst steps = [{ id: \"input\" }, { id: \"confirm\" }, { id: \"complete\" }];\n\nexport default function ScheduleCheckReservationForm({ props, reserved }) {\n const [formData, setForm] = useForm(defaultData);\n const { step, navigation } = useStep({\n steps,\n initialStep: 0,\n });\n\n const stepData = { formData, setForm, navigation };\n switch (step.id) {\n case \"input\":\n return (\n <>\n \n \n 情報入力 \n \n \n 確認 \n \n \n 完了 \n \n \n \n >\n );\n case \"confirm\":\n return (\n <>\n \n \n 情報入力 \n \n \n 確認 \n \n \n 完了 \n \n \n \n >\n );\n case \"complete\":\n return (\n <>\n \n \n 情報入力 \n \n \n 確認 \n \n \n 完了 \n \n \n \n >\n );\n }\n\n return
;\n}\n","import React, { useState, useEffect } from \"react\";\nimport Container from \"@material-ui/core/Container\";\nimport Button from \"@material-ui/core/Button\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport CalendarTodayIcon from \"@material-ui/icons/CalendarToday\";\nimport { format } from \"date-fns\";\nimport { ThemeProvider } from \"@material-ui/styles\";\nimport { useForm } from \"react-hook-form\";\nimport { roomLayoutEnums } from \"../../../enums/layouts\";\nimport comingSoon from \"../../../../../assets/images/coming_soon.png\";\nimport iconCalender from \"../../../../../assets/images/icon/icon-calendar.svg\";\nimport { Modal } from \"./Modal\";\nimport ReservationCalenderModal, {\n convertDateTimeStr,\n convertDateTimeObj,\n generateNotAcceptedDates,\n} from \"../ReservationCalenderModal\";\nimport { RecoilRoot } from \"recoil\";\n\nexport const SchedeleCheckInput = ({\n formData,\n setForm,\n navigation,\n props,\n reserved,\n}) => {\n const { room, ...other } = props;\n const property = room.property;\n const contract = room.contracts[0];\n const property_access = property.property_accesses[0];\n const {\n register,\n handleSubmit,\n setError,\n formState: { errors },\n } = useForm();\n\n const [firstDateError, setFirstDateError] = useState(\"\");\n const [secondDateError, setSecondDateError] = useState(\"\");\n const [firstNameError ,setFirstNameError] = useState(\"\");\n const [lastNameError, setLastNameError] = useState(\"\");\n const [telError, setTelError] = useState(\"\");\n const [emailError, setEmailError] = useState(\"\");\n\n const onSubmit = () => {\n if (formData.first_date_time) {\n setFirstDateError(\"\");\n }\n if (formData.second_date_time) {\n setSecondDateError(\"\");\n }\n if (formData.last_name) {\n setLastNameError(\"\");\n }\n if (formData.first_name) {\n setFirstNameError(\"\");\n }\n if (formData.email) {\n setEmailError(\"\");\n }\n if (formData.tel) {\n setTelError(\"\");\n }\n if (\n !formData.first_date_time ||\n !formData.second_date_time ||\n !formData.last_name ||\n !formData.first_name ||\n !formData.email ||\n !formData.tel\n ) {\n if (!formData.first_date_time) {\n setFirstDateError(\"内見第一希望日を入力してください。\");\n }\n if (!formData.second_date_time) {\n setSecondDateError(\"内見第二希望日を入力してください。\");\n }\n if (!formData.last_name) {\n setLastNameError(\"姓を入力してください。\");\n }\n if (!formData.first_name) {\n setFirstNameError(\"名を入力してください。\");\n }\n if (!formData.email) {\n setEmailError(\"メールアドレスを入力してください。\");\n }\n if (!formData.tel) {\n setTelError(\"お電話番号を入力してください。\");\n }\n return;\n }\n navigation.next();\n };\n\n const [reservedDateTimes, setReservedDateTimes] = useState({});\n const [notAcceptedDates, setNotAcceptedDates] = useState([]);\n\n const [isShowFirstModal, setIsShowFirstModal] = useState(false);\n const [isShowSecondModal, setIsShowSecondModal] = useState(false);\n const [showModal, setShowModal] = useState(false);\n\n useEffect(() => {\n const body = document.querySelector(\"body\");\n body.style.overflow = showModal ? \"hidden\" : \"auto\";\n }, [showModal]);\n\n useEffect(() => {\n if (reserved === null || reserved === []) return;\n\n let tmpArr = [];\n for (const v of reserved) {\n if (v.start_at) {\n tmpArr.push(format(new Date(v.start_at), \"yyyy-MM-dd HH:mm\"));\n }\n }\n const tmpReservedDateTimes = convertDateTimeObj(tmpArr);\n const tmpNotAcceptedDates = generateNotAcceptedDates(tmpReservedDateTimes);\n setReservedDateTimes(tmpReservedDateTimes);\n setNotAcceptedDates(tmpNotAcceptedDates);\n }, [reserved]);\n\n const handleCloseModal = () => {\n setIsShowFirstModal(false);\n setIsShowSecondModal(false);\n };\n\n const handleSetFirstDateTime = (date, time) => {\n if (date === \"\" || time === \"\") return;\n setForm({\n target: { name: \"first_date\", value: date },\n });\n setForm({\n target: { name: \"first_time\", value: time },\n });\n const first_date_time = convertDateTimeStr(date, time);\n setForm({\n target: { name: \"first_date_time\", value: first_date_time },\n });\n handleCloseModal();\n };\n\n const handleSetSecondDateTime = (date, time) => {\n if (date === \"\" || time === \"\") return;\n setForm({\n target: { name: \"second_date\", value: date },\n });\n setForm({\n target: { name: \"second_time\", value: time },\n });\n const second_date_time = convertDateTimeStr(date, time);\n setForm({\n target: { name: \"second_date_time\", value: second_date_time },\n });\n handleCloseModal();\n };\n\n return (\n \n \n \n
\n
\n\n
\n
\n
\n
\n
\n
\n {property.name} {room.name}\n
\n
\n \n {contract?.rent ? (\n {(contract?.rent / 10000).toFixed(1)} \n ) : (\n \" お問い合わせください \"\n )}\n \n {contract?.rent && \"万円\"}\n (管:\n {contract?.management_fee ? (\n <>{contract?.management_fee.toLocaleString()}>\n ) : (\n \" \"\n )}\n 円)\n
\n
\n \n {property_access?.station_master.name}\n {property_access?.station_master.name && \"駅\"}{\" \"}\n {property_access?.walkby && \"徒歩\"}\n {property_access?.walkby}\n {property_access?.walkby && \"分\"}\n \n \n {room?.layout && roomLayoutEnums[room?.layout]}\n {room?.size && \"/\"} {room?.size && room?.size}\n {room?.size && \"㎡\"}\n \n
\n
\n
setShowModal(true)}\n >\n 詳細を見る\n
\n
\n
\n
\n {showModal ? (\n
\n \n \n ) : null}\n
\n \n \n );\n};\n","import React, {useState, useEffect} from \"react\";\nimport Button from \"@material-ui/core/Button\";\nimport Container from \"@material-ui/core/Container\";\nimport { useForm } from \"react-hook-form\";\nimport axios from \"axios\";\nimport { format, addMinutes } from \"date-fns\";\nimport { csrfToken } from \"@rails/ujs\";\nimport { roomLayoutEnums } from \"../../../enums/layouts\";\nimport comingSoon from \"../../../../../assets/images/coming_soon.png\";\nimport imgCharacter from \"../../../../../assets/images/character/character07.png\";\nimport { Modal } from \"./Modal\";\nimport { RecoilRoot } from \"recoil\";\n\nexport const SchedeleCheckConfirm = ({ setForm, formData, navigation, props }) => {\n const [showModal, setShowModal] = useState(false);\n const { room, company_id, user_id, ...other } = props\n const property = room.property\n const contract = room.contracts[0]\n const property_access = property.property_accesses[0]\n const [reservation, setReservation] = useState(null);\n useEffect(() => {\n const body = document.querySelector(\"body\");\n body.style.overflow = showModal ? \"hidden\" : \"auto\";\n }, [showModal]);\n\n const [disable, setDisable] = useState(false);\n\n function change() {\n document.getElementById(\"one\").select();\n }\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm();\n axios.defaults.headers.common[\"X-CSRF-Token\"] = csrfToken();\n\n const onSubmit = (data) => {\n const firstDateTime = convertDateTimeStr(\n formData.first_date,\n formData.first_time\n );\n const secondDateTime = convertDateTimeStr(\n formData.second_date,\n formData.second_time\n );\n const customer_params = {\n customer: {\n first_name: data.first_name,\n last_name: data.last_name,\n tel: data.tel,\n email: data.email,\n company_id: company_id,\n reservations_attributes: [\n {\n room_id: room.id,\n user_id: user_id,\n reservation_requireds_attributes: [\n {\n start_at: format(\n new Date(firstDateTime),\n \"yyyy-MM-dd HH:mm:ss\"\n ),\n finish_at: format(\n addMinutes(new Date(firstDateTime), 30),\n \"yyyy-MM-dd HH:mm:ss\"\n ),\n },\n {\n start_at: format(\n new Date(secondDateTime),\n \"yyyy-MM-dd HH:mm:ss\"\n ),\n finish_at: format(\n addMinutes(new Date(secondDateTime), 30),\n \"yyyy-MM-dd HH:mm:ss\"\n ),\n },\n ],\n },\n ],\n },\n };\n\n axios\n .post(\n \"/api/portal/reservations_sales\",\n customer_params\n )\n .then((res) => {\n // console.log(res.data);\n setReservation(res.data.id);\n })\n .then(() => {\n setTimeout(() => {\n navigation.next();\n }, 1000);\n })\n .catch((e) => {\n document.body.innerHTML = e.response.data;\n });\n setTimeout(() => {\n change();\n }, 600);\n setDisable(true);\n };\n const convertDateTimeStr = (date, time) => {\n const newDate = new Date(date);\n\n const [month, day, year] = [\n newDate.getMonth() + 1,\n newDate.getDate(),\n newDate.getFullYear(),\n ];\n\n let newTime = time.replace(\"~\", \":00\");\n if (newTime.length !== 8) {\n newTime = \"0\" + newTime;\n }\n return year + \"/\" + month + \"/\" + day + \" \" + newTime;\n };\n\n const {\n id,\n first_date_time,\n second_date_time,\n first_name,\n last_name,\n tel,\n email,\n } = formData;\n\n return (\n \n \n \n
\n
\n
\n
\n
選択した内見希望日の予約に失敗しました。 \n
\n\n
\n \n 内見希望日の日時を変更をして\n \n 再度内見予約をお試しください。\n \n
\n\n
\n
\n
\n
\n {showModal ? (\n \n \n \n ) : null}\n \n );\n};\n","import React from \"react\";\nimport Container from \"@material-ui/core/Container\";\nimport { CopyToClipboard } from \"react-copy-to-clipboard\";\nimport { Recommendation } from \"./Recommendation\";\nimport { roomLayoutEnums } from \"../../../enums/layouts\";\nimport comingSoon from \"../../../../../assets/images/coming_soon.png\";\nimport dummyQr from \"../../../../../assets/images/dummy-qr.png\";\nimport iconLine from \"../../../../../assets/images/icon/icon-LINE.svg\";\nimport imgCharacter from \"../../../../../assets/images/character/character07.png\";\nimport linePhone from \"../../../../../assets/images/line-phone.svg\";\n\nexport const SchedeleCheckComplete = ({ formData, props }) => {\n const { room, ...other } = props;\n const property = room.property;\n const contract = room.contracts[0];\n const property_access = property.property_accesses[0];\n const {\n id,\n first_date_time,\n second_date_time,\n first_name,\n last_name,\n tel,\n email,\n } = formData;\n\n let array2 = [\n `予約ID: ${formData.id}`,\n `第一希望日時: ${formData.first_date_time}`,\n `第二希望日時: ${formData.second_date_time}`,\n `物件名: ${property.name} / ${room.name}`,\n `予約者名: ${formData.last_name} ${formData.first_name}`,\n ];\n let array = array2.join(\"\\n\");\n\n return (\n \n \n
\n ご予約ありがとうございます。\n \n 予約完了メールをご確認ください。\n \n
\n 鍵の受け渡し方法に関しましては、 \n 内見の当日にメールにてご案内します。 \n
\n
\n 予約完了メールが届かない場合は \n 鍵受け渡しの案内ができませんので、 \n \n \n お問い合わせページ\n \n よりご連絡お願いします。\n \n
\n
\n
\n
\n
\n
\n
\n
LINE公式アカウント
\n
@lifereechintai
\n
\n 友だち追加をすると、 \n 内見までのやりとりがスムーズにできます。 \n
\n\n
alert(\"クリップボードにコピーしました!\")}\n >\n 必要情報をコピーする \n \n
\n
\n
\n
\n
QRコードから友だち追加
\n
\n
\n\n
\n
ID検索から友だち追加
\n
\n @lifereechintai \n
\n
で検索
\n
\n
\n
\n \n 友だち追加 \n \n
\n\n
予約内容
\n
\n
\n
\n
\n
\n
\n
\n {property.name} {room.name}\n
\n
\n {(contract?.rent / 10000).toFixed(1)} \n 万円(管:{(contract?.management_fee * 1000).toLocaleString()}円)\n
\n
\n \n {property_access?.station_master.name}\n {property_access?.station_master.name && \"駅\"}{\" \"}\n {property_access?.walkby && \"徒歩\"}\n {property_access?.walkby}\n {property_access?.walkby && \"分\"}\n \n \n {room?.layout && roomLayoutEnums[room?.layout]}\n {room?.size && \"/\"} {room?.size && room?.size}\n {room?.size && \"㎡\"}\n \n
\n
\n
\n
\n
\n
内見希望日
\n
\n 第一希望日 \n {first_date_time}\n
\n
\n 第二希望日 \n {second_date_time}\n
\n
\n\n
\n
お名前
\n
\n {last_name} {first_name}\n
\n
\n\n
\n\n
\n
\n
\n
\n
\n\n {props.recommend.length >= 4 && (\n \n )}\n \n );\n};\n","import React, { useState } from \"react\";\nimport rightIconImage from \"../../../../../assets/images/icon/icon-arrow-right-black.svg\";\n\nconst Accordion = (props, i) => {\n const prefecture = props.prefecture\n const [expand, setExpand] = useState(false);\n const [selected, setSelected] = useState(null)\n\n const toggle = (i) => {\n if (selected === i) {\n return setSelected(null)\n }\n\n setSelected(i)\n }\n\n return (\n <>\n {\n props.onClick()\n setExpand(!expand)\n toggle(i)\n }}>\n {prefecture.text}\n
\n
\n {expand && props.children}\n >\n )\n}\n\nexport default Accordion;\n","import React, { useState, useCallback, useMemo, useEffect } from \"react\";\nimport MapContent from \"./Map\";\nimport AreaSearch from \"./PropertiesSearch/AreaSearch\";\nimport StationSearch from \"./PropertiesSearch/StationSearch\";\nimport RecommendProperties from \"./RecommendProperties\";\nimport MapProperties from \"./MapProperties\";\nimport Faq from \"./Faq\";\nimport loginRegisterImage from \"../../../../assets/images/elite_admin/login-register.jpg\";\nimport RecommendPropertyModal from \"./RecommendPropertyModal\";\nimport character from \"../../../../assets/images/character/character01.png\";\nimport bubble_1 from \"../../../../assets/images/top/bubble_1.svg\";\nimport bubble_2 from \"../../../../assets/images/top/bubble_2.svg\";\nimport bubble_3 from \"../../../../assets/images/top/bubble_3.svg\";\nimport bubble_4 from \"../../../../assets/images/top/bubble_4.svg\";\nimport catchcopy from \"../../../../assets/images/top/catchcopy.svg\";\nimport aboutRoom from \"../../../../assets/images/top/about_room.svg\";\nimport aboutLifereechintai from \"../../../../assets/images/top/about_lifereechintai.svg\";\nimport iconQuestionLeft from \"../../../../assets/images/top/icon_question_left.png\";\nimport iconQuestionRight from \"../../../../assets/images/top/icon_question_right.png\";\nimport subCatchcopy from \"../../../../assets/images/top/sub_catchcopy.svg\";\n\nimport iconLocation from \"../../../../assets/images/top/icon_location_36x36.svg\";\nimport iconInstagram from \"../../../../assets/images/top/icon_instagram.svg\";\n\nimport iconTag from \"../../../../assets/images/top/icon_tag.svg\";\nimport separation from \"../../../../assets/images/top/separation.png\";\n\n\nimport background from \"../../../../assets/images/top/bg.png\";\nimport MapSearch from \"./PropertiesSearch/MapSearch\";\n\n// 再描画を防ぐためmemo化\nconst MemoRecommendProperties = React.memo(\n ({ handleRecommendPropertyModal, oheyaGirlVideos }) => (\n \n )\n);\n\nconst Top = (props) => {\n // 再描画を防ぐためmemo化\n const tikTokVideos = useMemo(() => JSON.parse(props.tikTokVideos), []);\n const [showRecommendPropertyModal, setShowRecommendPropertyModal] =\n useState(false);\n const [recommendProperty, setRecommendProperty] = useState(undefined);\n const [recommendRoom, setRecommendRoom] = useState(undefined);\n const [recommendContract, setRecommendContract] = useState(undefined);\n const [recommendAccess, setRecommendAccess] = useState(undefined);\n const [recommendPropertyMovieUrl, setRecommendPropertyMovieUrl] = useState(undefined);\n const [recommendRoomMovieUrl, setRecommendRoomMovieUrl] = useState(undefined);\n\n const openRecommendPropertyModal = useCallback(\n (\n property,\n room,\n contracts,\n property_accesses,\n property_movie_url,\n room_movie_url\n ) => {\n setRecommendProperty(property);\n setRecommendRoom(room);\n setRecommendContract(contracts);\n setRecommendAccess(property_accesses);\n setRecommendPropertyMovieUrl(property_movie_url);\n setRecommendRoomMovieUrl(room_movie_url);\n\n setShowRecommendPropertyModal(true);\n },\n []\n );\n\n const closeRecommendPropertyModal = useCallback(() => {\n setShowRecommendPropertyModal(false);\n }, []);\n\n useEffect(() => {\n const body = document.querySelector(\"body\");\n body.style.overflow = showRecommendPropertyModal ? \"hidden\" : \"auto\";\n }, [showRecommendPropertyModal]);\n\n return (\n \n
\n
\n
\n
\n
\n
\n
\n
仲介手数料
\n
って
\n
\n 高すぎじゃん?\n
\n
\n\n
\n
\n\n
\n
\n
写真って
\n
\n なんか実物より\n \n 広く見えない?\n
\n
\n\n
\n
\n\n
\n
\n
\n 内見したいだけなのに\n
\n
\n やりとり\n \n 面倒。\n
\n
\n
\n
\n\n
\n
\n
\n スタッフの人が\n \n 同行してると\n
\n
\n ゆっくり\n \n 見れなくない?\n
\n
\n\n
\n
\n\n
\n
\n
\n\n
\n
\n\n
\n
\n \n \n\n
\n
\n\n
\n
\n \n \n \n\n
\n
\n\n
\n\n
\n {showRecommendPropertyModal && (\n
\n )}\n
\n
\n \n
\n\n {/* 倍率で物件が重なる時モーダル */}\n {/*
\n
\n
\n
\n \n \n \n\n
\n
\n
\n
\n\n
\n
\n
\n 10.2 \n 万円\n
\n
\n (管理費\n 8000 \n 円)\n
\n
\n
\n JR山手線 他 / 渋谷駅 徒歩10分\n \n 1K / 19.35㎡ / 3階 / 築10年\n
\n\n
\n 1/17件中\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n 10.2 \n 万円\n
\n
\n (管理費\n 8000 \n 円)\n
\n
\n
\n JR山手線 他 / 渋谷駅 徒歩10分\n \n 1K / 19.35㎡ / 3階 / 築10年\n
\n\n
\n 1/17件中\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n 10.2 \n 万円\n
\n
\n (管理費\n 8000 \n 円)\n
\n
\n
\n JR山手線 他 / 渋谷駅 徒歩10分\n \n 1K / 19.35㎡ / 3階 / 築10年\n
\n\n
\n 1/17件中\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n 10.2 \n 万円\n
\n
\n (管理費\n 8000 \n 円)\n
\n
\n
\n JR山手線 他 / 渋谷駅 徒歩10分\n \n 1K / 19.35㎡ / 3階 / 築10年\n
\n\n
\n 1/17件中\n
\n
\n
\n
\n
\n
*/}\n\n {/* マップのピンをクリックした際の物件詳細モーダル */}\n {/*
*/}\n\n {/* お部屋をもっと見るモーダル */}\n {/*
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n AAAレジデンス\n 301号室 \n \n\n
\n \n 10.2 \n 万円\n \n \n (管理費\n 8000 \n 円)\n \n
\n
\n
\n
\n
\n
\n
\n 階層\n
\n
\n 8階/10階\n
\n
\n
\n
\n 種別\n
\n
\n マンション\n
\n
\n
\n
\n
\n
築年月 \n
\n {[elapsedYearsAndMonth(10,2)]}\n
\n
\n
\n
\n
\n 住所\n
\n
\n 東京都渋谷区111\n
\n
\n\n
\n
\n
\n 地図を見る\n
\n
\n
\n ストリートビューを見る\n
\n
\n\n
\n
\n
交通 \n
\n JR山手線/渋谷駅 徒歩10分\n \n JR山手線/原宿駅 徒歩18分\n \n 東京メトロ銀座線/表参道駅 徒歩15分\n
\n
\n\n
\n
\n
\n
\n
\n
\n
\n
*/}\n
\n );\n};\n\nexport default Top;\n","import React from \"react\";\nimport { Button } from \"@material-ui/core\";\nimport { showAreaSearchState } from \"../state\";\nimport { useRecoilState } from \"recoil\";\nimport iconMapPin from \"../../../../../assets/images/top/icon_map-pin_36x36.svg\";\n\nfunction AreaSearch() {\n const [isShowAreaSearch, setShowAreaSearch] =\n useRecoilState(showAreaSearchState);\n\n return (\n \n {\n sessionStorage.removeItem(\"city_ids\");\n sessionStorage.removeItem(\"station_master\");\n sessionStorage.removeItem(\"detail\");\n // sessionStorage.clear();\n setShowAreaSearch(!isShowAreaSearch);\n }}\n >\n
\n
\n
\n \n );\n}\n\nexport default AreaSearch;\n","import { Button } from \"@material-ui/core\";\nimport React from \"react\";\nimport { showStationSearchState } from \"../state\";\nimport { useRecoilState } from \"recoil\";\nimport iconTrain from \"../../../../../assets/images/top/icon_train_36x36.svg\";\n\nfunction StationSearch() {\n const [isShowStationSearch, setShowStationSearch] = useRecoilState(\n showStationSearchState\n );\n\n return (\n \n {\n sessionStorage.removeItem(\"city_ids\");\n sessionStorage.removeItem(\"station_master\");\n sessionStorage.removeItem(\"detail\");\n setShowStationSearch(!isShowStationSearch);\n }}\n >\n
\n
\n
\n \n );\n}\n\nexport default StationSearch;\n","import React, { useRef, useCallback } from \"react\";\nimport Slider from \"react-slick\";\nimport \"slick-carousel/slick/slick.css\";\nimport \"slick-carousel/slick/slick-theme.css\";\nimport Properties from \"./Properties\";\n\nconst RecommendProperties = React.memo(\n ({ tiktok_videos, oheyaGirlVideos, handleRecommendPropertyModal }) => {\n const sliderSettings = {\n infinite: true,\n speed: 500,\n slidesToShow: 3,\n centerMode: true,\n slidesToScroll: 1,\n arrows: true,\n centerPadding: \"0px\",\n dots: true,\n responsive: [\n {\n breakpoint: 768,\n settings: {\n dots: false,\n arrows: false,\n centerMode: true,\n centerPadding: \"50px\",\n slidesToShow: 1,\n },\n },\n ],\n };\n const sliderRef = useRef();\n const playArrRef = useRef([]);\n const audioArrRef = useRef([]);\n const goToNext = useCallback((current) => {\n let nextNum = 0;\n if (current < oheyaGirlVideos.length - 1) {\n nextNum = current + 1;\n }\n sliderRef.current.slickGoTo(nextNum);\n playArrRef.current[nextNum].current.play();\n }, []);\n\n const properties = oheyaGirlVideos.map((item, index) => (\n \n ));\n\n return (\n \n \n {properties}\n \n
\n );\n }\n);\n\n//自動再生、ミュートする場合\n// const isVideoInFullscreen = () => {\n// if (document.fullscreenElement && document.fullscreenElement.nodeName === 'VIDEO') {\n// return true;\n// }\n// videoElement.autoplay = true;\n// };\n\n// return (\n// setMouseOver(true)}\n// onMouseLeave={() => setMouseOver(false)}\n// ref={WindowRef}\n// >\n// {Object.entries(videos).map(([index, videoPath]) => {\n// return (\n// \n// );\n// })}\n\n// \n// \n//
\n// \n// {playing ? (\n// \n// ) : (\n// \n// )}\n// \n// \n//
\n// \n// \n// \n//
\n// \n// \n// );\n\nexport default RecommendProperties;\n","import React, {useState, useEffect} from \"react\"\nimport axios from 'axios';\nimport iconQuestion from \"../../../../assets/images/top/icon_question.svg\";\n\nconst Faq = () => {\n const [faqs, setFaqs] = useState([]);\n const [selected, setSelected] = useState(null)\n\n useEffect(() => {\n axios.get('/api/portal/faqs.json')\n .then(resp => {\n setFaqs(resp.data);\n })\n }, [])\n\n const toggle = (i) => {\n if (selected === i) {\n return setSelected(null)\n }\n\n setSelected(i)\n }\n\n return (\n <>\n \n \n よくある質問\n \n \n
\n\n {/*
\n \n \n Q.管理費込みは賃料に含まれますか? \n\n\n
\n \n 物件情報内で賃料と管理費・共益費が併記されている場合、賃料には管理費・共益費は含まれていません。\n
\n \n \n \n Q.物件の価格は税込みですか? \n \n \n
\n \n 物件情報内で賃料と管理費・共益費が併記されている場合、賃料には管理費・共益費は含まれていません。\n
\n \n \n \n Q.内見予約を変更・キャンセルしたい \n \n \n
\n \n 物件情報内で賃料と管理費・共益費が併記されている場合、賃料には管理費・共益費は含まれていません。\n
\n \n \n \n Q.問い合わせをしたが、返信がこない \n \n \n
\n \n 物件情報内で賃料と管理費・共益費が併記されている場合、賃料には管理費・共益費は含まれていません。\n
\n \n */}\n
\n\n \n >\n )\n}\n\nexport default Faq\n","import { Button } from \"@material-ui/core\";\nimport React from \"react\";\nimport { useRecoilState } from \"recoil\";\nimport iconLocation from \"../../../../../assets/images/top/icon_location.svg\";\nimport { showMapSearchState } from \"../state\";\n\nfunction MapSearch() {\n const [isShowMapSearch, setShowMapSearch] =\n useRecoilState(showMapSearchState);\n\n return (\n \n {\n setShowMapSearch(!isShowMapSearch);\n sessionStorage.removeItem(\"city_ids\");\n sessionStorage.removeItem(\"station_master\");\n sessionStorage.removeItem(\"detail\");\n }}\n >\n
\n
\n
\n \n );\n}\n\nexport default MapSearch;\n","import React, { useEffect, useState } from \"react\";\nimport { useRecoilState, useRecoilValue } from \"recoil\";\nimport Map from \"../PropertiesSearch/Map\";\nimport iconMapPin from \"../../../../assets/images/icon/icon-location.svg\";\nimport { boundData } from \"../PropertiesSearch/state\";\nimport { showDetailConditionsState, showMapSearchState } from \"./state\";\nimport DetailConditions from \"../PropertiesSearch/DetailConditions\";\nimport MapContent from \"./Map\";\n\nconst MapSearch = (props) => {\n const bound = useRecoilValue(boundData);\n useEffect(() => {\n window.scrollTo(0, 0);\n });\n\n const [isShowDetailConditions, setIsShowDetailConditions] = useRecoilState(\n showDetailConditionsState\n );\n const [isShowMapSearch, setShowMapSearch] =\n useState(true);\n\n return (\n \n );\n};\nexport default MapSearch;\n","import React from \"react\";\nimport Container from \"@material-ui/core/Container\";\nimport { useForm } from \"react-hook-form\";\n\nexport const ContactInput = ({ formData, setForm, navigation }) => {\n const { name, name_kana, email, message } = formData;\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm();\n const onSubmit = () => {\n navigation.next();\n };\n return (\n <>\n \n \n トップページの\n
\n よくある質問\n \n で疑問点が解消されない場合は、こちらのページよりお問い合わせください。\n
\n 物件についてのご質問の場合は、物件詳細ページに記載されている物件番号を「お問い合わせ内容」の欄にご記入ください。\n
\n \n \n >\n );\n};\n","import React from \"react\";\nimport Container from \"@material-ui/core/Container\";\n\nexport const ContactComplete = ({ formData }) => {\n const {} = formData;\n return (\n <>\n \n >\n );\n};\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport debounce from '../utils/debounce';\nimport useForkRef from '../utils/useForkRef';\nimport deprecatedPropType from '../utils/deprecatedPropType';\n\nfunction getStyleValue(computedStyle, property) {\n return parseInt(computedStyle[property], 10) || 0;\n}\n\nvar useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nvar styles = {\n /* Styles applied to the shadow textarea element. */\n shadow: {\n // Visibility needed to hide the extra text area on iPads\n visibility: 'hidden',\n // Remove from the content flow\n position: 'absolute',\n // Ignore the scrollbar width\n overflow: 'hidden',\n height: 0,\n top: 0,\n left: 0,\n // Create a new layer, increase the isolation of the computed values\n transform: 'translateZ(0)'\n }\n};\nvar TextareaAutosize = /*#__PURE__*/React.forwardRef(function TextareaAutosize(props, ref) {\n var onChange = props.onChange,\n rows = props.rows,\n rowsMax = props.rowsMax,\n rowsMinProp = props.rowsMin,\n maxRowsProp = props.maxRows,\n _props$minRows = props.minRows,\n minRowsProp = _props$minRows === void 0 ? 1 : _props$minRows,\n style = props.style,\n value = props.value,\n other = _objectWithoutProperties(props, [\"onChange\", \"rows\", \"rowsMax\", \"rowsMin\", \"maxRows\", \"minRows\", \"style\", \"value\"]);\n\n var maxRows = maxRowsProp || rowsMax;\n var minRows = rows || rowsMinProp || minRowsProp;\n\n var _React$useRef = React.useRef(value != null),\n isControlled = _React$useRef.current;\n\n var inputRef = React.useRef(null);\n var handleRef = useForkRef(ref, inputRef);\n var shadowRef = React.useRef(null);\n var renders = React.useRef(0);\n\n var _React$useState = React.useState({}),\n state = _React$useState[0],\n setState = _React$useState[1];\n\n var syncHeight = React.useCallback(function () {\n var input = inputRef.current;\n var computedStyle = window.getComputedStyle(input);\n var inputShallow = shadowRef.current;\n inputShallow.style.width = computedStyle.width;\n inputShallow.value = input.value || props.placeholder || 'x';\n\n if (inputShallow.value.slice(-1) === '\\n') {\n // Certain fonts which overflow the line height will cause the textarea\n // to report a different scrollHeight depending on whether the last line\n // is empty. Make it non-empty to avoid this issue.\n inputShallow.value += ' ';\n }\n\n var boxSizing = computedStyle['box-sizing'];\n var padding = getStyleValue(computedStyle, 'padding-bottom') + getStyleValue(computedStyle, 'padding-top');\n var border = getStyleValue(computedStyle, 'border-bottom-width') + getStyleValue(computedStyle, 'border-top-width'); // The height of the inner content\n\n var innerHeight = inputShallow.scrollHeight - padding; // Measure height of a textarea with a single row\n\n inputShallow.value = 'x';\n var singleRowHeight = inputShallow.scrollHeight - padding; // The height of the outer content\n\n var outerHeight = innerHeight;\n\n if (minRows) {\n outerHeight = Math.max(Number(minRows) * singleRowHeight, outerHeight);\n }\n\n if (maxRows) {\n outerHeight = Math.min(Number(maxRows) * singleRowHeight, outerHeight);\n }\n\n outerHeight = Math.max(outerHeight, singleRowHeight); // Take the box sizing into account for applying this value as a style.\n\n var outerHeightStyle = outerHeight + (boxSizing === 'border-box' ? padding + border : 0);\n var overflow = Math.abs(outerHeight - innerHeight) <= 1;\n setState(function (prevState) {\n // Need a large enough difference to update the height.\n // This prevents infinite rendering loop.\n if (renders.current < 20 && (outerHeightStyle > 0 && Math.abs((prevState.outerHeightStyle || 0) - outerHeightStyle) > 1 || prevState.overflow !== overflow)) {\n renders.current += 1;\n return {\n overflow: overflow,\n outerHeightStyle: outerHeightStyle\n };\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (renders.current === 20) {\n console.error(['Material-UI: Too many re-renders. The layout is unstable.', 'TextareaAutosize limits the number of renders to prevent an infinite loop.'].join('\\n'));\n }\n }\n\n return prevState;\n });\n }, [maxRows, minRows, props.placeholder]);\n React.useEffect(function () {\n var handleResize = debounce(function () {\n renders.current = 0;\n syncHeight();\n });\n window.addEventListener('resize', handleResize);\n return function () {\n handleResize.clear();\n window.removeEventListener('resize', handleResize);\n };\n }, [syncHeight]);\n useEnhancedEffect(function () {\n syncHeight();\n });\n React.useEffect(function () {\n renders.current = 0;\n }, [value]);\n\n var handleChange = function handleChange(event) {\n renders.current = 0;\n\n if (!isControlled) {\n syncHeight();\n }\n\n if (onChange) {\n onChange(event);\n }\n };\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"textarea\", _extends({\n value: value,\n onChange: handleChange,\n ref: handleRef // Apply the rows prop to get a \"correct\" first SSR paint\n ,\n rows: minRows,\n style: _extends({\n height: state.outerHeightStyle,\n // Need a large enough difference to allow scrolling.\n // This prevents infinite rendering loop.\n overflow: state.overflow ? 'hidden' : null\n }, style)\n }, other)), /*#__PURE__*/React.createElement(\"textarea\", {\n \"aria-hidden\": true,\n className: props.className,\n readOnly: true,\n ref: shadowRef,\n tabIndex: -1,\n style: _extends({}, styles.shadow, style)\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default TextareaAutosize;","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@material-ui/utils\";\n/* eslint-disable jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */\n\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { refType } from '@material-ui/utils';\nimport formControlState from '../FormControl/formControlState';\nimport FormControlContext, { useFormControl } from '../FormControl/FormControlContext';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nimport useForkRef from '../utils/useForkRef';\nimport TextareaAutosize from '../TextareaAutosize';\nimport { isFilled } from './utils';\nexport var styles = function styles(theme) {\n var light = theme.palette.type === 'light';\n var placeholder = {\n color: 'currentColor',\n opacity: light ? 0.42 : 0.5,\n transition: theme.transitions.create('opacity', {\n duration: theme.transitions.duration.shorter\n })\n };\n var placeholderHidden = {\n opacity: '0 !important'\n };\n var placeholderVisible = {\n opacity: light ? 0.42 : 0.5\n };\n return {\n '@global': {\n '@keyframes mui-auto-fill': {},\n '@keyframes mui-auto-fill-cancel': {}\n },\n\n /* Styles applied to the root element. */\n root: _extends({}, theme.typography.body1, {\n color: theme.palette.text.primary,\n lineHeight: '1.1876em',\n // Reset (19px), match the native input line-height\n boxSizing: 'border-box',\n // Prevent padding issue with fullWidth.\n position: 'relative',\n cursor: 'text',\n display: 'inline-flex',\n alignItems: 'center',\n '&$disabled': {\n color: theme.palette.text.disabled,\n cursor: 'default'\n }\n }),\n\n /* Styles applied to the root element if the component is a descendant of `FormControl`. */\n formControl: {},\n\n /* Styles applied to the root element if the component is focused. */\n focused: {},\n\n /* Styles applied to the root element if `disabled={true}`. */\n disabled: {},\n\n /* Styles applied to the root element if `startAdornment` is provided. */\n adornedStart: {},\n\n /* Styles applied to the root element if `endAdornment` is provided. */\n adornedEnd: {},\n\n /* Pseudo-class applied to the root element if `error={true}`. */\n error: {},\n\n /* Styles applied to the `input` element if `margin=\"dense\"`. */\n marginDense: {},\n\n /* Styles applied to the root element if `multiline={true}`. */\n multiline: {\n padding: \"\".concat(8 - 2, \"px 0 \").concat(8 - 1, \"px\"),\n '&$marginDense': {\n paddingTop: 4 - 1\n }\n },\n\n /* Styles applied to the root element if the color is secondary. */\n colorSecondary: {},\n\n /* Styles applied to the root element if `fullWidth={true}`. */\n fullWidth: {\n width: '100%'\n },\n\n /* Styles applied to the `input` element. */\n input: {\n font: 'inherit',\n letterSpacing: 'inherit',\n color: 'currentColor',\n padding: \"\".concat(8 - 2, \"px 0 \").concat(8 - 1, \"px\"),\n border: 0,\n boxSizing: 'content-box',\n background: 'none',\n height: '1.1876em',\n // Reset (19px), match the native input line-height\n margin: 0,\n // Reset for Safari\n WebkitTapHighlightColor: 'transparent',\n display: 'block',\n // Make the flex item shrink with Firefox\n minWidth: 0,\n width: '100%',\n // Fix IE 11 width issue\n animationName: 'mui-auto-fill-cancel',\n animationDuration: '10ms',\n '&::-webkit-input-placeholder': placeholder,\n '&::-moz-placeholder': placeholder,\n // Firefox 19+\n '&:-ms-input-placeholder': placeholder,\n // IE 11\n '&::-ms-input-placeholder': placeholder,\n // Edge\n '&:focus': {\n outline: 0\n },\n // Reset Firefox invalid required input style\n '&:invalid': {\n boxShadow: 'none'\n },\n '&::-webkit-search-decoration': {\n // Remove the padding when type=search.\n '-webkit-appearance': 'none'\n },\n // Show and hide the placeholder logic\n 'label[data-shrink=false] + $formControl &': {\n '&::-webkit-input-placeholder': placeholderHidden,\n '&::-moz-placeholder': placeholderHidden,\n // Firefox 19+\n '&:-ms-input-placeholder': placeholderHidden,\n // IE 11\n '&::-ms-input-placeholder': placeholderHidden,\n // Edge\n '&:focus::-webkit-input-placeholder': placeholderVisible,\n '&:focus::-moz-placeholder': placeholderVisible,\n // Firefox 19+\n '&:focus:-ms-input-placeholder': placeholderVisible,\n // IE 11\n '&:focus::-ms-input-placeholder': placeholderVisible // Edge\n\n },\n '&$disabled': {\n opacity: 1 // Reset iOS opacity\n\n },\n '&:-webkit-autofill': {\n animationDuration: '5000s',\n animationName: 'mui-auto-fill'\n }\n },\n\n /* Styles applied to the `input` element if `margin=\"dense\"`. */\n inputMarginDense: {\n paddingTop: 4 - 1\n },\n\n /* Styles applied to the `input` element if `multiline={true}`. */\n inputMultiline: {\n height: 'auto',\n resize: 'none',\n padding: 0\n },\n\n /* Styles applied to the `input` element if `type=\"search\"`. */\n inputTypeSearch: {\n // Improve type search style.\n '-moz-appearance': 'textfield',\n '-webkit-appearance': 'textfield'\n },\n\n /* Styles applied to the `input` element if `startAdornment` is provided. */\n inputAdornedStart: {},\n\n /* Styles applied to the `input` element if `endAdornment` is provided. */\n inputAdornedEnd: {},\n\n /* Styles applied to the `input` element if `hiddenLabel={true}`. */\n inputHiddenLabel: {}\n };\n};\nvar useEnhancedEffect = typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect;\n/**\n * `InputBase` contains as few styles as possible.\n * It aims to be a simple building block for creating an input.\n * It contains a load of style reset and some state logic.\n */\n\nvar InputBase = /*#__PURE__*/React.forwardRef(function InputBase(props, ref) {\n var ariaDescribedby = props['aria-describedby'],\n autoComplete = props.autoComplete,\n autoFocus = props.autoFocus,\n classes = props.classes,\n className = props.className,\n color = props.color,\n defaultValue = props.defaultValue,\n disabled = props.disabled,\n endAdornment = props.endAdornment,\n error = props.error,\n _props$fullWidth = props.fullWidth,\n fullWidth = _props$fullWidth === void 0 ? false : _props$fullWidth,\n id = props.id,\n _props$inputComponent = props.inputComponent,\n inputComponent = _props$inputComponent === void 0 ? 'input' : _props$inputComponent,\n _props$inputProps = props.inputProps,\n inputPropsProp = _props$inputProps === void 0 ? {} : _props$inputProps,\n inputRefProp = props.inputRef,\n margin = props.margin,\n _props$multiline = props.multiline,\n multiline = _props$multiline === void 0 ? false : _props$multiline,\n name = props.name,\n onBlur = props.onBlur,\n onChange = props.onChange,\n onClick = props.onClick,\n onFocus = props.onFocus,\n onKeyDown = props.onKeyDown,\n onKeyUp = props.onKeyUp,\n placeholder = props.placeholder,\n readOnly = props.readOnly,\n renderSuffix = props.renderSuffix,\n rows = props.rows,\n rowsMax = props.rowsMax,\n rowsMin = props.rowsMin,\n maxRows = props.maxRows,\n minRows = props.minRows,\n startAdornment = props.startAdornment,\n _props$type = props.type,\n type = _props$type === void 0 ? 'text' : _props$type,\n valueProp = props.value,\n other = _objectWithoutProperties(props, [\"aria-describedby\", \"autoComplete\", \"autoFocus\", \"classes\", \"className\", \"color\", \"defaultValue\", \"disabled\", \"endAdornment\", \"error\", \"fullWidth\", \"id\", \"inputComponent\", \"inputProps\", \"inputRef\", \"margin\", \"multiline\", \"name\", \"onBlur\", \"onChange\", \"onClick\", \"onFocus\", \"onKeyDown\", \"onKeyUp\", \"placeholder\", \"readOnly\", \"renderSuffix\", \"rows\", \"rowsMax\", \"rowsMin\", \"maxRows\", \"minRows\", \"startAdornment\", \"type\", \"value\"]);\n\n var value = inputPropsProp.value != null ? inputPropsProp.value : valueProp;\n\n var _React$useRef = React.useRef(value != null),\n isControlled = _React$useRef.current;\n\n var inputRef = React.useRef();\n var handleInputRefWarning = React.useCallback(function (instance) {\n if (process.env.NODE_ENV !== 'production') {\n if (instance && instance.nodeName !== 'INPUT' && !instance.focus) {\n console.error(['Material-UI: You have provided a `inputComponent` to the input component', 'that does not correctly handle the `inputRef` prop.', 'Make sure the `inputRef` prop is called with a HTMLInputElement.'].join('\\n'));\n }\n }\n }, []);\n var handleInputPropsRefProp = useForkRef(inputPropsProp.ref, handleInputRefWarning);\n var handleInputRefProp = useForkRef(inputRefProp, handleInputPropsRefProp);\n var handleInputRef = useForkRef(inputRef, handleInputRefProp);\n\n var _React$useState = React.useState(false),\n focused = _React$useState[0],\n setFocused = _React$useState[1];\n\n var muiFormControl = useFormControl();\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(function () {\n if (muiFormControl) {\n return muiFormControl.registerEffect();\n }\n\n return undefined;\n }, [muiFormControl]);\n }\n\n var fcs = formControlState({\n props: props,\n muiFormControl: muiFormControl,\n states: ['color', 'disabled', 'error', 'hiddenLabel', 'margin', 'required', 'filled']\n });\n fcs.focused = muiFormControl ? muiFormControl.focused : focused; // The blur won't fire when the disabled state is set on a focused input.\n // We need to book keep the focused state manually.\n\n React.useEffect(function () {\n if (!muiFormControl && disabled && focused) {\n setFocused(false);\n\n if (onBlur) {\n onBlur();\n }\n }\n }, [muiFormControl, disabled, focused, onBlur]);\n var onFilled = muiFormControl && muiFormControl.onFilled;\n var onEmpty = muiFormControl && muiFormControl.onEmpty;\n var checkDirty = React.useCallback(function (obj) {\n if (isFilled(obj)) {\n if (onFilled) {\n onFilled();\n }\n } else if (onEmpty) {\n onEmpty();\n }\n }, [onFilled, onEmpty]);\n useEnhancedEffect(function () {\n if (isControlled) {\n checkDirty({\n value: value\n });\n }\n }, [value, checkDirty, isControlled]);\n\n var handleFocus = function handleFocus(event) {\n // Fix a bug with IE 11 where the focus/blur events are triggered\n // while the input is disabled.\n if (fcs.disabled) {\n event.stopPropagation();\n return;\n }\n\n if (onFocus) {\n onFocus(event);\n }\n\n if (inputPropsProp.onFocus) {\n inputPropsProp.onFocus(event);\n }\n\n if (muiFormControl && muiFormControl.onFocus) {\n muiFormControl.onFocus(event);\n } else {\n setFocused(true);\n }\n };\n\n var handleBlur = function handleBlur(event) {\n if (onBlur) {\n onBlur(event);\n }\n\n if (inputPropsProp.onBlur) {\n inputPropsProp.onBlur(event);\n }\n\n if (muiFormControl && muiFormControl.onBlur) {\n muiFormControl.onBlur(event);\n } else {\n setFocused(false);\n }\n };\n\n var handleChange = function handleChange(event) {\n if (!isControlled) {\n var element = event.target || inputRef.current;\n\n if (element == null) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: Expected valid input target. Did you use a custom `inputComponent` and forget to forward refs? See https://material-ui.com/r/input-component-ref-interface for more info.\" : _formatMuiErrorMessage(1));\n }\n\n checkDirty({\n value: element.value\n });\n }\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (inputPropsProp.onChange) {\n inputPropsProp.onChange.apply(inputPropsProp, [event].concat(args));\n } // Perform in the willUpdate\n\n\n if (onChange) {\n onChange.apply(void 0, [event].concat(args));\n }\n }; // Check the input state on mount, in case it was filled by the user\n // or auto filled by the browser before the hydration (for SSR).\n\n\n React.useEffect(function () {\n checkDirty(inputRef.current);\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n var handleClick = function handleClick(event) {\n if (inputRef.current && event.currentTarget === event.target) {\n inputRef.current.focus();\n }\n\n if (onClick) {\n onClick(event);\n }\n };\n\n var InputComponent = inputComponent;\n\n var inputProps = _extends({}, inputPropsProp, {\n ref: handleInputRef\n });\n\n if (typeof InputComponent !== 'string') {\n inputProps = _extends({\n // Rename ref to inputRef as we don't know the\n // provided `inputComponent` structure.\n inputRef: handleInputRef,\n type: type\n }, inputProps, {\n ref: null\n });\n } else if (multiline) {\n if (rows && !maxRows && !minRows && !rowsMax && !rowsMin) {\n InputComponent = 'textarea';\n } else {\n inputProps = _extends({\n minRows: rows || minRows,\n rowsMax: rowsMax,\n maxRows: maxRows\n }, inputProps);\n InputComponent = TextareaAutosize;\n }\n } else {\n inputProps = _extends({\n type: type\n }, inputProps);\n }\n\n var handleAutoFill = function handleAutoFill(event) {\n // Provide a fake value as Chrome might not let you access it for security reasons.\n checkDirty(event.animationName === 'mui-auto-fill-cancel' ? inputRef.current : {\n value: 'x'\n });\n };\n\n React.useEffect(function () {\n if (muiFormControl) {\n muiFormControl.setAdornedStart(Boolean(startAdornment));\n }\n }, [muiFormControl, startAdornment]);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx(classes.root, classes[\"color\".concat(capitalize(fcs.color || 'primary'))], className, fcs.disabled && classes.disabled, fcs.error && classes.error, fullWidth && classes.fullWidth, fcs.focused && classes.focused, muiFormControl && classes.formControl, multiline && classes.multiline, startAdornment && classes.adornedStart, endAdornment && classes.adornedEnd, fcs.margin === 'dense' && classes.marginDense),\n onClick: handleClick,\n ref: ref\n }, other), startAdornment, /*#__PURE__*/React.createElement(FormControlContext.Provider, {\n value: null\n }, /*#__PURE__*/React.createElement(InputComponent, _extends({\n \"aria-invalid\": fcs.error,\n \"aria-describedby\": ariaDescribedby,\n autoComplete: autoComplete,\n autoFocus: autoFocus,\n defaultValue: defaultValue,\n disabled: fcs.disabled,\n id: id,\n onAnimationStart: handleAutoFill,\n name: name,\n placeholder: placeholder,\n readOnly: readOnly,\n required: fcs.required,\n rows: rows,\n value: value,\n onKeyDown: onKeyDown,\n onKeyUp: onKeyUp\n }, inputProps, {\n className: clsx(classes.input, inputPropsProp.className, fcs.disabled && classes.disabled, multiline && classes.inputMultiline, fcs.hiddenLabel && classes.inputHiddenLabel, startAdornment && classes.inputAdornedStart, endAdornment && classes.inputAdornedEnd, type === 'search' && classes.inputTypeSearch, fcs.margin === 'dense' && classes.inputMarginDense),\n onBlur: handleBlur,\n onChange: handleChange,\n onFocus: handleFocus\n }))), endAdornment, renderSuffix ? renderSuffix(_extends({}, fcs, {\n startAdornment: startAdornment\n })) : null);\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default withStyles(styles, {\n name: 'MuiInputBase'\n})(InputBase);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { refType } from '@material-ui/utils';\nimport InputBase from '../InputBase';\nimport withStyles from '../styles/withStyles';\nexport var styles = function styles(theme) {\n var light = theme.palette.type === 'light';\n var bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';\n return {\n /* Styles applied to the root element. */\n root: {\n position: 'relative'\n },\n\n /* Styles applied to the root element if the component is a descendant of `FormControl`. */\n formControl: {\n 'label + &': {\n marginTop: 16\n }\n },\n\n /* Styles applied to the root element if the component is focused. */\n focused: {},\n\n /* Styles applied to the root element if `disabled={true}`. */\n disabled: {},\n\n /* Styles applied to the root element if color secondary. */\n colorSecondary: {\n '&$underline:after': {\n borderBottomColor: theme.palette.secondary.main\n }\n },\n\n /* Styles applied to the root element if `disableUnderline={false}`. */\n underline: {\n '&:after': {\n borderBottom: \"2px solid \".concat(theme.palette.primary.main),\n left: 0,\n bottom: 0,\n // Doing the other way around crash on IE 11 \"''\" https://github.com/cssinjs/jss/issues/242\n content: '\"\"',\n position: 'absolute',\n right: 0,\n transform: 'scaleX(0)',\n transition: theme.transitions.create('transform', {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeOut\n }),\n pointerEvents: 'none' // Transparent to the hover style.\n\n },\n '&$focused:after': {\n transform: 'scaleX(1)'\n },\n '&$error:after': {\n borderBottomColor: theme.palette.error.main,\n transform: 'scaleX(1)' // error is always underlined in red\n\n },\n '&:before': {\n borderBottom: \"1px solid \".concat(bottomLineColor),\n left: 0,\n bottom: 0,\n // Doing the other way around crash on IE 11 \"''\" https://github.com/cssinjs/jss/issues/242\n content: '\"\\\\00a0\"',\n position: 'absolute',\n right: 0,\n transition: theme.transitions.create('border-bottom-color', {\n duration: theme.transitions.duration.shorter\n }),\n pointerEvents: 'none' // Transparent to the hover style.\n\n },\n '&:hover:not($disabled):before': {\n borderBottom: \"2px solid \".concat(theme.palette.text.primary),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n borderBottom: \"1px solid \".concat(bottomLineColor)\n }\n },\n '&$disabled:before': {\n borderBottomStyle: 'dotted'\n }\n },\n\n /* Pseudo-class applied to the root element if `error={true}`. */\n error: {},\n\n /* Styles applied to the `input` element if `margin=\"dense\"`. */\n marginDense: {},\n\n /* Styles applied to the root element if `multiline={true}`. */\n multiline: {},\n\n /* Styles applied to the root element if `fullWidth={true}`. */\n fullWidth: {},\n\n /* Styles applied to the `input` element. */\n input: {},\n\n /* Styles applied to the `input` element if `margin=\"dense\"`. */\n inputMarginDense: {},\n\n /* Styles applied to the `input` element if `multiline={true}`. */\n inputMultiline: {},\n\n /* Styles applied to the `input` element if `type=\"search\"`. */\n inputTypeSearch: {}\n };\n};\nvar Input = /*#__PURE__*/React.forwardRef(function Input(props, ref) {\n var disableUnderline = props.disableUnderline,\n classes = props.classes,\n _props$fullWidth = props.fullWidth,\n fullWidth = _props$fullWidth === void 0 ? false : _props$fullWidth,\n _props$inputComponent = props.inputComponent,\n inputComponent = _props$inputComponent === void 0 ? 'input' : _props$inputComponent,\n _props$multiline = props.multiline,\n multiline = _props$multiline === void 0 ? false : _props$multiline,\n _props$type = props.type,\n type = _props$type === void 0 ? 'text' : _props$type,\n other = _objectWithoutProperties(props, [\"disableUnderline\", \"classes\", \"fullWidth\", \"inputComponent\", \"multiline\", \"type\"]);\n\n return /*#__PURE__*/React.createElement(InputBase, _extends({\n classes: _extends({}, classes, {\n root: clsx(classes.root, !disableUnderline && classes.underline),\n underline: null\n }),\n fullWidth: fullWidth,\n inputComponent: inputComponent,\n multiline: multiline,\n ref: ref,\n type: type\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nInput.muiName = 'Input';\nexport default withStyles(styles, {\n name: 'MuiInput'\n})(Input);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { refType } from '@material-ui/utils';\nimport InputBase from '../InputBase';\nimport withStyles from '../styles/withStyles';\nexport var styles = function styles(theme) {\n var light = theme.palette.type === 'light';\n var bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';\n var backgroundColor = light ? 'rgba(0, 0, 0, 0.09)' : 'rgba(255, 255, 255, 0.09)';\n return {\n /* Styles applied to the root element. */\n root: {\n position: 'relative',\n backgroundColor: backgroundColor,\n borderTopLeftRadius: theme.shape.borderRadius,\n borderTopRightRadius: theme.shape.borderRadius,\n transition: theme.transitions.create('background-color', {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeOut\n }),\n '&:hover': {\n backgroundColor: light ? 'rgba(0, 0, 0, 0.13)' : 'rgba(255, 255, 255, 0.13)',\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: backgroundColor\n }\n },\n '&$focused': {\n backgroundColor: light ? 'rgba(0, 0, 0, 0.09)' : 'rgba(255, 255, 255, 0.09)'\n },\n '&$disabled': {\n backgroundColor: light ? 'rgba(0, 0, 0, 0.12)' : 'rgba(255, 255, 255, 0.12)'\n }\n },\n\n /* Styles applied to the root element if color secondary. */\n colorSecondary: {\n '&$underline:after': {\n borderBottomColor: theme.palette.secondary.main\n }\n },\n\n /* Styles applied to the root element if `disableUnderline={false}`. */\n underline: {\n '&:after': {\n borderBottom: \"2px solid \".concat(theme.palette.primary.main),\n left: 0,\n bottom: 0,\n // Doing the other way around crash on IE 11 \"''\" https://github.com/cssinjs/jss/issues/242\n content: '\"\"',\n position: 'absolute',\n right: 0,\n transform: 'scaleX(0)',\n transition: theme.transitions.create('transform', {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeOut\n }),\n pointerEvents: 'none' // Transparent to the hover style.\n\n },\n '&$focused:after': {\n transform: 'scaleX(1)'\n },\n '&$error:after': {\n borderBottomColor: theme.palette.error.main,\n transform: 'scaleX(1)' // error is always underlined in red\n\n },\n '&:before': {\n borderBottom: \"1px solid \".concat(bottomLineColor),\n left: 0,\n bottom: 0,\n // Doing the other way around crash on IE 11 \"''\" https://github.com/cssinjs/jss/issues/242\n content: '\"\\\\00a0\"',\n position: 'absolute',\n right: 0,\n transition: theme.transitions.create('border-bottom-color', {\n duration: theme.transitions.duration.shorter\n }),\n pointerEvents: 'none' // Transparent to the hover style.\n\n },\n '&:hover:before': {\n borderBottom: \"1px solid \".concat(theme.palette.text.primary)\n },\n '&$disabled:before': {\n borderBottomStyle: 'dotted'\n }\n },\n\n /* Pseudo-class applied to the root element if the component is focused. */\n focused: {},\n\n /* Pseudo-class applied to the root element if `disabled={true}`. */\n disabled: {},\n\n /* Styles applied to the root element if `startAdornment` is provided. */\n adornedStart: {\n paddingLeft: 12\n },\n\n /* Styles applied to the root element if `endAdornment` is provided. */\n adornedEnd: {\n paddingRight: 12\n },\n\n /* Pseudo-class applied to the root element if `error={true}`. */\n error: {},\n\n /* Styles applied to the `input` element if `margin=\"dense\"`. */\n marginDense: {},\n\n /* Styles applied to the root element if `multiline={true}`. */\n multiline: {\n padding: '27px 12px 10px',\n '&$marginDense': {\n paddingTop: 23,\n paddingBottom: 6\n }\n },\n\n /* Styles applied to the `input` element. */\n input: {\n padding: '27px 12px 10px',\n '&:-webkit-autofill': {\n WebkitBoxShadow: theme.palette.type === 'light' ? null : '0 0 0 100px #266798 inset',\n WebkitTextFillColor: theme.palette.type === 'light' ? null : '#fff',\n caretColor: theme.palette.type === 'light' ? null : '#fff',\n borderTopLeftRadius: 'inherit',\n borderTopRightRadius: 'inherit'\n }\n },\n\n /* Styles applied to the `input` element if `margin=\"dense\"`. */\n inputMarginDense: {\n paddingTop: 23,\n paddingBottom: 6\n },\n\n /* Styles applied to the `input` if in ` `. */\n inputHiddenLabel: {\n paddingTop: 18,\n paddingBottom: 19,\n '&$inputMarginDense': {\n paddingTop: 10,\n paddingBottom: 11\n }\n },\n\n /* Styles applied to the `input` element if `multiline={true}`. */\n inputMultiline: {\n padding: 0\n },\n\n /* Styles applied to the `input` element if `startAdornment` is provided. */\n inputAdornedStart: {\n paddingLeft: 0\n },\n\n /* Styles applied to the `input` element if `endAdornment` is provided. */\n inputAdornedEnd: {\n paddingRight: 0\n }\n };\n};\nvar FilledInput = /*#__PURE__*/React.forwardRef(function FilledInput(props, ref) {\n var disableUnderline = props.disableUnderline,\n classes = props.classes,\n _props$fullWidth = props.fullWidth,\n fullWidth = _props$fullWidth === void 0 ? false : _props$fullWidth,\n _props$inputComponent = props.inputComponent,\n inputComponent = _props$inputComponent === void 0 ? 'input' : _props$inputComponent,\n _props$multiline = props.multiline,\n multiline = _props$multiline === void 0 ? false : _props$multiline,\n _props$type = props.type,\n type = _props$type === void 0 ? 'text' : _props$type,\n other = _objectWithoutProperties(props, [\"disableUnderline\", \"classes\", \"fullWidth\", \"inputComponent\", \"multiline\", \"type\"]);\n\n return /*#__PURE__*/React.createElement(InputBase, _extends({\n classes: _extends({}, classes, {\n root: clsx(classes.root, !disableUnderline && classes.underline),\n underline: null\n }),\n fullWidth: fullWidth,\n inputComponent: inputComponent,\n multiline: multiline,\n ref: ref,\n type: type\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nFilledInput.muiName = 'Input';\nexport default withStyles(styles, {\n name: 'MuiFilledInput'\n})(FilledInput);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport useTheme from '../styles/useTheme';\nimport capitalize from '../utils/capitalize';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n position: 'absolute',\n bottom: 0,\n right: 0,\n top: -5,\n left: 0,\n margin: 0,\n padding: '0 8px',\n pointerEvents: 'none',\n borderRadius: 'inherit',\n borderStyle: 'solid',\n borderWidth: 1,\n overflow: 'hidden'\n },\n\n /* Styles applied to the legend element when `labelWidth` is provided. */\n legend: {\n textAlign: 'left',\n padding: 0,\n lineHeight: '11px',\n // sync with `height` in `legend` styles\n transition: theme.transitions.create('width', {\n duration: 150,\n easing: theme.transitions.easing.easeOut\n })\n },\n\n /* Styles applied to the legend element. */\n legendLabelled: {\n display: 'block',\n width: 'auto',\n textAlign: 'left',\n padding: 0,\n height: 11,\n // sync with `lineHeight` in `legend` styles\n fontSize: '0.75em',\n visibility: 'hidden',\n maxWidth: 0.01,\n transition: theme.transitions.create('max-width', {\n duration: 50,\n easing: theme.transitions.easing.easeOut\n }),\n '& > span': {\n paddingLeft: 5,\n paddingRight: 5,\n display: 'inline-block'\n }\n },\n\n /* Styles applied to the legend element is notched. */\n legendNotched: {\n maxWidth: 1000,\n transition: theme.transitions.create('max-width', {\n duration: 100,\n easing: theme.transitions.easing.easeOut,\n delay: 50\n })\n }\n };\n};\n/**\n * @ignore - internal component.\n */\n\nvar NotchedOutline = /*#__PURE__*/React.forwardRef(function NotchedOutline(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n label = props.label,\n labelWidthProp = props.labelWidth,\n notched = props.notched,\n style = props.style,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"label\", \"labelWidth\", \"notched\", \"style\"]);\n\n var theme = useTheme();\n var align = theme.direction === 'rtl' ? 'right' : 'left';\n\n if (label !== undefined) {\n return /*#__PURE__*/React.createElement(\"fieldset\", _extends({\n \"aria-hidden\": true,\n className: clsx(classes.root, className),\n ref: ref,\n style: style\n }, other), /*#__PURE__*/React.createElement(\"legend\", {\n className: clsx(classes.legendLabelled, notched && classes.legendNotched)\n }, label ? /*#__PURE__*/React.createElement(\"span\", null, label) : /*#__PURE__*/React.createElement(\"span\", {\n dangerouslySetInnerHTML: {\n __html: ''\n }\n })));\n }\n\n var labelWidth = labelWidthProp > 0 ? labelWidthProp * 0.75 + 8 : 0.01;\n return /*#__PURE__*/React.createElement(\"fieldset\", _extends({\n \"aria-hidden\": true,\n style: _extends(_defineProperty({}, \"padding\".concat(capitalize(align)), 8), style),\n className: clsx(classes.root, className),\n ref: ref\n }, other), /*#__PURE__*/React.createElement(\"legend\", {\n className: classes.legend,\n style: {\n // IE 11: fieldset with legend does not render\n // a border radius. This maintains consistency\n // by always having a legend rendered\n width: notched ? labelWidth : 0.01\n }\n }, /*#__PURE__*/React.createElement(\"span\", {\n dangerouslySetInnerHTML: {\n __html: ''\n }\n })));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default withStyles(styles, {\n name: 'PrivateNotchedOutline'\n})(NotchedOutline);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { refType } from '@material-ui/utils';\nimport InputBase from '../InputBase';\nimport NotchedOutline from './NotchedOutline';\nimport withStyles from '../styles/withStyles';\nexport var styles = function styles(theme) {\n var borderColor = theme.palette.type === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)';\n return {\n /* Styles applied to the root element. */\n root: {\n position: 'relative',\n borderRadius: theme.shape.borderRadius,\n '&:hover $notchedOutline': {\n borderColor: theme.palette.text.primary\n },\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n '&:hover $notchedOutline': {\n borderColor: borderColor\n }\n },\n '&$focused $notchedOutline': {\n borderColor: theme.palette.primary.main,\n borderWidth: 2\n },\n '&$error $notchedOutline': {\n borderColor: theme.palette.error.main\n },\n '&$disabled $notchedOutline': {\n borderColor: theme.palette.action.disabled\n }\n },\n\n /* Styles applied to the root element if the color is secondary. */\n colorSecondary: {\n '&$focused $notchedOutline': {\n borderColor: theme.palette.secondary.main\n }\n },\n\n /* Styles applied to the root element if the component is focused. */\n focused: {},\n\n /* Styles applied to the root element if `disabled={true}`. */\n disabled: {},\n\n /* Styles applied to the root element if `startAdornment` is provided. */\n adornedStart: {\n paddingLeft: 14\n },\n\n /* Styles applied to the root element if `endAdornment` is provided. */\n adornedEnd: {\n paddingRight: 14\n },\n\n /* Pseudo-class applied to the root element if `error={true}`. */\n error: {},\n\n /* Styles applied to the `input` element if `margin=\"dense\"`. */\n marginDense: {},\n\n /* Styles applied to the root element if `multiline={true}`. */\n multiline: {\n padding: '18.5px 14px',\n '&$marginDense': {\n paddingTop: 10.5,\n paddingBottom: 10.5\n }\n },\n\n /* Styles applied to the `NotchedOutline` element. */\n notchedOutline: {\n borderColor: borderColor\n },\n\n /* Styles applied to the `input` element. */\n input: {\n padding: '18.5px 14px',\n '&:-webkit-autofill': {\n WebkitBoxShadow: theme.palette.type === 'light' ? null : '0 0 0 100px #266798 inset',\n WebkitTextFillColor: theme.palette.type === 'light' ? null : '#fff',\n caretColor: theme.palette.type === 'light' ? null : '#fff',\n borderRadius: 'inherit'\n }\n },\n\n /* Styles applied to the `input` element if `margin=\"dense\"`. */\n inputMarginDense: {\n paddingTop: 10.5,\n paddingBottom: 10.5\n },\n\n /* Styles applied to the `input` element if `multiline={true}`. */\n inputMultiline: {\n padding: 0\n },\n\n /* Styles applied to the `input` element if `startAdornment` is provided. */\n inputAdornedStart: {\n paddingLeft: 0\n },\n\n /* Styles applied to the `input` element if `endAdornment` is provided. */\n inputAdornedEnd: {\n paddingRight: 0\n }\n };\n};\nvar OutlinedInput = /*#__PURE__*/React.forwardRef(function OutlinedInput(props, ref) {\n var classes = props.classes,\n _props$fullWidth = props.fullWidth,\n fullWidth = _props$fullWidth === void 0 ? false : _props$fullWidth,\n _props$inputComponent = props.inputComponent,\n inputComponent = _props$inputComponent === void 0 ? 'input' : _props$inputComponent,\n label = props.label,\n _props$labelWidth = props.labelWidth,\n labelWidth = _props$labelWidth === void 0 ? 0 : _props$labelWidth,\n _props$multiline = props.multiline,\n multiline = _props$multiline === void 0 ? false : _props$multiline,\n notched = props.notched,\n _props$type = props.type,\n type = _props$type === void 0 ? 'text' : _props$type,\n other = _objectWithoutProperties(props, [\"classes\", \"fullWidth\", \"inputComponent\", \"label\", \"labelWidth\", \"multiline\", \"notched\", \"type\"]);\n\n return /*#__PURE__*/React.createElement(InputBase, _extends({\n renderSuffix: function renderSuffix(state) {\n return /*#__PURE__*/React.createElement(NotchedOutline, {\n className: classes.notchedOutline,\n label: label,\n labelWidth: labelWidth,\n notched: typeof notched !== 'undefined' ? notched : Boolean(state.startAdornment || state.filled || state.focused)\n });\n },\n classes: _extends({}, classes, {\n root: clsx(classes.root, classes.underline),\n notchedOutline: null\n }),\n fullWidth: fullWidth,\n inputComponent: inputComponent,\n multiline: multiline,\n ref: ref,\n type: type\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nOutlinedInput.muiName = 'Input';\nexport default withStyles(styles, {\n name: 'MuiOutlinedInput'\n})(OutlinedInput);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport withStyles from '../styles/withStyles';\nimport FormLabel from '../FormLabel';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n display: 'block',\n transformOrigin: 'top left'\n },\n\n /* Pseudo-class applied to the root element if `focused={true}`. */\n focused: {},\n\n /* Pseudo-class applied to the root element if `disabled={true}`. */\n disabled: {},\n\n /* Pseudo-class applied to the root element if `error={true}`. */\n error: {},\n\n /* Pseudo-class applied to the root element if `required={true}`. */\n required: {},\n\n /* Pseudo-class applied to the asterisk element. */\n asterisk: {},\n\n /* Styles applied to the root element if the component is a descendant of `FormControl`. */\n formControl: {\n position: 'absolute',\n left: 0,\n top: 0,\n // slight alteration to spec spacing to match visual spec result\n transform: 'translate(0, 24px) scale(1)'\n },\n\n /* Styles applied to the root element if `margin=\"dense\"`. */\n marginDense: {\n // Compensation for the `Input.inputDense` style.\n transform: 'translate(0, 21px) scale(1)'\n },\n\n /* Styles applied to the `input` element if `shrink={true}`. */\n shrink: {\n transform: 'translate(0, 1.5px) scale(0.75)',\n transformOrigin: 'top left'\n },\n\n /* Styles applied to the `input` element if `disableAnimation={false}`. */\n animated: {\n transition: theme.transitions.create(['color', 'transform'], {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeOut\n })\n },\n\n /* Styles applied to the root element if `variant=\"filled\"`. */\n filled: {\n // Chrome's autofill feature gives the input field a yellow background.\n // Since the input field is behind the label in the HTML tree,\n // the input field is drawn last and hides the label with an opaque background color.\n // zIndex: 1 will raise the label above opaque background-colors of input.\n zIndex: 1,\n pointerEvents: 'none',\n transform: 'translate(12px, 20px) scale(1)',\n '&$marginDense': {\n transform: 'translate(12px, 17px) scale(1)'\n },\n '&$shrink': {\n transform: 'translate(12px, 10px) scale(0.75)',\n '&$marginDense': {\n transform: 'translate(12px, 7px) scale(0.75)'\n }\n }\n },\n\n /* Styles applied to the root element if `variant=\"outlined\"`. */\n outlined: {\n // see comment above on filled.zIndex\n zIndex: 1,\n pointerEvents: 'none',\n transform: 'translate(14px, 20px) scale(1)',\n '&$marginDense': {\n transform: 'translate(14px, 12px) scale(1)'\n },\n '&$shrink': {\n transform: 'translate(14px, -6px) scale(0.75)'\n }\n }\n };\n};\nvar InputLabel = /*#__PURE__*/React.forwardRef(function InputLabel(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$disableAnimati = props.disableAnimation,\n disableAnimation = _props$disableAnimati === void 0 ? false : _props$disableAnimati,\n margin = props.margin,\n shrinkProp = props.shrink,\n variant = props.variant,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"disableAnimation\", \"margin\", \"shrink\", \"variant\"]);\n\n var muiFormControl = useFormControl();\n var shrink = shrinkProp;\n\n if (typeof shrink === 'undefined' && muiFormControl) {\n shrink = muiFormControl.filled || muiFormControl.focused || muiFormControl.adornedStart;\n }\n\n var fcs = formControlState({\n props: props,\n muiFormControl: muiFormControl,\n states: ['margin', 'variant']\n });\n return /*#__PURE__*/React.createElement(FormLabel, _extends({\n \"data-shrink\": shrink,\n className: clsx(classes.root, className, muiFormControl && classes.formControl, !disableAnimation && classes.animated, shrink && classes.shrink, fcs.margin === 'dense' && classes.marginDense, {\n 'filled': classes.filled,\n 'outlined': classes.outlined\n }[fcs.variant]),\n classes: {\n focused: classes.focused,\n disabled: classes.disabled,\n error: classes.error,\n required: classes.required,\n asterisk: classes.asterisk\n },\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default withStyles(styles, {\n name: 'MuiInputLabel'\n})(InputLabel);","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport withStyles from '../styles/withStyles';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: _extends({\n color: theme.palette.text.secondary\n }, theme.typography.caption, {\n textAlign: 'left',\n marginTop: 3,\n margin: 0,\n '&$disabled': {\n color: theme.palette.text.disabled\n },\n '&$error': {\n color: theme.palette.error.main\n }\n }),\n\n /* Pseudo-class applied to the root element if `error={true}`. */\n error: {},\n\n /* Pseudo-class applied to the root element if `disabled={true}`. */\n disabled: {},\n\n /* Styles applied to the root element if `margin=\"dense\"`. */\n marginDense: {\n marginTop: 4\n },\n\n /* Styles applied to the root element if `variant=\"filled\"` or `variant=\"outlined\"`. */\n contained: {\n marginLeft: 14,\n marginRight: 14\n },\n\n /* Pseudo-class applied to the root element if `focused={true}`. */\n focused: {},\n\n /* Pseudo-class applied to the root element if `filled={true}`. */\n filled: {},\n\n /* Pseudo-class applied to the root element if `required={true}`. */\n required: {}\n };\n};\nvar FormHelperText = /*#__PURE__*/React.forwardRef(function FormHelperText(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'p' : _props$component,\n disabled = props.disabled,\n error = props.error,\n filled = props.filled,\n focused = props.focused,\n margin = props.margin,\n required = props.required,\n variant = props.variant,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"component\", \"disabled\", \"error\", \"filled\", \"focused\", \"margin\", \"required\", \"variant\"]);\n\n var muiFormControl = useFormControl();\n var fcs = formControlState({\n props: props,\n muiFormControl: muiFormControl,\n states: ['variant', 'margin', 'disabled', 'error', 'filled', 'focused', 'required']\n });\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, (fcs.variant === 'filled' || fcs.variant === 'outlined') && classes.contained, className, fcs.disabled && classes.disabled, fcs.error && classes.error, fcs.filled && classes.filled, fcs.focused && classes.focused, fcs.required && classes.required, fcs.margin === 'dense' && classes.marginDense),\n ref: ref\n }, other), children === ' ' ?\n /*#__PURE__*/\n // eslint-disable-next-line react/no-danger\n React.createElement(\"span\", {\n dangerouslySetInnerHTML: {\n __html: ''\n }\n }) : children);\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default withStyles(styles, {\n name: 'MuiFormHelperText'\n})(FormHelperText);","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { exactProp, HTMLElementType } from '@material-ui/utils';\nimport deprecatedPropType from '../utils/deprecatedPropType';\nimport setRef from '../utils/setRef';\nimport useForkRef from '../utils/useForkRef';\n\nfunction getContainer(container) {\n container = typeof container === 'function' ? container() : container; // #StrictMode ready\n\n return ReactDOM.findDOMNode(container);\n}\n\nvar useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n/**\n * Portals provide a first-class way to render children into a DOM node\n * that exists outside the DOM hierarchy of the parent component.\n */\n\nvar Portal = /*#__PURE__*/React.forwardRef(function Portal(props, ref) {\n var children = props.children,\n container = props.container,\n _props$disablePortal = props.disablePortal,\n disablePortal = _props$disablePortal === void 0 ? false : _props$disablePortal,\n onRendered = props.onRendered;\n\n var _React$useState = React.useState(null),\n mountNode = _React$useState[0],\n setMountNode = _React$useState[1];\n\n var handleRef = useForkRef( /*#__PURE__*/ /*#__PURE__*/React.isValidElement(children) ? children.ref : null, ref);\n useEnhancedEffect(function () {\n if (!disablePortal) {\n setMountNode(getContainer(container) || document.body);\n }\n }, [container, disablePortal]);\n useEnhancedEffect(function () {\n if (mountNode && !disablePortal) {\n setRef(ref, mountNode);\n return function () {\n setRef(ref, null);\n };\n }\n\n return undefined;\n }, [ref, mountNode, disablePortal]);\n useEnhancedEffect(function () {\n if (onRendered && (mountNode || disablePortal)) {\n onRendered();\n }\n }, [onRendered, mountNode, disablePortal]);\n\n if (disablePortal) {\n if ( /*#__PURE__*/React.isValidElement(children)) {\n return /*#__PURE__*/React.cloneElement(children, {\n ref: handleRef\n });\n }\n\n return children;\n }\n\n return mountNode ? /*#__PURE__*/ReactDOM.createPortal(children, mountNode) : mountNode;\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\n\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line\n Portal['propTypes' + ''] = exactProp(Portal.propTypes);\n}\n\nexport default Portal;","// A change of the browser zoom change the scrollbar size.\n// Credit https://github.com/twbs/bootstrap/blob/3ffe3a5d82f6f561b82ff78d82b32a7d14aed558/js/src/modal.js#L512-L519\nexport default function getScrollbarSize() {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.width = '99px';\n scrollDiv.style.height = '99px';\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n var scrollbarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarSize;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport getScrollbarSize from '../utils/getScrollbarSize';\nimport ownerDocument from '../utils/ownerDocument';\nimport ownerWindow from '../utils/ownerWindow'; // Is a vertical scrollbar displayed?\n\nfunction isOverflowing(container) {\n var doc = ownerDocument(container);\n\n if (doc.body === container) {\n return ownerWindow(doc).innerWidth > doc.documentElement.clientWidth;\n }\n\n return container.scrollHeight > container.clientHeight;\n}\n\nexport function ariaHidden(node, show) {\n if (show) {\n node.setAttribute('aria-hidden', 'true');\n } else {\n node.removeAttribute('aria-hidden');\n }\n}\n\nfunction getPaddingRight(node) {\n return parseInt(window.getComputedStyle(node)['padding-right'], 10) || 0;\n}\n\nfunction ariaHiddenSiblings(container, mountNode, currentNode) {\n var nodesToExclude = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];\n var show = arguments.length > 4 ? arguments[4] : undefined;\n var blacklist = [mountNode, currentNode].concat(_toConsumableArray(nodesToExclude));\n var blacklistTagNames = ['TEMPLATE', 'SCRIPT', 'STYLE'];\n [].forEach.call(container.children, function (node) {\n if (node.nodeType === 1 && blacklist.indexOf(node) === -1 && blacklistTagNames.indexOf(node.tagName) === -1) {\n ariaHidden(node, show);\n }\n });\n}\n\nfunction findIndexOf(containerInfo, callback) {\n var idx = -1;\n containerInfo.some(function (item, index) {\n if (callback(item)) {\n idx = index;\n return true;\n }\n\n return false;\n });\n return idx;\n}\n\nfunction handleContainer(containerInfo, props) {\n var restoreStyle = [];\n var restorePaddings = [];\n var container = containerInfo.container;\n var fixedNodes;\n\n if (!props.disableScrollLock) {\n if (isOverflowing(container)) {\n // Compute the size before applying overflow hidden to avoid any scroll jumps.\n var scrollbarSize = getScrollbarSize();\n restoreStyle.push({\n value: container.style.paddingRight,\n key: 'padding-right',\n el: container\n }); // Use computed style, here to get the real padding to add our scrollbar width.\n\n container.style['padding-right'] = \"\".concat(getPaddingRight(container) + scrollbarSize, \"px\"); // .mui-fixed is a global helper.\n\n fixedNodes = ownerDocument(container).querySelectorAll('.mui-fixed');\n [].forEach.call(fixedNodes, function (node) {\n restorePaddings.push(node.style.paddingRight);\n node.style.paddingRight = \"\".concat(getPaddingRight(node) + scrollbarSize, \"px\");\n });\n } // Improve Gatsby support\n // https://css-tricks.com/snippets/css/force-vertical-scrollbar/\n\n\n var parent = container.parentElement;\n var scrollContainer = parent.nodeName === 'HTML' && window.getComputedStyle(parent)['overflow-y'] === 'scroll' ? parent : container; // Block the scroll even if no scrollbar is visible to account for mobile keyboard\n // screensize shrink.\n\n restoreStyle.push({\n value: scrollContainer.style.overflow,\n key: 'overflow',\n el: scrollContainer\n });\n scrollContainer.style.overflow = 'hidden';\n }\n\n var restore = function restore() {\n if (fixedNodes) {\n [].forEach.call(fixedNodes, function (node, i) {\n if (restorePaddings[i]) {\n node.style.paddingRight = restorePaddings[i];\n } else {\n node.style.removeProperty('padding-right');\n }\n });\n }\n\n restoreStyle.forEach(function (_ref) {\n var value = _ref.value,\n el = _ref.el,\n key = _ref.key;\n\n if (value) {\n el.style.setProperty(key, value);\n } else {\n el.style.removeProperty(key);\n }\n });\n };\n\n return restore;\n}\n\nfunction getHiddenSiblings(container) {\n var hiddenSiblings = [];\n [].forEach.call(container.children, function (node) {\n if (node.getAttribute && node.getAttribute('aria-hidden') === 'true') {\n hiddenSiblings.push(node);\n }\n });\n return hiddenSiblings;\n}\n/**\n * @ignore - do not document.\n *\n * Proper state management for containers and the modals in those containers.\n * Simplified, but inspired by react-overlay's ModalManager class.\n * Used by the Modal to ensure proper styling of containers.\n */\n\n\nvar ModalManager = /*#__PURE__*/function () {\n function ModalManager() {\n _classCallCheck(this, ModalManager); // this.modals[modalIndex] = modal\n\n\n this.modals = []; // this.containers[containerIndex] = {\n // modals: [],\n // container,\n // restore: null,\n // }\n\n this.containers = [];\n }\n\n _createClass(ModalManager, [{\n key: \"add\",\n value: function add(modal, container) {\n var modalIndex = this.modals.indexOf(modal);\n\n if (modalIndex !== -1) {\n return modalIndex;\n }\n\n modalIndex = this.modals.length;\n this.modals.push(modal); // If the modal we are adding is already in the DOM.\n\n if (modal.modalRef) {\n ariaHidden(modal.modalRef, false);\n }\n\n var hiddenSiblingNodes = getHiddenSiblings(container);\n ariaHiddenSiblings(container, modal.mountNode, modal.modalRef, hiddenSiblingNodes, true);\n var containerIndex = findIndexOf(this.containers, function (item) {\n return item.container === container;\n });\n\n if (containerIndex !== -1) {\n this.containers[containerIndex].modals.push(modal);\n return modalIndex;\n }\n\n this.containers.push({\n modals: [modal],\n container: container,\n restore: null,\n hiddenSiblingNodes: hiddenSiblingNodes\n });\n return modalIndex;\n }\n }, {\n key: \"mount\",\n value: function mount(modal, props) {\n var containerIndex = findIndexOf(this.containers, function (item) {\n return item.modals.indexOf(modal) !== -1;\n });\n var containerInfo = this.containers[containerIndex];\n\n if (!containerInfo.restore) {\n containerInfo.restore = handleContainer(containerInfo, props);\n }\n }\n }, {\n key: \"remove\",\n value: function remove(modal) {\n var modalIndex = this.modals.indexOf(modal);\n\n if (modalIndex === -1) {\n return modalIndex;\n }\n\n var containerIndex = findIndexOf(this.containers, function (item) {\n return item.modals.indexOf(modal) !== -1;\n });\n var containerInfo = this.containers[containerIndex];\n containerInfo.modals.splice(containerInfo.modals.indexOf(modal), 1);\n this.modals.splice(modalIndex, 1); // If that was the last modal in a container, clean up the container.\n\n if (containerInfo.modals.length === 0) {\n // The modal might be closed before it had the chance to be mounted in the DOM.\n if (containerInfo.restore) {\n containerInfo.restore();\n }\n\n if (modal.modalRef) {\n // In case the modal wasn't in the DOM yet.\n ariaHidden(modal.modalRef, true);\n }\n\n ariaHiddenSiblings(containerInfo.container, modal.mountNode, modal.modalRef, containerInfo.hiddenSiblingNodes, false);\n this.containers.splice(containerIndex, 1);\n } else {\n // Otherwise make sure the next top modal is visible to a screen reader.\n var nextTop = containerInfo.modals[containerInfo.modals.length - 1]; // as soon as a modal is adding its modalRef is undefined. it can't set\n // aria-hidden because the dom element doesn't exist either\n // when modal was unmounted before modalRef gets null\n\n if (nextTop.modalRef) {\n ariaHidden(nextTop.modalRef, false);\n }\n }\n\n return modalIndex;\n }\n }, {\n key: \"isTopModal\",\n value: function isTopModal(modal) {\n return this.modals.length > 0 && this.modals[this.modals.length - 1] === modal;\n }\n }]);\n\n return ModalManager;\n}();\n\nexport { ModalManager as default };","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","/* eslint-disable consistent-return, jsx-a11y/no-noninteractive-tabindex, camelcase */\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport ownerDocument from '../utils/ownerDocument';\nimport useForkRef from '../utils/useForkRef';\nimport { exactProp } from '@material-ui/utils';\n/**\n * Utility component that locks focus inside the component.\n */\n\nfunction Unstable_TrapFocus(props) {\n var children = props.children,\n _props$disableAutoFoc = props.disableAutoFocus,\n disableAutoFocus = _props$disableAutoFoc === void 0 ? false : _props$disableAutoFoc,\n _props$disableEnforce = props.disableEnforceFocus,\n disableEnforceFocus = _props$disableEnforce === void 0 ? false : _props$disableEnforce,\n _props$disableRestore = props.disableRestoreFocus,\n disableRestoreFocus = _props$disableRestore === void 0 ? false : _props$disableRestore,\n getDoc = props.getDoc,\n isEnabled = props.isEnabled,\n open = props.open;\n var ignoreNextEnforceFocus = React.useRef();\n var sentinelStart = React.useRef(null);\n var sentinelEnd = React.useRef(null);\n var nodeToRestore = React.useRef();\n var rootRef = React.useRef(null); // can be removed once we drop support for non ref forwarding class components\n\n var handleOwnRef = React.useCallback(function (instance) {\n // #StrictMode ready\n rootRef.current = ReactDOM.findDOMNode(instance);\n }, []);\n var handleRef = useForkRef(children.ref, handleOwnRef);\n var prevOpenRef = React.useRef();\n React.useEffect(function () {\n prevOpenRef.current = open;\n }, [open]);\n\n if (!prevOpenRef.current && open && typeof window !== 'undefined') {\n // WARNING: Potentially unsafe in concurrent mode.\n // The way the read on `nodeToRestore` is setup could make this actually safe.\n // Say we render `open={false}` -> `open={true}` but never commit.\n // We have now written a state that wasn't committed. But no committed effect\n // will read this wrong value. We only read from `nodeToRestore` in effects\n // that were committed on `open={true}`\n // WARNING: Prevents the instance from being garbage collected. Should only\n // hold a weak ref.\n nodeToRestore.current = getDoc().activeElement;\n }\n\n React.useEffect(function () {\n if (!open) {\n return;\n }\n\n var doc = ownerDocument(rootRef.current); // We might render an empty child.\n\n if (!disableAutoFocus && rootRef.current && !rootRef.current.contains(doc.activeElement)) {\n if (!rootRef.current.hasAttribute('tabIndex')) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(['Material-UI: The modal content node does not accept focus.', 'For the benefit of assistive technologies, ' + 'the tabIndex of the node is being set to \"-1\".'].join('\\n'));\n }\n\n rootRef.current.setAttribute('tabIndex', -1);\n }\n\n rootRef.current.focus();\n }\n\n var contain = function contain() {\n var rootElement = rootRef.current; // Cleanup functions are executed lazily in React 17.\n // Contain can be called between the component being unmounted and its cleanup function being run.\n\n if (rootElement === null) {\n return;\n }\n\n if (!doc.hasFocus() || disableEnforceFocus || !isEnabled() || ignoreNextEnforceFocus.current) {\n ignoreNextEnforceFocus.current = false;\n return;\n }\n\n if (rootRef.current && !rootRef.current.contains(doc.activeElement)) {\n rootRef.current.focus();\n }\n };\n\n var loopFocus = function loopFocus(event) {\n // 9 = Tab\n if (disableEnforceFocus || !isEnabled() || event.keyCode !== 9) {\n return;\n } // Make sure the next tab starts from the right place.\n\n\n if (doc.activeElement === rootRef.current) {\n // We need to ignore the next contain as\n // it will try to move the focus back to the rootRef element.\n ignoreNextEnforceFocus.current = true;\n\n if (event.shiftKey) {\n sentinelEnd.current.focus();\n } else {\n sentinelStart.current.focus();\n }\n }\n };\n\n doc.addEventListener('focus', contain, true);\n doc.addEventListener('keydown', loopFocus, true); // With Edge, Safari and Firefox, no focus related events are fired when the focused area stops being a focused area\n // e.g. https://bugzilla.mozilla.org/show_bug.cgi?id=559561.\n //\n // The whatwg spec defines how the browser should behave but does not explicitly mention any events:\n // https://html.spec.whatwg.org/multipage/interaction.html#focus-fixup-rule.\n\n var interval = setInterval(function () {\n contain();\n }, 50);\n return function () {\n clearInterval(interval);\n doc.removeEventListener('focus', contain, true);\n doc.removeEventListener('keydown', loopFocus, true); // restoreLastFocus()\n\n if (!disableRestoreFocus) {\n // In IE 11 it is possible for document.activeElement to be null resulting\n // in nodeToRestore.current being null.\n // Not all elements in IE 11 have a focus method.\n // Once IE 11 support is dropped the focus() call can be unconditional.\n if (nodeToRestore.current && nodeToRestore.current.focus) {\n nodeToRestore.current.focus();\n }\n\n nodeToRestore.current = null;\n }\n };\n }, [disableAutoFocus, disableEnforceFocus, disableRestoreFocus, isEnabled, open]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n tabIndex: 0,\n ref: sentinelStart,\n \"data-test\": \"sentinelStart\"\n }), /*#__PURE__*/React.cloneElement(children, {\n ref: handleRef\n }), /*#__PURE__*/React.createElement(\"div\", {\n tabIndex: 0,\n ref: sentinelEnd,\n \"data-test\": \"sentinelEnd\"\n }));\n}\n\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\n\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line\n Unstable_TrapFocus['propTypes' + ''] = exactProp(Unstable_TrapFocus.propTypes);\n}\n\nexport default Unstable_TrapFocus;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n zIndex: -1,\n position: 'fixed',\n right: 0,\n bottom: 0,\n top: 0,\n left: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n WebkitTapHighlightColor: 'transparent'\n },\n\n /* Styles applied to the root element if `invisible={true}`. */\n invisible: {\n backgroundColor: 'transparent'\n }\n};\n/**\n * @ignore - internal component.\n */\n\nvar SimpleBackdrop = /*#__PURE__*/React.forwardRef(function SimpleBackdrop(props, ref) {\n var _props$invisible = props.invisible,\n invisible = _props$invisible === void 0 ? false : _props$invisible,\n open = props.open,\n other = _objectWithoutProperties(props, [\"invisible\", \"open\"]);\n\n return open ? /*#__PURE__*/React.createElement(\"div\", _extends({\n \"aria-hidden\": true,\n ref: ref\n }, other, {\n style: _extends({}, styles.root, invisible ? styles.invisible : {}, other.style)\n })) : null;\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default SimpleBackdrop;","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { getThemeProps, useTheme } from '@material-ui/styles';\nimport { elementAcceptingRef, HTMLElementType } from '@material-ui/utils';\nimport deprecatedPropType from '../utils/deprecatedPropType';\nimport ownerDocument from '../utils/ownerDocument';\nimport Portal from '../Portal';\nimport createChainedFunction from '../utils/createChainedFunction';\nimport useForkRef from '../utils/useForkRef';\nimport useEventCallback from '../utils/useEventCallback';\nimport zIndex from '../styles/zIndex';\nimport ModalManager, { ariaHidden } from './ModalManager';\nimport TrapFocus from '../Unstable_TrapFocus';\nimport SimpleBackdrop from './SimpleBackdrop';\n\nfunction getContainer(container) {\n container = typeof container === 'function' ? container() : container;\n return ReactDOM.findDOMNode(container);\n}\n\nfunction getHasTransition(props) {\n return props.children ? props.children.props.hasOwnProperty('in') : false;\n} // A modal manager used to track and manage the state of open Modals.\n// Modals don't open on the server so this won't conflict with concurrent requests.\n\n\nvar defaultManager = new ModalManager();\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n position: 'fixed',\n zIndex: theme.zIndex.modal,\n right: 0,\n bottom: 0,\n top: 0,\n left: 0\n },\n\n /* Styles applied to the root element if the `Modal` has exited. */\n hidden: {\n visibility: 'hidden'\n }\n };\n};\n/**\n * Modal is a lower-level construct that is leveraged by the following components:\n *\n * - [Dialog](/api/dialog/)\n * - [Drawer](/api/drawer/)\n * - [Menu](/api/menu/)\n * - [Popover](/api/popover/)\n *\n * If you are creating a modal dialog, you probably want to use the [Dialog](/api/dialog/) component\n * rather than directly using Modal.\n *\n * This component shares many concepts with [react-overlays](https://react-bootstrap.github.io/react-overlays/#modals).\n */\n\nvar Modal = /*#__PURE__*/React.forwardRef(function Modal(inProps, ref) {\n var theme = useTheme();\n var props = getThemeProps({\n name: 'MuiModal',\n props: _extends({}, inProps),\n theme: theme\n });\n\n var _props$BackdropCompon = props.BackdropComponent,\n BackdropComponent = _props$BackdropCompon === void 0 ? SimpleBackdrop : _props$BackdropCompon,\n BackdropProps = props.BackdropProps,\n children = props.children,\n _props$closeAfterTran = props.closeAfterTransition,\n closeAfterTransition = _props$closeAfterTran === void 0 ? false : _props$closeAfterTran,\n container = props.container,\n _props$disableAutoFoc = props.disableAutoFocus,\n disableAutoFocus = _props$disableAutoFoc === void 0 ? false : _props$disableAutoFoc,\n _props$disableBackdro = props.disableBackdropClick,\n disableBackdropClick = _props$disableBackdro === void 0 ? false : _props$disableBackdro,\n _props$disableEnforce = props.disableEnforceFocus,\n disableEnforceFocus = _props$disableEnforce === void 0 ? false : _props$disableEnforce,\n _props$disableEscapeK = props.disableEscapeKeyDown,\n disableEscapeKeyDown = _props$disableEscapeK === void 0 ? false : _props$disableEscapeK,\n _props$disablePortal = props.disablePortal,\n disablePortal = _props$disablePortal === void 0 ? false : _props$disablePortal,\n _props$disableRestore = props.disableRestoreFocus,\n disableRestoreFocus = _props$disableRestore === void 0 ? false : _props$disableRestore,\n _props$disableScrollL = props.disableScrollLock,\n disableScrollLock = _props$disableScrollL === void 0 ? false : _props$disableScrollL,\n _props$hideBackdrop = props.hideBackdrop,\n hideBackdrop = _props$hideBackdrop === void 0 ? false : _props$hideBackdrop,\n _props$keepMounted = props.keepMounted,\n keepMounted = _props$keepMounted === void 0 ? false : _props$keepMounted,\n _props$manager = props.manager,\n manager = _props$manager === void 0 ? defaultManager : _props$manager,\n onBackdropClick = props.onBackdropClick,\n onClose = props.onClose,\n onEscapeKeyDown = props.onEscapeKeyDown,\n onRendered = props.onRendered,\n open = props.open,\n other = _objectWithoutProperties(props, [\"BackdropComponent\", \"BackdropProps\", \"children\", \"closeAfterTransition\", \"container\", \"disableAutoFocus\", \"disableBackdropClick\", \"disableEnforceFocus\", \"disableEscapeKeyDown\", \"disablePortal\", \"disableRestoreFocus\", \"disableScrollLock\", \"hideBackdrop\", \"keepMounted\", \"manager\", \"onBackdropClick\", \"onClose\", \"onEscapeKeyDown\", \"onRendered\", \"open\"]);\n\n var _React$useState = React.useState(true),\n exited = _React$useState[0],\n setExited = _React$useState[1];\n\n var modal = React.useRef({});\n var mountNodeRef = React.useRef(null);\n var modalRef = React.useRef(null);\n var handleRef = useForkRef(modalRef, ref);\n var hasTransition = getHasTransition(props);\n\n var getDoc = function getDoc() {\n return ownerDocument(mountNodeRef.current);\n };\n\n var getModal = function getModal() {\n modal.current.modalRef = modalRef.current;\n modal.current.mountNode = mountNodeRef.current;\n return modal.current;\n };\n\n var handleMounted = function handleMounted() {\n manager.mount(getModal(), {\n disableScrollLock: disableScrollLock\n }); // Fix a bug on Chrome where the scroll isn't initially 0.\n\n modalRef.current.scrollTop = 0;\n };\n\n var handleOpen = useEventCallback(function () {\n var resolvedContainer = getContainer(container) || getDoc().body;\n manager.add(getModal(), resolvedContainer); // The element was already mounted.\n\n if (modalRef.current) {\n handleMounted();\n }\n });\n var isTopModal = React.useCallback(function () {\n return manager.isTopModal(getModal());\n }, [manager]);\n var handlePortalRef = useEventCallback(function (node) {\n mountNodeRef.current = node;\n\n if (!node) {\n return;\n }\n\n if (onRendered) {\n onRendered();\n }\n\n if (open && isTopModal()) {\n handleMounted();\n } else {\n ariaHidden(modalRef.current, true);\n }\n });\n var handleClose = React.useCallback(function () {\n manager.remove(getModal());\n }, [manager]);\n React.useEffect(function () {\n return function () {\n handleClose();\n };\n }, [handleClose]);\n React.useEffect(function () {\n if (open) {\n handleOpen();\n } else if (!hasTransition || !closeAfterTransition) {\n handleClose();\n }\n }, [open, handleClose, hasTransition, closeAfterTransition, handleOpen]);\n\n if (!keepMounted && !open && (!hasTransition || exited)) {\n return null;\n }\n\n var handleEnter = function handleEnter() {\n setExited(false);\n };\n\n var handleExited = function handleExited() {\n setExited(true);\n\n if (closeAfterTransition) {\n handleClose();\n }\n };\n\n var handleBackdropClick = function handleBackdropClick(event) {\n if (event.target !== event.currentTarget) {\n return;\n }\n\n if (onBackdropClick) {\n onBackdropClick(event);\n }\n\n if (!disableBackdropClick && onClose) {\n onClose(event, 'backdropClick');\n }\n };\n\n var handleKeyDown = function handleKeyDown(event) {\n // The handler doesn't take event.defaultPrevented into account:\n //\n // event.preventDefault() is meant to stop default behaviours like\n // clicking a checkbox to check it, hitting a button to submit a form,\n // and hitting left arrow to move the cursor in a text input etc.\n // Only special HTML elements have these default behaviors.\n if (event.key !== 'Escape' || !isTopModal()) {\n return;\n }\n\n if (onEscapeKeyDown) {\n onEscapeKeyDown(event);\n }\n\n if (!disableEscapeKeyDown) {\n // Swallow the event, in case someone is listening for the escape key on the body.\n event.stopPropagation();\n\n if (onClose) {\n onClose(event, 'escapeKeyDown');\n }\n }\n };\n\n var inlineStyle = styles(theme || {\n zIndex: zIndex\n });\n var childProps = {};\n\n if (children.props.tabIndex === undefined) {\n childProps.tabIndex = children.props.tabIndex || '-1';\n } // It's a Transition like component\n\n\n if (hasTransition) {\n childProps.onEnter = createChainedFunction(handleEnter, children.props.onEnter);\n childProps.onExited = createChainedFunction(handleExited, children.props.onExited);\n }\n\n return /*#__PURE__*/React.createElement(Portal, {\n ref: handlePortalRef,\n container: container,\n disablePortal: disablePortal\n }, /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: handleRef,\n onKeyDown: handleKeyDown,\n role: \"presentation\"\n }, other, {\n style: _extends({}, inlineStyle.root, !open && exited ? inlineStyle.hidden : {}, other.style)\n }), hideBackdrop ? null : /*#__PURE__*/React.createElement(BackdropComponent, _extends({\n open: open,\n onClick: handleBackdropClick\n }, BackdropProps)), /*#__PURE__*/React.createElement(TrapFocus, {\n disableEnforceFocus: disableEnforceFocus,\n disableAutoFocus: disableAutoFocus,\n disableRestoreFocus: disableRestoreFocus,\n getDoc: getDoc,\n isEnabled: isTopModal,\n open: open\n }, /*#__PURE__*/React.cloneElement(children, childProps))));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default Modal;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport { Transition } from 'react-transition-group';\nimport useTheme from '../styles/useTheme';\nimport { reflow, getTransitionProps } from '../transitions/utils';\nimport useForkRef from '../utils/useForkRef';\n\nfunction getScale(value) {\n return \"scale(\".concat(value, \", \").concat(Math.pow(value, 2), \")\");\n}\n\nvar styles = {\n entering: {\n opacity: 1,\n transform: getScale(1)\n },\n entered: {\n opacity: 1,\n transform: 'none'\n }\n};\n/**\n * The Grow transition is used by the [Tooltip](/components/tooltips/) and\n * [Popover](/components/popover/) components.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\n\nvar Grow = /*#__PURE__*/React.forwardRef(function Grow(props, ref) {\n var children = props.children,\n _props$disableStrictM = props.disableStrictModeCompat,\n disableStrictModeCompat = _props$disableStrictM === void 0 ? false : _props$disableStrictM,\n inProp = props.in,\n onEnter = props.onEnter,\n onEntered = props.onEntered,\n onEntering = props.onEntering,\n onExit = props.onExit,\n onExited = props.onExited,\n onExiting = props.onExiting,\n style = props.style,\n _props$timeout = props.timeout,\n timeout = _props$timeout === void 0 ? 'auto' : _props$timeout,\n _props$TransitionComp = props.TransitionComponent,\n TransitionComponent = _props$TransitionComp === void 0 ? Transition : _props$TransitionComp,\n other = _objectWithoutProperties(props, [\"children\", \"disableStrictModeCompat\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"style\", \"timeout\", \"TransitionComponent\"]);\n\n var timer = React.useRef();\n var autoTimeout = React.useRef();\n var theme = useTheme();\n var enableStrictModeCompat = theme.unstable_strictMode && !disableStrictModeCompat;\n var nodeRef = React.useRef(null);\n var foreignRef = useForkRef(children.ref, ref);\n var handleRef = useForkRef(enableStrictModeCompat ? nodeRef : undefined, foreignRef);\n\n var normalizedTransitionCallback = function normalizedTransitionCallback(callback) {\n return function (nodeOrAppearing, maybeAppearing) {\n if (callback) {\n var _ref = enableStrictModeCompat ? [nodeRef.current, nodeOrAppearing] : [nodeOrAppearing, maybeAppearing],\n _ref2 = _slicedToArray(_ref, 2),\n node = _ref2[0],\n isAppearing = _ref2[1]; // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n\n\n if (isAppearing === undefined) {\n callback(node);\n } else {\n callback(node, isAppearing);\n }\n }\n };\n };\n\n var handleEntering = normalizedTransitionCallback(onEntering);\n var handleEnter = normalizedTransitionCallback(function (node, isAppearing) {\n reflow(node); // So the animation always start from the start.\n\n var _getTransitionProps = getTransitionProps({\n style: style,\n timeout: timeout\n }, {\n mode: 'enter'\n }),\n transitionDuration = _getTransitionProps.duration,\n delay = _getTransitionProps.delay;\n\n var duration;\n\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n\n node.style.transition = [theme.transitions.create('opacity', {\n duration: duration,\n delay: delay\n }), theme.transitions.create('transform', {\n duration: duration * 0.666,\n delay: delay\n })].join(',');\n\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n });\n var handleEntered = normalizedTransitionCallback(onEntered);\n var handleExiting = normalizedTransitionCallback(onExiting);\n var handleExit = normalizedTransitionCallback(function (node) {\n var _getTransitionProps2 = getTransitionProps({\n style: style,\n timeout: timeout\n }, {\n mode: 'exit'\n }),\n transitionDuration = _getTransitionProps2.duration,\n delay = _getTransitionProps2.delay;\n\n var duration;\n\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n\n node.style.transition = [theme.transitions.create('opacity', {\n duration: duration,\n delay: delay\n }), theme.transitions.create('transform', {\n duration: duration * 0.666,\n delay: delay || duration * 0.333\n })].join(',');\n node.style.opacity = '0';\n node.style.transform = getScale(0.75);\n\n if (onExit) {\n onExit(node);\n }\n });\n var handleExited = normalizedTransitionCallback(onExited);\n\n var addEndListener = function addEndListener(nodeOrNext, maybeNext) {\n var next = enableStrictModeCompat ? nodeOrNext : maybeNext;\n\n if (timeout === 'auto') {\n timer.current = setTimeout(next, autoTimeout.current || 0);\n }\n };\n\n React.useEffect(function () {\n return function () {\n clearTimeout(timer.current);\n };\n }, []);\n return /*#__PURE__*/React.createElement(TransitionComponent, _extends({\n appear: true,\n in: inProp,\n nodeRef: enableStrictModeCompat ? nodeRef : undefined,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: addEndListener,\n timeout: timeout === 'auto' ? null : timeout\n }, other), function (state, childProps) {\n return /*#__PURE__*/React.cloneElement(children, _extends({\n style: _extends({\n opacity: 0,\n transform: getScale(0.75),\n visibility: state === 'exited' && !inProp ? 'hidden' : undefined\n }, styles[state], style, children.props.style),\n ref: handleRef\n }, childProps));\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nGrow.muiSupportAuto = true;\nexport default Grow;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { chainPropTypes, elementTypeAcceptingRef, refType, HTMLElementType } from '@material-ui/utils';\nimport debounce from '../utils/debounce';\nimport clsx from 'clsx';\nimport ownerDocument from '../utils/ownerDocument';\nimport ownerWindow from '../utils/ownerWindow';\nimport createChainedFunction from '../utils/createChainedFunction';\nimport deprecatedPropType from '../utils/deprecatedPropType';\nimport withStyles from '../styles/withStyles';\nimport Modal from '../Modal';\nimport Grow from '../Grow';\nimport Paper from '../Paper';\nexport function getOffsetTop(rect, vertical) {\n var offset = 0;\n\n if (typeof vertical === 'number') {\n offset = vertical;\n } else if (vertical === 'center') {\n offset = rect.height / 2;\n } else if (vertical === 'bottom') {\n offset = rect.height;\n }\n\n return offset;\n}\nexport function getOffsetLeft(rect, horizontal) {\n var offset = 0;\n\n if (typeof horizontal === 'number') {\n offset = horizontal;\n } else if (horizontal === 'center') {\n offset = rect.width / 2;\n } else if (horizontal === 'right') {\n offset = rect.width;\n }\n\n return offset;\n}\n\nfunction getTransformOriginValue(transformOrigin) {\n return [transformOrigin.horizontal, transformOrigin.vertical].map(function (n) {\n return typeof n === 'number' ? \"\".concat(n, \"px\") : n;\n }).join(' ');\n} // Sum the scrollTop between two elements.\n\n\nfunction getScrollParent(parent, child) {\n var element = child;\n var scrollTop = 0;\n\n while (element && element !== parent) {\n element = element.parentElement;\n scrollTop += element.scrollTop;\n }\n\n return scrollTop;\n}\n\nfunction getAnchorEl(anchorEl) {\n return typeof anchorEl === 'function' ? anchorEl() : anchorEl;\n}\n\nexport var styles = {\n /* Styles applied to the root element. */\n root: {},\n\n /* Styles applied to the `Paper` component. */\n paper: {\n position: 'absolute',\n overflowY: 'auto',\n overflowX: 'hidden',\n // So we see the popover when it's empty.\n // It's most likely on issue on userland.\n minWidth: 16,\n minHeight: 16,\n maxWidth: 'calc(100% - 32px)',\n maxHeight: 'calc(100% - 32px)',\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0\n }\n};\nvar Popover = /*#__PURE__*/React.forwardRef(function Popover(props, ref) {\n var action = props.action,\n anchorEl = props.anchorEl,\n _props$anchorOrigin = props.anchorOrigin,\n anchorOrigin = _props$anchorOrigin === void 0 ? {\n vertical: 'top',\n horizontal: 'left'\n } : _props$anchorOrigin,\n anchorPosition = props.anchorPosition,\n _props$anchorReferenc = props.anchorReference,\n anchorReference = _props$anchorReferenc === void 0 ? 'anchorEl' : _props$anchorReferenc,\n children = props.children,\n classes = props.classes,\n className = props.className,\n containerProp = props.container,\n _props$elevation = props.elevation,\n elevation = _props$elevation === void 0 ? 8 : _props$elevation,\n getContentAnchorEl = props.getContentAnchorEl,\n _props$marginThreshol = props.marginThreshold,\n marginThreshold = _props$marginThreshol === void 0 ? 16 : _props$marginThreshol,\n onEnter = props.onEnter,\n onEntered = props.onEntered,\n onEntering = props.onEntering,\n onExit = props.onExit,\n onExited = props.onExited,\n onExiting = props.onExiting,\n open = props.open,\n _props$PaperProps = props.PaperProps,\n PaperProps = _props$PaperProps === void 0 ? {} : _props$PaperProps,\n _props$transformOrigi = props.transformOrigin,\n transformOrigin = _props$transformOrigi === void 0 ? {\n vertical: 'top',\n horizontal: 'left'\n } : _props$transformOrigi,\n _props$TransitionComp = props.TransitionComponent,\n TransitionComponent = _props$TransitionComp === void 0 ? Grow : _props$TransitionComp,\n _props$transitionDura = props.transitionDuration,\n transitionDurationProp = _props$transitionDura === void 0 ? 'auto' : _props$transitionDura,\n _props$TransitionProp = props.TransitionProps,\n TransitionProps = _props$TransitionProp === void 0 ? {} : _props$TransitionProp,\n other = _objectWithoutProperties(props, [\"action\", \"anchorEl\", \"anchorOrigin\", \"anchorPosition\", \"anchorReference\", \"children\", \"classes\", \"className\", \"container\", \"elevation\", \"getContentAnchorEl\", \"marginThreshold\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"open\", \"PaperProps\", \"transformOrigin\", \"TransitionComponent\", \"transitionDuration\", \"TransitionProps\"]);\n\n var paperRef = React.useRef(); // Returns the top/left offset of the position\n // to attach to on the anchor element (or body if none is provided)\n\n var getAnchorOffset = React.useCallback(function (contentAnchorOffset) {\n if (anchorReference === 'anchorPosition') {\n if (process.env.NODE_ENV !== 'production') {\n if (!anchorPosition) {\n console.error('Material-UI: You need to provide a `anchorPosition` prop when using ' + ' .');\n }\n }\n\n return anchorPosition;\n }\n\n var resolvedAnchorEl = getAnchorEl(anchorEl); // If an anchor element wasn't provided, just use the parent body element of this Popover\n\n var anchorElement = resolvedAnchorEl && resolvedAnchorEl.nodeType === 1 ? resolvedAnchorEl : ownerDocument(paperRef.current).body;\n var anchorRect = anchorElement.getBoundingClientRect();\n\n if (process.env.NODE_ENV !== 'production') {\n var box = anchorElement.getBoundingClientRect();\n\n if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n console.warn(['Material-UI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n }\n }\n\n var anchorVertical = contentAnchorOffset === 0 ? anchorOrigin.vertical : 'center';\n return {\n top: anchorRect.top + getOffsetTop(anchorRect, anchorVertical),\n left: anchorRect.left + getOffsetLeft(anchorRect, anchorOrigin.horizontal)\n };\n }, [anchorEl, anchorOrigin.horizontal, anchorOrigin.vertical, anchorPosition, anchorReference]); // Returns the vertical offset of inner content to anchor the transform on if provided\n\n var getContentAnchorOffset = React.useCallback(function (element) {\n var contentAnchorOffset = 0;\n\n if (getContentAnchorEl && anchorReference === 'anchorEl') {\n var contentAnchorEl = getContentAnchorEl(element);\n\n if (contentAnchorEl && element.contains(contentAnchorEl)) {\n var scrollTop = getScrollParent(element, contentAnchorEl);\n contentAnchorOffset = contentAnchorEl.offsetTop + contentAnchorEl.clientHeight / 2 - scrollTop || 0;\n } // != the default value\n\n\n if (process.env.NODE_ENV !== 'production') {\n if (anchorOrigin.vertical !== 'top') {\n console.error(['Material-UI: You can not change the default `anchorOrigin.vertical` value ', 'when also providing the `getContentAnchorEl` prop to the popover component.', 'Only use one of the two props.', 'Set `getContentAnchorEl` to `null | undefined`' + ' or leave `anchorOrigin.vertical` unchanged.'].join('\\n'));\n }\n }\n }\n\n return contentAnchorOffset;\n }, [anchorOrigin.vertical, anchorReference, getContentAnchorEl]); // Return the base transform origin using the element\n // and taking the content anchor offset into account if in use\n\n var getTransformOrigin = React.useCallback(function (elemRect) {\n var contentAnchorOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return {\n vertical: getOffsetTop(elemRect, transformOrigin.vertical) + contentAnchorOffset,\n horizontal: getOffsetLeft(elemRect, transformOrigin.horizontal)\n };\n }, [transformOrigin.horizontal, transformOrigin.vertical]);\n var getPositioningStyle = React.useCallback(function (element) {\n // Check if the parent has requested anchoring on an inner content node\n var contentAnchorOffset = getContentAnchorOffset(element);\n var elemRect = {\n width: element.offsetWidth,\n height: element.offsetHeight\n }; // Get the transform origin point on the element itself\n\n var elemTransformOrigin = getTransformOrigin(elemRect, contentAnchorOffset);\n\n if (anchorReference === 'none') {\n return {\n top: null,\n left: null,\n transformOrigin: getTransformOriginValue(elemTransformOrigin)\n };\n } // Get the offset of of the anchoring element\n\n\n var anchorOffset = getAnchorOffset(contentAnchorOffset); // Calculate element positioning\n\n var top = anchorOffset.top - elemTransformOrigin.vertical;\n var left = anchorOffset.left - elemTransformOrigin.horizontal;\n var bottom = top + elemRect.height;\n var right = left + elemRect.width; // Use the parent window of the anchorEl if provided\n\n var containerWindow = ownerWindow(getAnchorEl(anchorEl)); // Window thresholds taking required margin into account\n\n var heightThreshold = containerWindow.innerHeight - marginThreshold;\n var widthThreshold = containerWindow.innerWidth - marginThreshold; // Check if the vertical axis needs shifting\n\n if (top < marginThreshold) {\n var diff = top - marginThreshold;\n top -= diff;\n elemTransformOrigin.vertical += diff;\n } else if (bottom > heightThreshold) {\n var _diff = bottom - heightThreshold;\n\n top -= _diff;\n elemTransformOrigin.vertical += _diff;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (elemRect.height > heightThreshold && elemRect.height && heightThreshold) {\n console.error(['Material-UI: The popover component is too tall.', \"Some part of it can not be seen on the screen (\".concat(elemRect.height - heightThreshold, \"px).\"), 'Please consider adding a `max-height` to improve the user-experience.'].join('\\n'));\n }\n } // Check if the horizontal axis needs shifting\n\n\n if (left < marginThreshold) {\n var _diff2 = left - marginThreshold;\n\n left -= _diff2;\n elemTransformOrigin.horizontal += _diff2;\n } else if (right > widthThreshold) {\n var _diff3 = right - widthThreshold;\n\n left -= _diff3;\n elemTransformOrigin.horizontal += _diff3;\n }\n\n return {\n top: \"\".concat(Math.round(top), \"px\"),\n left: \"\".concat(Math.round(left), \"px\"),\n transformOrigin: getTransformOriginValue(elemTransformOrigin)\n };\n }, [anchorEl, anchorReference, getAnchorOffset, getContentAnchorOffset, getTransformOrigin, marginThreshold]);\n var setPositioningStyles = React.useCallback(function () {\n var element = paperRef.current;\n\n if (!element) {\n return;\n }\n\n var positioning = getPositioningStyle(element);\n\n if (positioning.top !== null) {\n element.style.top = positioning.top;\n }\n\n if (positioning.left !== null) {\n element.style.left = positioning.left;\n }\n\n element.style.transformOrigin = positioning.transformOrigin;\n }, [getPositioningStyle]);\n\n var handleEntering = function handleEntering(element, isAppearing) {\n if (onEntering) {\n onEntering(element, isAppearing);\n }\n\n setPositioningStyles();\n };\n\n var handlePaperRef = React.useCallback(function (instance) {\n // #StrictMode ready\n paperRef.current = ReactDOM.findDOMNode(instance);\n }, []);\n React.useEffect(function () {\n if (open) {\n setPositioningStyles();\n }\n });\n React.useImperativeHandle(action, function () {\n return open ? {\n updatePosition: function updatePosition() {\n setPositioningStyles();\n }\n } : null;\n }, [open, setPositioningStyles]);\n React.useEffect(function () {\n if (!open) {\n return undefined;\n }\n\n var handleResize = debounce(function () {\n setPositioningStyles();\n });\n window.addEventListener('resize', handleResize);\n return function () {\n handleResize.clear();\n window.removeEventListener('resize', handleResize);\n };\n }, [open, setPositioningStyles]);\n var transitionDuration = transitionDurationProp;\n\n if (transitionDurationProp === 'auto' && !TransitionComponent.muiSupportAuto) {\n transitionDuration = undefined;\n } // If the container prop is provided, use that\n // If the anchorEl prop is provided, use its parent body element as the container\n // If neither are provided let the Modal take care of choosing the container\n\n\n var container = containerProp || (anchorEl ? ownerDocument(getAnchorEl(anchorEl)).body : undefined);\n return /*#__PURE__*/React.createElement(Modal, _extends({\n container: container,\n open: open,\n ref: ref,\n BackdropProps: {\n invisible: true\n },\n className: clsx(classes.root, className)\n }, other), /*#__PURE__*/React.createElement(TransitionComponent, _extends({\n appear: true,\n in: open,\n onEnter: onEnter,\n onEntered: onEntered,\n onExit: onExit,\n onExited: onExited,\n onExiting: onExiting,\n timeout: transitionDuration\n }, TransitionProps, {\n onEntering: createChainedFunction(handleEntering, TransitionProps.onEntering)\n }), /*#__PURE__*/React.createElement(Paper, _extends({\n elevation: elevation,\n ref: handlePaperRef\n }, PaperProps, {\n className: clsx(classes.paper, PaperProps.className)\n }), children)));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default withStyles(styles, {\n name: 'MuiPopover'\n})(Popover);","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\n\nvar ListContext = /*#__PURE__*/React.createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n ListContext.displayName = 'ListContext';\n}\n\nexport default ListContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport ListContext from './ListContext';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n listStyle: 'none',\n margin: 0,\n padding: 0,\n position: 'relative'\n },\n\n /* Styles applied to the root element if `disablePadding={false}`. */\n padding: {\n paddingTop: 8,\n paddingBottom: 8\n },\n\n /* Styles applied to the root element if dense. */\n dense: {},\n\n /* Styles applied to the root element if a `subheader` is provided. */\n subheader: {\n paddingTop: 0\n }\n};\nvar List = /*#__PURE__*/React.forwardRef(function List(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'ul' : _props$component,\n _props$dense = props.dense,\n dense = _props$dense === void 0 ? false : _props$dense,\n _props$disablePadding = props.disablePadding,\n disablePadding = _props$disablePadding === void 0 ? false : _props$disablePadding,\n subheader = props.subheader,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"component\", \"dense\", \"disablePadding\", \"subheader\"]);\n\n var context = React.useMemo(function () {\n return {\n dense: dense\n };\n }, [dense]);\n return /*#__PURE__*/React.createElement(ListContext.Provider, {\n value: context\n }, /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, className, dense && classes.dense, !disablePadding && classes.padding, subheader && classes.subheader),\n ref: ref\n }, other), subheader, children));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default withStyles(styles, {\n name: 'MuiList'\n})(List);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport * as ReactDOM from 'react-dom';\nimport ownerDocument from '../utils/ownerDocument';\nimport List from '../List';\nimport getScrollbarSize from '../utils/getScrollbarSize';\nimport useForkRef from '../utils/useForkRef';\n\nfunction nextItem(list, item, disableListWrap) {\n if (list === item) {\n return list.firstChild;\n }\n\n if (item && item.nextElementSibling) {\n return item.nextElementSibling;\n }\n\n return disableListWrap ? null : list.firstChild;\n}\n\nfunction previousItem(list, item, disableListWrap) {\n if (list === item) {\n return disableListWrap ? list.firstChild : list.lastChild;\n }\n\n if (item && item.previousElementSibling) {\n return item.previousElementSibling;\n }\n\n return disableListWrap ? null : list.lastChild;\n}\n\nfunction textCriteriaMatches(nextFocus, textCriteria) {\n if (textCriteria === undefined) {\n return true;\n }\n\n var text = nextFocus.innerText;\n\n if (text === undefined) {\n // jsdom doesn't support innerText\n text = nextFocus.textContent;\n }\n\n text = text.trim().toLowerCase();\n\n if (text.length === 0) {\n return false;\n }\n\n if (textCriteria.repeating) {\n return text[0] === textCriteria.keys[0];\n }\n\n return text.indexOf(textCriteria.keys.join('')) === 0;\n}\n\nfunction moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, traversalFunction, textCriteria) {\n var wrappedOnce = false;\n var nextFocus = traversalFunction(list, currentFocus, currentFocus ? disableListWrap : false);\n\n while (nextFocus) {\n // Prevent infinite loop.\n if (nextFocus === list.firstChild) {\n if (wrappedOnce) {\n return;\n }\n\n wrappedOnce = true;\n } // Same logic as useAutocomplete.js\n\n\n var nextFocusDisabled = disabledItemsFocusable ? false : nextFocus.disabled || nextFocus.getAttribute('aria-disabled') === 'true';\n\n if (!nextFocus.hasAttribute('tabindex') || !textCriteriaMatches(nextFocus, textCriteria) || nextFocusDisabled) {\n // Move to the next element.\n nextFocus = traversalFunction(list, nextFocus, disableListWrap);\n } else {\n nextFocus.focus();\n return;\n }\n }\n}\n\nvar useEnhancedEffect = typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect;\n/**\n * A permanently displayed menu following https://www.w3.org/TR/wai-aria-practices/#menubutton.\n * It's exposed to help customization of the [`Menu`](/api/menu/) component. If you\n * use it separately you need to move focus into the component manually. Once\n * the focus is placed inside the component it is fully keyboard accessible.\n */\n\nvar MenuList = /*#__PURE__*/React.forwardRef(function MenuList(props, ref) {\n var actions = props.actions,\n _props$autoFocus = props.autoFocus,\n autoFocus = _props$autoFocus === void 0 ? false : _props$autoFocus,\n _props$autoFocusItem = props.autoFocusItem,\n autoFocusItem = _props$autoFocusItem === void 0 ? false : _props$autoFocusItem,\n children = props.children,\n className = props.className,\n _props$disabledItemsF = props.disabledItemsFocusable,\n disabledItemsFocusable = _props$disabledItemsF === void 0 ? false : _props$disabledItemsF,\n _props$disableListWra = props.disableListWrap,\n disableListWrap = _props$disableListWra === void 0 ? false : _props$disableListWra,\n onKeyDown = props.onKeyDown,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'selectedMenu' : _props$variant,\n other = _objectWithoutProperties(props, [\"actions\", \"autoFocus\", \"autoFocusItem\", \"children\", \"className\", \"disabledItemsFocusable\", \"disableListWrap\", \"onKeyDown\", \"variant\"]);\n\n var listRef = React.useRef(null);\n var textCriteriaRef = React.useRef({\n keys: [],\n repeating: true,\n previousKeyMatched: true,\n lastTime: null\n });\n useEnhancedEffect(function () {\n if (autoFocus) {\n listRef.current.focus();\n }\n }, [autoFocus]);\n React.useImperativeHandle(actions, function () {\n return {\n adjustStyleForScrollbar: function adjustStyleForScrollbar(containerElement, theme) {\n // Let's ignore that piece of logic if users are already overriding the width\n // of the menu.\n var noExplicitWidth = !listRef.current.style.width;\n\n if (containerElement.clientHeight < listRef.current.clientHeight && noExplicitWidth) {\n var scrollbarSize = \"\".concat(getScrollbarSize(true), \"px\");\n listRef.current.style[theme.direction === 'rtl' ? 'paddingLeft' : 'paddingRight'] = scrollbarSize;\n listRef.current.style.width = \"calc(100% + \".concat(scrollbarSize, \")\");\n }\n\n return listRef.current;\n }\n };\n }, []);\n\n var handleKeyDown = function handleKeyDown(event) {\n var list = listRef.current;\n var key = event.key;\n /**\n * @type {Element} - will always be defined since we are in a keydown handler\n * attached to an element. A keydown event is either dispatched to the activeElement\n * or document.body or document.documentElement. Only the first case will\n * trigger this specific handler.\n */\n\n var currentFocus = ownerDocument(list).activeElement;\n\n if (key === 'ArrowDown') {\n // Prevent scroll of the page\n event.preventDefault();\n moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, nextItem);\n } else if (key === 'ArrowUp') {\n event.preventDefault();\n moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, previousItem);\n } else if (key === 'Home') {\n event.preventDefault();\n moveFocus(list, null, disableListWrap, disabledItemsFocusable, nextItem);\n } else if (key === 'End') {\n event.preventDefault();\n moveFocus(list, null, disableListWrap, disabledItemsFocusable, previousItem);\n } else if (key.length === 1) {\n var criteria = textCriteriaRef.current;\n var lowerKey = key.toLowerCase();\n var currTime = performance.now();\n\n if (criteria.keys.length > 0) {\n // Reset\n if (currTime - criteria.lastTime > 500) {\n criteria.keys = [];\n criteria.repeating = true;\n criteria.previousKeyMatched = true;\n } else if (criteria.repeating && lowerKey !== criteria.keys[0]) {\n criteria.repeating = false;\n }\n }\n\n criteria.lastTime = currTime;\n criteria.keys.push(lowerKey);\n var keepFocusOnCurrent = currentFocus && !criteria.repeating && textCriteriaMatches(currentFocus, criteria);\n\n if (criteria.previousKeyMatched && (keepFocusOnCurrent || moveFocus(list, currentFocus, false, disabledItemsFocusable, nextItem, criteria))) {\n event.preventDefault();\n } else {\n criteria.previousKeyMatched = false;\n }\n }\n\n if (onKeyDown) {\n onKeyDown(event);\n }\n };\n\n var handleOwnRef = React.useCallback(function (instance) {\n // #StrictMode ready\n listRef.current = ReactDOM.findDOMNode(instance);\n }, []);\n var handleRef = useForkRef(handleOwnRef, ref);\n /**\n * the index of the item should receive focus\n * in a `variant=\"selectedMenu\"` it's the first `selected` item\n * otherwise it's the very first item.\n */\n\n var activeItemIndex = -1; // since we inject focus related props into children we have to do a lookahead\n // to check if there is a `selected` item. We're looking for the last `selected`\n // item and use the first valid item as a fallback\n\n React.Children.forEach(children, function (child, index) {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n return;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"Material-UI: The Menu component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n\n if (!child.props.disabled) {\n if (variant === 'selectedMenu' && child.props.selected) {\n activeItemIndex = index;\n } else if (activeItemIndex === -1) {\n activeItemIndex = index;\n }\n }\n });\n var items = React.Children.map(children, function (child, index) {\n if (index === activeItemIndex) {\n var newChildProps = {};\n\n if (autoFocusItem) {\n newChildProps.autoFocus = true;\n }\n\n if (child.props.tabIndex === undefined && variant === 'selectedMenu') {\n newChildProps.tabIndex = 0;\n }\n\n return /*#__PURE__*/React.cloneElement(child, newChildProps);\n }\n\n return child;\n });\n return /*#__PURE__*/React.createElement(List, _extends({\n role: \"menu\",\n ref: handleRef,\n className: className,\n onKeyDown: handleKeyDown,\n tabIndex: autoFocus ? 0 : -1\n }, other), items);\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default MenuList;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport clsx from 'clsx';\nimport { HTMLElementType } from '@material-ui/utils';\nimport withStyles from '../styles/withStyles';\nimport Popover from '../Popover';\nimport MenuList from '../MenuList';\nimport * as ReactDOM from 'react-dom';\nimport setRef from '../utils/setRef';\nimport useTheme from '../styles/useTheme';\nimport deprecatedPropType from '../utils/deprecatedPropType';\nvar RTL_ORIGIN = {\n vertical: 'top',\n horizontal: 'right'\n};\nvar LTR_ORIGIN = {\n vertical: 'top',\n horizontal: 'left'\n};\nexport var styles = {\n /* Styles applied to the `Paper` component. */\n paper: {\n // specZ: The maximum height of a simple menu should be one or more rows less than the view\n // height. This ensures a tapable area outside of the simple menu with which to dismiss\n // the menu.\n maxHeight: 'calc(100% - 96px)',\n // Add iOS momentum scrolling.\n WebkitOverflowScrolling: 'touch'\n },\n\n /* Styles applied to the `List` component via `MenuList`. */\n list: {\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0\n }\n};\nvar Menu = /*#__PURE__*/React.forwardRef(function Menu(props, ref) {\n var _props$autoFocus = props.autoFocus,\n autoFocus = _props$autoFocus === void 0 ? true : _props$autoFocus,\n children = props.children,\n classes = props.classes,\n _props$disableAutoFoc = props.disableAutoFocusItem,\n disableAutoFocusItem = _props$disableAutoFoc === void 0 ? false : _props$disableAutoFoc,\n _props$MenuListProps = props.MenuListProps,\n MenuListProps = _props$MenuListProps === void 0 ? {} : _props$MenuListProps,\n onClose = props.onClose,\n onEnteringProp = props.onEntering,\n open = props.open,\n _props$PaperProps = props.PaperProps,\n PaperProps = _props$PaperProps === void 0 ? {} : _props$PaperProps,\n PopoverClasses = props.PopoverClasses,\n _props$transitionDura = props.transitionDuration,\n transitionDuration = _props$transitionDura === void 0 ? 'auto' : _props$transitionDura,\n _props$TransitionProp = props.TransitionProps;\n _props$TransitionProp = _props$TransitionProp === void 0 ? {} : _props$TransitionProp;\n\n var onEntering = _props$TransitionProp.onEntering,\n TransitionProps = _objectWithoutProperties(_props$TransitionProp, [\"onEntering\"]),\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'selectedMenu' : _props$variant,\n other = _objectWithoutProperties(props, [\"autoFocus\", \"children\", \"classes\", \"disableAutoFocusItem\", \"MenuListProps\", \"onClose\", \"onEntering\", \"open\", \"PaperProps\", \"PopoverClasses\", \"transitionDuration\", \"TransitionProps\", \"variant\"]);\n\n var theme = useTheme();\n var autoFocusItem = autoFocus && !disableAutoFocusItem && open;\n var menuListActionsRef = React.useRef(null);\n var contentAnchorRef = React.useRef(null);\n\n var getContentAnchorEl = function getContentAnchorEl() {\n return contentAnchorRef.current;\n };\n\n var handleEntering = function handleEntering(element, isAppearing) {\n if (menuListActionsRef.current) {\n menuListActionsRef.current.adjustStyleForScrollbar(element, theme);\n }\n\n if (onEnteringProp) {\n onEnteringProp(element, isAppearing);\n }\n\n if (onEntering) {\n onEntering(element, isAppearing);\n }\n };\n\n var handleListKeyDown = function handleListKeyDown(event) {\n if (event.key === 'Tab') {\n event.preventDefault();\n\n if (onClose) {\n onClose(event, 'tabKeyDown');\n }\n }\n };\n /**\n * the index of the item should receive focus\n * in a `variant=\"selectedMenu\"` it's the first `selected` item\n * otherwise it's the very first item.\n */\n\n\n var activeItemIndex = -1; // since we inject focus related props into children we have to do a lookahead\n // to check if there is a `selected` item. We're looking for the last `selected`\n // item and use the first valid item as a fallback\n\n React.Children.map(children, function (child, index) {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n return;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"Material-UI: The Menu component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n\n if (!child.props.disabled) {\n if (variant !== \"menu\" && child.props.selected) {\n activeItemIndex = index;\n } else if (activeItemIndex === -1) {\n activeItemIndex = index;\n }\n }\n });\n var items = React.Children.map(children, function (child, index) {\n if (index === activeItemIndex) {\n return /*#__PURE__*/React.cloneElement(child, {\n ref: function ref(instance) {\n // #StrictMode ready\n contentAnchorRef.current = ReactDOM.findDOMNode(instance);\n setRef(child.ref, instance);\n }\n });\n }\n\n return child;\n });\n return /*#__PURE__*/React.createElement(Popover, _extends({\n getContentAnchorEl: getContentAnchorEl,\n classes: PopoverClasses,\n onClose: onClose,\n TransitionProps: _extends({\n onEntering: handleEntering\n }, TransitionProps),\n anchorOrigin: theme.direction === 'rtl' ? RTL_ORIGIN : LTR_ORIGIN,\n transformOrigin: theme.direction === 'rtl' ? RTL_ORIGIN : LTR_ORIGIN,\n PaperProps: _extends({}, PaperProps, {\n classes: _extends({}, PaperProps.classes, {\n root: classes.paper\n })\n }),\n open: open,\n ref: ref,\n transitionDuration: transitionDuration\n }, other), /*#__PURE__*/React.createElement(MenuList, _extends({\n onKeyDown: handleListKeyDown,\n actions: menuListActionsRef,\n autoFocus: autoFocus && (activeItemIndex === -1 || disableAutoFocusItem),\n autoFocusItem: autoFocusItem,\n variant: variant\n }, MenuListProps, {\n className: clsx(classes.list, MenuListProps.className)\n }), items));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default withStyles(styles, {\n name: 'MuiMenu'\n})(Menu);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@material-ui/utils\";\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport clsx from 'clsx';\nimport ownerDocument from '../utils/ownerDocument';\nimport capitalize from '../utils/capitalize';\nimport { refType } from '@material-ui/utils';\nimport Menu from '../Menu/Menu';\nimport { isFilled } from '../InputBase/utils';\nimport useForkRef from '../utils/useForkRef';\nimport useControlled from '../utils/useControlled';\n\nfunction areEqualValues(a, b) {\n if (_typeof(b) === 'object' && b !== null) {\n return a === b;\n }\n\n return String(a) === String(b);\n}\n\nfunction isEmpty(display) {\n return display == null || typeof display === 'string' && !display.trim();\n}\n/**\n * @ignore - internal component.\n */\n\n\nvar SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, ref) {\n var ariaLabel = props['aria-label'],\n autoFocus = props.autoFocus,\n autoWidth = props.autoWidth,\n children = props.children,\n classes = props.classes,\n className = props.className,\n defaultValue = props.defaultValue,\n disabled = props.disabled,\n displayEmpty = props.displayEmpty,\n IconComponent = props.IconComponent,\n inputRefProp = props.inputRef,\n labelId = props.labelId,\n _props$MenuProps = props.MenuProps,\n MenuProps = _props$MenuProps === void 0 ? {} : _props$MenuProps,\n multiple = props.multiple,\n name = props.name,\n onBlur = props.onBlur,\n onChange = props.onChange,\n onClose = props.onClose,\n onFocus = props.onFocus,\n onOpen = props.onOpen,\n openProp = props.open,\n readOnly = props.readOnly,\n renderValue = props.renderValue,\n _props$SelectDisplayP = props.SelectDisplayProps,\n SelectDisplayProps = _props$SelectDisplayP === void 0 ? {} : _props$SelectDisplayP,\n tabIndexProp = props.tabIndex,\n type = props.type,\n valueProp = props.value,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'standard' : _props$variant,\n other = _objectWithoutProperties(props, [\"aria-label\", \"autoFocus\", \"autoWidth\", \"children\", \"classes\", \"className\", \"defaultValue\", \"disabled\", \"displayEmpty\", \"IconComponent\", \"inputRef\", \"labelId\", \"MenuProps\", \"multiple\", \"name\", \"onBlur\", \"onChange\", \"onClose\", \"onFocus\", \"onOpen\", \"open\", \"readOnly\", \"renderValue\", \"SelectDisplayProps\", \"tabIndex\", \"type\", \"value\", \"variant\"]);\n\n var _useControlled = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: 'Select'\n }),\n _useControlled2 = _slicedToArray(_useControlled, 2),\n value = _useControlled2[0],\n setValue = _useControlled2[1];\n\n var inputRef = React.useRef(null);\n\n var _React$useState = React.useState(null),\n displayNode = _React$useState[0],\n setDisplayNode = _React$useState[1];\n\n var _React$useRef = React.useRef(openProp != null),\n isOpenControlled = _React$useRef.current;\n\n var _React$useState2 = React.useState(),\n menuMinWidthState = _React$useState2[0],\n setMenuMinWidthState = _React$useState2[1];\n\n var _React$useState3 = React.useState(false),\n openState = _React$useState3[0],\n setOpenState = _React$useState3[1];\n\n var handleRef = useForkRef(ref, inputRefProp);\n React.useImperativeHandle(handleRef, function () {\n return {\n focus: function focus() {\n displayNode.focus();\n },\n node: inputRef.current,\n value: value\n };\n }, [displayNode, value]);\n React.useEffect(function () {\n if (autoFocus && displayNode) {\n displayNode.focus();\n }\n }, [autoFocus, displayNode]);\n React.useEffect(function () {\n if (displayNode) {\n var label = ownerDocument(displayNode).getElementById(labelId);\n\n if (label) {\n var handler = function handler() {\n if (getSelection().isCollapsed) {\n displayNode.focus();\n }\n };\n\n label.addEventListener('click', handler);\n return function () {\n label.removeEventListener('click', handler);\n };\n }\n }\n\n return undefined;\n }, [labelId, displayNode]);\n\n var update = function update(open, event) {\n if (open) {\n if (onOpen) {\n onOpen(event);\n }\n } else if (onClose) {\n onClose(event);\n }\n\n if (!isOpenControlled) {\n setMenuMinWidthState(autoWidth ? null : displayNode.clientWidth);\n setOpenState(open);\n }\n };\n\n var handleMouseDown = function handleMouseDown(event) {\n // Ignore everything but left-click\n if (event.button !== 0) {\n return;\n } // Hijack the default focus behavior.\n\n\n event.preventDefault();\n displayNode.focus();\n update(true, event);\n };\n\n var handleClose = function handleClose(event) {\n update(false, event);\n };\n\n var childrenArray = React.Children.toArray(children); // Support autofill.\n\n var handleChange = function handleChange(event) {\n var index = childrenArray.map(function (child) {\n return child.props.value;\n }).indexOf(event.target.value);\n\n if (index === -1) {\n return;\n }\n\n var child = childrenArray[index];\n setValue(child.props.value);\n\n if (onChange) {\n onChange(event, child);\n }\n };\n\n var handleItemClick = function handleItemClick(child) {\n return function (event) {\n if (!multiple) {\n update(false, event);\n }\n\n var newValue;\n\n if (multiple) {\n newValue = Array.isArray(value) ? value.slice() : [];\n var itemIndex = value.indexOf(child.props.value);\n\n if (itemIndex === -1) {\n newValue.push(child.props.value);\n } else {\n newValue.splice(itemIndex, 1);\n }\n } else {\n newValue = child.props.value;\n }\n\n if (child.props.onClick) {\n child.props.onClick(event);\n }\n\n if (value === newValue) {\n return;\n }\n\n setValue(newValue);\n\n if (onChange) {\n event.persist(); // Preact support, target is read only property on a native event.\n\n Object.defineProperty(event, 'target', {\n writable: true,\n value: {\n value: newValue,\n name: name\n }\n });\n onChange(event, child);\n }\n };\n };\n\n var handleKeyDown = function handleKeyDown(event) {\n if (!readOnly) {\n var validKeys = [' ', 'ArrowUp', 'ArrowDown', // The native select doesn't respond to enter on MacOS, but it's recommended by\n // https://www.w3.org/TR/wai-aria-practices/examples/listbox/listbox-collapsible.html\n 'Enter'];\n\n if (validKeys.indexOf(event.key) !== -1) {\n event.preventDefault();\n update(true, event);\n }\n }\n };\n\n var open = displayNode !== null && (isOpenControlled ? openProp : openState);\n\n var handleBlur = function handleBlur(event) {\n // if open event.stopImmediatePropagation\n if (!open && onBlur) {\n event.persist(); // Preact support, target is read only property on a native event.\n\n Object.defineProperty(event, 'target', {\n writable: true,\n value: {\n value: value,\n name: name\n }\n });\n onBlur(event);\n }\n };\n\n delete other['aria-invalid'];\n var display;\n var displaySingle;\n var displayMultiple = [];\n var computeDisplay = false;\n var foundMatch = false; // No need to display any value if the field is empty.\n\n if (isFilled({\n value: value\n }) || displayEmpty) {\n if (renderValue) {\n display = renderValue(value);\n } else {\n computeDisplay = true;\n }\n }\n\n var items = childrenArray.map(function (child) {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n return null;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"Material-UI: The Select component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n\n var selected;\n\n if (multiple) {\n if (!Array.isArray(value)) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: The `value` prop must be an array when using the `Select` component with `multiple`.\" : _formatMuiErrorMessage(2));\n }\n\n selected = value.some(function (v) {\n return areEqualValues(v, child.props.value);\n });\n\n if (selected && computeDisplay) {\n displayMultiple.push(child.props.children);\n }\n } else {\n selected = areEqualValues(value, child.props.value);\n\n if (selected && computeDisplay) {\n displaySingle = child.props.children;\n }\n }\n\n if (selected) {\n foundMatch = true;\n }\n\n return /*#__PURE__*/React.cloneElement(child, {\n 'aria-selected': selected ? 'true' : undefined,\n onClick: handleItemClick(child),\n onKeyUp: function onKeyUp(event) {\n if (event.key === ' ') {\n // otherwise our MenuItems dispatches a click event\n // it's not behavior of the native and causes\n // the select to close immediately since we open on space keydown\n event.preventDefault();\n }\n\n if (child.props.onKeyUp) {\n child.props.onKeyUp(event);\n }\n },\n role: 'option',\n selected: selected,\n value: undefined,\n // The value is most likely not a valid HTML attribute.\n 'data-value': child.props.value // Instead, we provide it as a data attribute.\n\n });\n });\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(function () {\n if (!foundMatch && !multiple && value !== '') {\n var values = childrenArray.map(function (child) {\n return child.props.value;\n });\n console.warn([\"Material-UI: You have provided an out-of-range value `\".concat(value, \"` for the select \").concat(name ? \"(name=\\\"\".concat(name, \"\\\") \") : '', \"component.\"), \"Consider providing a value that matches one of the available options or ''.\", \"The available values are \".concat(values.filter(function (x) {\n return x != null;\n }).map(function (x) {\n return \"`\".concat(x, \"`\");\n }).join(', ') || '\"\"', \".\")].join('\\n'));\n }\n }, [foundMatch, childrenArray, multiple, name, value]);\n }\n\n if (computeDisplay) {\n display = multiple ? displayMultiple.join(', ') : displaySingle;\n } // Avoid performing a layout computation in the render method.\n\n\n var menuMinWidth = menuMinWidthState;\n\n if (!autoWidth && isOpenControlled && displayNode) {\n menuMinWidth = displayNode.clientWidth;\n }\n\n var tabIndex;\n\n if (typeof tabIndexProp !== 'undefined') {\n tabIndex = tabIndexProp;\n } else {\n tabIndex = disabled ? null : 0;\n }\n\n var buttonId = SelectDisplayProps.id || (name ? \"mui-component-select-\".concat(name) : undefined);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx(classes.root, // TODO v5: merge root and select\n classes.select, classes.selectMenu, classes[variant], className, disabled && classes.disabled),\n ref: setDisplayNode,\n tabIndex: tabIndex,\n role: \"button\",\n \"aria-disabled\": disabled ? 'true' : undefined,\n \"aria-expanded\": open ? 'true' : undefined,\n \"aria-haspopup\": \"listbox\",\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": [labelId, buttonId].filter(Boolean).join(' ') || undefined,\n onKeyDown: handleKeyDown,\n onMouseDown: disabled || readOnly ? null : handleMouseDown,\n onBlur: handleBlur,\n onFocus: onFocus\n }, SelectDisplayProps, {\n // The id is required for proper a11y\n id: buttonId\n }), isEmpty(display) ?\n /*#__PURE__*/\n // eslint-disable-next-line react/no-danger\n React.createElement(\"span\", {\n dangerouslySetInnerHTML: {\n __html: ''\n }\n }) : display), /*#__PURE__*/React.createElement(\"input\", _extends({\n value: Array.isArray(value) ? value.join(',') : value,\n name: name,\n ref: inputRef,\n \"aria-hidden\": true,\n onChange: handleChange,\n tabIndex: -1,\n className: classes.nativeInput,\n autoFocus: autoFocus\n }, other)), /*#__PURE__*/React.createElement(IconComponent, {\n className: clsx(classes.icon, classes[\"icon\".concat(capitalize(variant))], open && classes.iconOpen, disabled && classes.disabled)\n }), /*#__PURE__*/React.createElement(Menu, _extends({\n id: \"menu-\".concat(name || ''),\n anchorEl: displayNode,\n open: open,\n onClose: handleClose\n }, MenuProps, {\n MenuListProps: _extends({\n 'aria-labelledby': labelId,\n role: 'listbox',\n disableListWrap: true\n }, MenuProps.MenuListProps),\n PaperProps: _extends({}, MenuProps.PaperProps, {\n style: _extends({\n minWidth: menuMinWidth\n }, MenuProps.PaperProps != null ? MenuProps.PaperProps.style : null)\n })\n }), items));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default SelectInput;","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n/**\n * @ignore - internal component.\n */\n\nexport default createSvgIcon( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7 10l5 5 5-5z\"\n}), 'ArrowDropDown');","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { refType } from '@material-ui/utils';\nimport capitalize from '../utils/capitalize';\n/**\n * @ignore - internal component.\n */\n\nvar NativeSelectInput = /*#__PURE__*/React.forwardRef(function NativeSelectInput(props, ref) {\n var classes = props.classes,\n className = props.className,\n disabled = props.disabled,\n IconComponent = props.IconComponent,\n inputRef = props.inputRef,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'standard' : _props$variant,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"disabled\", \"IconComponent\", \"inputRef\", \"variant\"]);\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"select\", _extends({\n className: clsx(classes.root, // TODO v5: merge root and select\n classes.select, classes[variant], className, disabled && classes.disabled),\n disabled: disabled,\n ref: inputRef || ref\n }, other)), props.multiple ? null : /*#__PURE__*/React.createElement(IconComponent, {\n className: clsx(classes.icon, classes[\"icon\".concat(capitalize(variant))], disabled && classes.disabled)\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default NativeSelectInput;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport NativeSelectInput from './NativeSelectInput';\nimport withStyles from '../styles/withStyles';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport ArrowDropDownIcon from '../internal/svg-icons/ArrowDropDown';\nimport Input from '../Input';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the select component `root` class. */\n root: {},\n\n /* Styles applied to the select component `select` class. */\n select: {\n '-moz-appearance': 'none',\n // Reset\n '-webkit-appearance': 'none',\n // Reset\n // When interacting quickly, the text can end up selected.\n // Native select can't be selected either.\n userSelect: 'none',\n borderRadius: 0,\n // Reset\n minWidth: 16,\n // So it doesn't collapse.\n cursor: 'pointer',\n '&:focus': {\n // Show that it's not an text input\n backgroundColor: theme.palette.type === 'light' ? 'rgba(0, 0, 0, 0.05)' : 'rgba(255, 255, 255, 0.05)',\n borderRadius: 0 // Reset Chrome style\n\n },\n // Remove IE 11 arrow\n '&::-ms-expand': {\n display: 'none'\n },\n '&$disabled': {\n cursor: 'default'\n },\n '&[multiple]': {\n height: 'auto'\n },\n '&:not([multiple]) option, &:not([multiple]) optgroup': {\n backgroundColor: theme.palette.background.paper\n },\n '&&': {\n paddingRight: 24\n }\n },\n\n /* Styles applied to the select component if `variant=\"filled\"`. */\n filled: {\n '&&': {\n paddingRight: 32\n }\n },\n\n /* Styles applied to the select component if `variant=\"outlined\"`. */\n outlined: {\n borderRadius: theme.shape.borderRadius,\n '&&': {\n paddingRight: 32\n }\n },\n\n /* Styles applied to the select component `selectMenu` class. */\n selectMenu: {\n height: 'auto',\n // Resets for multpile select with chips\n minHeight: '1.1876em',\n // Required for select\\text-field height consistency\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n overflow: 'hidden'\n },\n\n /* Pseudo-class applied to the select component `disabled` class. */\n disabled: {},\n\n /* Styles applied to the icon component. */\n icon: {\n // We use a position absolute over a flexbox in order to forward the pointer events\n // to the input and to support wrapping tags..\n position: 'absolute',\n right: 0,\n top: 'calc(50% - 12px)',\n // Center vertically\n pointerEvents: 'none',\n // Don't block pointer events on the select under the icon.\n color: theme.palette.action.active,\n '&$disabled': {\n color: theme.palette.action.disabled\n }\n },\n\n /* Styles applied to the icon component if the popup is open. */\n iconOpen: {\n transform: 'rotate(180deg)'\n },\n\n /* Styles applied to the icon component if `variant=\"filled\"`. */\n iconFilled: {\n right: 7\n },\n\n /* Styles applied to the icon component if `variant=\"outlined\"`. */\n iconOutlined: {\n right: 7\n },\n\n /* Styles applied to the underlying native input component. */\n nativeInput: {\n bottom: 0,\n left: 0,\n position: 'absolute',\n opacity: 0,\n pointerEvents: 'none',\n width: '100%'\n }\n };\n};\nvar defaultInput = /*#__PURE__*/React.createElement(Input, null);\n/**\n * An alternative to ` ` with a much smaller bundle size footprint.\n */\n\nvar NativeSelect = /*#__PURE__*/React.forwardRef(function NativeSelect(props, ref) {\n var children = props.children,\n classes = props.classes,\n _props$IconComponent = props.IconComponent,\n IconComponent = _props$IconComponent === void 0 ? ArrowDropDownIcon : _props$IconComponent,\n _props$input = props.input,\n input = _props$input === void 0 ? defaultInput : _props$input,\n inputProps = props.inputProps,\n variant = props.variant,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"IconComponent\", \"input\", \"inputProps\", \"variant\"]);\n\n var muiFormControl = useFormControl();\n var fcs = formControlState({\n props: props,\n muiFormControl: muiFormControl,\n states: ['variant']\n });\n return /*#__PURE__*/React.cloneElement(input, _extends({\n // Most of the logic is implemented in `NativeSelectInput`.\n // The `Select` component is a simple API wrapper to expose something better to play with.\n inputComponent: NativeSelectInput,\n inputProps: _extends({\n children: children,\n classes: classes,\n IconComponent: IconComponent,\n variant: fcs.variant,\n type: undefined\n }, inputProps, input ? input.props.inputProps : {}),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nNativeSelect.muiName = 'Select';\nexport default withStyles(styles, {\n name: 'MuiNativeSelect'\n})(NativeSelect);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport { mergeClasses } from '@material-ui/styles';\nimport SelectInput from './SelectInput';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport withStyles from '../styles/withStyles';\nimport ArrowDropDownIcon from '../internal/svg-icons/ArrowDropDown';\nimport Input from '../Input';\nimport { styles as nativeSelectStyles } from '../NativeSelect/NativeSelect';\nimport NativeSelectInput from '../NativeSelect/NativeSelectInput';\nimport FilledInput from '../FilledInput';\nimport OutlinedInput from '../OutlinedInput';\nexport var styles = nativeSelectStyles;\n\nvar _ref = /*#__PURE__*/React.createElement(Input, null);\n\nvar _ref2 = /*#__PURE__*/React.createElement(FilledInput, null);\n\nvar Select = /*#__PURE__*/React.forwardRef(function Select(props, ref) {\n var _props$autoWidth = props.autoWidth,\n autoWidth = _props$autoWidth === void 0 ? false : _props$autoWidth,\n children = props.children,\n classes = props.classes,\n _props$displayEmpty = props.displayEmpty,\n displayEmpty = _props$displayEmpty === void 0 ? false : _props$displayEmpty,\n _props$IconComponent = props.IconComponent,\n IconComponent = _props$IconComponent === void 0 ? ArrowDropDownIcon : _props$IconComponent,\n id = props.id,\n input = props.input,\n inputProps = props.inputProps,\n label = props.label,\n labelId = props.labelId,\n _props$labelWidth = props.labelWidth,\n labelWidth = _props$labelWidth === void 0 ? 0 : _props$labelWidth,\n MenuProps = props.MenuProps,\n _props$multiple = props.multiple,\n multiple = _props$multiple === void 0 ? false : _props$multiple,\n _props$native = props.native,\n native = _props$native === void 0 ? false : _props$native,\n onClose = props.onClose,\n onOpen = props.onOpen,\n open = props.open,\n renderValue = props.renderValue,\n SelectDisplayProps = props.SelectDisplayProps,\n _props$variant = props.variant,\n variantProps = _props$variant === void 0 ? 'standard' : _props$variant,\n other = _objectWithoutProperties(props, [\"autoWidth\", \"children\", \"classes\", \"displayEmpty\", \"IconComponent\", \"id\", \"input\", \"inputProps\", \"label\", \"labelId\", \"labelWidth\", \"MenuProps\", \"multiple\", \"native\", \"onClose\", \"onOpen\", \"open\", \"renderValue\", \"SelectDisplayProps\", \"variant\"]);\n\n var inputComponent = native ? NativeSelectInput : SelectInput;\n var muiFormControl = useFormControl();\n var fcs = formControlState({\n props: props,\n muiFormControl: muiFormControl,\n states: ['variant']\n });\n var variant = fcs.variant || variantProps;\n var InputComponent = input || {\n standard: _ref,\n outlined: /*#__PURE__*/React.createElement(OutlinedInput, {\n label: label,\n labelWidth: labelWidth\n }),\n filled: _ref2\n }[variant];\n return /*#__PURE__*/React.cloneElement(InputComponent, _extends({\n // Most of the logic is implemented in `SelectInput`.\n // The `Select` component is a simple API wrapper to expose something better to play with.\n inputComponent: inputComponent,\n inputProps: _extends({\n children: children,\n IconComponent: IconComponent,\n variant: variant,\n type: undefined,\n // We render a select. We can ignore the type provided by the `Input`.\n multiple: multiple\n }, native ? {\n id: id\n } : {\n autoWidth: autoWidth,\n displayEmpty: displayEmpty,\n labelId: labelId,\n MenuProps: MenuProps,\n onClose: onClose,\n onOpen: onOpen,\n open: open,\n renderValue: renderValue,\n SelectDisplayProps: _extends({\n id: id\n }, SelectDisplayProps)\n }, inputProps, {\n classes: inputProps ? mergeClasses({\n baseClasses: classes,\n newClasses: inputProps.classes,\n Component: Select\n }) : classes\n }, input ? input.props.inputProps : {}),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nSelect.muiName = 'Select';\nexport default withStyles(styles, {\n name: 'MuiSelect'\n})(Select);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { refType } from '@material-ui/utils';\nimport Input from '../Input';\nimport FilledInput from '../FilledInput';\nimport OutlinedInput from '../OutlinedInput';\nimport InputLabel from '../InputLabel';\nimport FormControl from '../FormControl';\nimport FormHelperText from '../FormHelperText';\nimport Select from '../Select';\nimport withStyles from '../styles/withStyles';\nvar variantComponent = {\n standard: Input,\n filled: FilledInput,\n outlined: OutlinedInput\n};\nexport var styles = {\n /* Styles applied to the root element. */\n root: {}\n};\n/**\n * The `TextField` is a convenience wrapper for the most common cases (80%).\n * It cannot be all things to all people, otherwise the API would grow out of control.\n *\n * ## Advanced Configuration\n *\n * It's important to understand that the text field is a simple abstraction\n * on top of the following components:\n *\n * - [FormControl](/api/form-control/)\n * - [InputLabel](/api/input-label/)\n * - [FilledInput](/api/filled-input/)\n * - [OutlinedInput](/api/outlined-input/)\n * - [Input](/api/input/)\n * - [FormHelperText](/api/form-helper-text/)\n *\n * If you wish to alter the props applied to the `input` element, you can do so as follows:\n *\n * ```jsx\n * const inputProps = {\n * step: 300,\n * };\n *\n * return ;\n * ```\n *\n * For advanced cases, please look at the source of TextField by clicking on the\n * \"Edit this page\" button above. Consider either:\n *\n * - using the upper case props for passing values directly to the components\n * - using the underlying components directly as shown in the demos\n */\n\nvar TextField = /*#__PURE__*/React.forwardRef(function TextField(props, ref) {\n var autoComplete = props.autoComplete,\n _props$autoFocus = props.autoFocus,\n autoFocus = _props$autoFocus === void 0 ? false : _props$autoFocus,\n children = props.children,\n classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'primary' : _props$color,\n defaultValue = props.defaultValue,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n _props$error = props.error,\n error = _props$error === void 0 ? false : _props$error,\n FormHelperTextProps = props.FormHelperTextProps,\n _props$fullWidth = props.fullWidth,\n fullWidth = _props$fullWidth === void 0 ? false : _props$fullWidth,\n helperText = props.helperText,\n hiddenLabel = props.hiddenLabel,\n id = props.id,\n InputLabelProps = props.InputLabelProps,\n inputProps = props.inputProps,\n InputProps = props.InputProps,\n inputRef = props.inputRef,\n label = props.label,\n _props$multiline = props.multiline,\n multiline = _props$multiline === void 0 ? false : _props$multiline,\n name = props.name,\n onBlur = props.onBlur,\n onChange = props.onChange,\n onFocus = props.onFocus,\n placeholder = props.placeholder,\n _props$required = props.required,\n required = _props$required === void 0 ? false : _props$required,\n rows = props.rows,\n rowsMax = props.rowsMax,\n maxRows = props.maxRows,\n minRows = props.minRows,\n _props$select = props.select,\n select = _props$select === void 0 ? false : _props$select,\n SelectProps = props.SelectProps,\n type = props.type,\n value = props.value,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'standard' : _props$variant,\n other = _objectWithoutProperties(props, [\"autoComplete\", \"autoFocus\", \"children\", \"classes\", \"className\", \"color\", \"defaultValue\", \"disabled\", \"error\", \"FormHelperTextProps\", \"fullWidth\", \"helperText\", \"hiddenLabel\", \"id\", \"InputLabelProps\", \"inputProps\", \"InputProps\", \"inputRef\", \"label\", \"multiline\", \"name\", \"onBlur\", \"onChange\", \"onFocus\", \"placeholder\", \"required\", \"rows\", \"rowsMax\", \"maxRows\", \"minRows\", \"select\", \"SelectProps\", \"type\", \"value\", \"variant\"]);\n\n if (process.env.NODE_ENV !== 'production') {\n if (select && !children) {\n console.error('Material-UI: `children` must be passed when using the `TextField` component with `select`.');\n }\n }\n\n var InputMore = {};\n\n if (variant === 'outlined') {\n if (InputLabelProps && typeof InputLabelProps.shrink !== 'undefined') {\n InputMore.notched = InputLabelProps.shrink;\n }\n\n if (label) {\n var _InputLabelProps$requ;\n\n var displayRequired = (_InputLabelProps$requ = InputLabelProps === null || InputLabelProps === void 0 ? void 0 : InputLabelProps.required) !== null && _InputLabelProps$requ !== void 0 ? _InputLabelProps$requ : required;\n InputMore.label = /*#__PURE__*/React.createElement(React.Fragment, null, label, displayRequired && \"\\xA0*\");\n }\n }\n\n if (select) {\n // unset defaults from textbox inputs\n if (!SelectProps || !SelectProps.native) {\n InputMore.id = undefined;\n }\n\n InputMore['aria-describedby'] = undefined;\n }\n\n var helperTextId = helperText && id ? \"\".concat(id, \"-helper-text\") : undefined;\n var inputLabelId = label && id ? \"\".concat(id, \"-label\") : undefined;\n var InputComponent = variantComponent[variant];\n var InputElement = /*#__PURE__*/React.createElement(InputComponent, _extends({\n \"aria-describedby\": helperTextId,\n autoComplete: autoComplete,\n autoFocus: autoFocus,\n defaultValue: defaultValue,\n fullWidth: fullWidth,\n multiline: multiline,\n name: name,\n rows: rows,\n rowsMax: rowsMax,\n maxRows: maxRows,\n minRows: minRows,\n type: type,\n value: value,\n id: id,\n inputRef: inputRef,\n onBlur: onBlur,\n onChange: onChange,\n onFocus: onFocus,\n placeholder: placeholder,\n inputProps: inputProps\n }, InputMore, InputProps));\n return /*#__PURE__*/React.createElement(FormControl, _extends({\n className: clsx(classes.root, className),\n disabled: disabled,\n error: error,\n fullWidth: fullWidth,\n hiddenLabel: hiddenLabel,\n ref: ref,\n required: required,\n color: color,\n variant: variant\n }, other), label && /*#__PURE__*/React.createElement(InputLabel, _extends({\n htmlFor: id,\n id: inputLabelId\n }, InputLabelProps), label), select ? /*#__PURE__*/React.createElement(Select, _extends({\n \"aria-describedby\": helperTextId,\n id: id,\n labelId: inputLabelId,\n value: value,\n input: InputElement\n }, SelectProps), children) : InputElement, helperText && /*#__PURE__*/React.createElement(FormHelperText, _extends({\n id: helperTextId\n }, FormHelperTextProps), helperText));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default withStyles(styles, {\n name: 'MuiTextField'\n})(TextField);","import React from \"react\";\nimport Button from \"@material-ui/core/Button\";\nimport { useForm } from \"react-hook-form\";\nimport axios from \"axios\";\nimport { csrfToken } from \"@rails/ujs\";\nimport Container from \"@material-ui/core/Container\";\nimport TextField from \"@material-ui/core/TextField\";\nimport Grid from \"@material-ui/core/Grid\";\n\nexport const ContactConfirm = ({ formData, navigation }) => {\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm();\n axios.defaults.headers.common[\"X-CSRF-Token\"] = csrfToken();\n\n const onSubmit = (data) => {\n const contact_params = {\n name: data.name,\n name_kana: data.name_kana,\n email: data.email,\n message: data.message,\n };\n\n axios\n .post(\n \"/api/portal/contact\",\n contact_params\n )\n .catch((e) => {\n document.body.innerHTML = e.response.data;\n });\n\n navigation.next();\n };\n\n const { name, name_kana, email, message } = formData;\n\n return (\n \n
\n お問い合わせ内容をご確認ください。\n
\n
\n \n \n
\n お名前 \n \n
\n\n
\n お名前(ふりがな) \n \n
\n\n
\n メールアドレス \n \n
\n\n
\n お問い合わせ内容 \n \n
\n
\n\n \n
\n \n 送信する\n \n
\n\n
\n navigation.previous()}\n className=\"btnStyle-white\"\n >\n 修正する\n \n
\n
\n \n \n
\n );\n};\n","module.exports = __webpack_public_path__ + \"media/icon/icon_map_pin-4d6a9f7f.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon_train-6661fdd3.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon_condition-f2918a52.svg\";","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}","import React from 'react';\nvar ThemeContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'ThemeContext';\n}\n\nexport default ThemeContext;","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","var hasSymbol = typeof Symbol === 'function' && Symbol.for;\nexport default hasSymbol ? Symbol.for('mui.nested') : '__THEME_NESTED__';","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\"; // Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\n\nexport var easing = {\n // This is the most common easing curve.\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n // Objects enter the screen at full velocity from off-screen and\n // slowly decelerate to a resting point.\n easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n // The sharp curve is used by objects that may return to the screen at any time.\n sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n}; // Follow https://material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\n\nexport var duration = {\n shortest: 150,\n shorter: 200,\n short: 250,\n // most basic recommended timing\n standard: 300,\n // this is to be used in complex animations\n complex: 375,\n // recommended when something is entering screen\n enteringScreen: 225,\n // recommended when something is leaving screen\n leavingScreen: 195\n};\n\nfunction formatMs(milliseconds) {\n return \"\".concat(Math.round(milliseconds), \"ms\");\n}\n/**\n * @param {string|Array} props\n * @param {object} param\n * @param {string} param.prop\n * @param {number} param.duration\n * @param {string} param.easing\n * @param {number} param.delay\n */\n\n\nexport default {\n easing: easing,\n duration: duration,\n create: function create() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['all'];\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var _options$duration = options.duration,\n durationOption = _options$duration === void 0 ? duration.standard : _options$duration,\n _options$easing = options.easing,\n easingOption = _options$easing === void 0 ? easing.easeInOut : _options$easing,\n _options$delay = options.delay,\n delay = _options$delay === void 0 ? 0 : _options$delay,\n other = _objectWithoutProperties(options, [\"duration\", \"easing\", \"delay\"]);\n\n if (process.env.NODE_ENV !== 'production') {\n var isString = function isString(value) {\n return typeof value === 'string';\n };\n\n var isNumber = function isNumber(value) {\n return !isNaN(parseFloat(value));\n };\n\n if (!isString(props) && !Array.isArray(props)) {\n console.error('Material-UI: Argument \"props\" must be a string or Array.');\n }\n\n if (!isNumber(durationOption) && !isString(durationOption)) {\n console.error(\"Material-UI: Argument \\\"duration\\\" must be a number or a string but found \".concat(durationOption, \".\"));\n }\n\n if (!isString(easingOption)) {\n console.error('Material-UI: Argument \"easing\" must be a string.');\n }\n\n if (!isNumber(delay) && !isString(delay)) {\n console.error('Material-UI: Argument \"delay\" must be a number or a string.');\n }\n\n if (Object.keys(other).length !== 0) {\n console.error(\"Material-UI: Unrecognized argument(s) [\".concat(Object.keys(other).join(','), \"].\"));\n }\n }\n\n return (Array.isArray(props) ? props : [props]).map(function (animatedProp) {\n return \"\".concat(animatedProp, \" \").concat(typeof durationOption === 'string' ? durationOption : formatMs(durationOption), \" \").concat(easingOption, \" \").concat(typeof delay === 'string' ? delay : formatMs(delay));\n }).join(',');\n },\n getAutoHeightDuration: function getAutoHeightDuration(height) {\n if (!height) {\n return 0;\n }\n\n var constant = height / 36; // https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n\n return Math.round((4 + 15 * Math.pow(constant, 0.25) + constant / 5) * 10);\n }\n};","// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nvar zIndex = {\n mobileStepper: 1000,\n speedDial: 1050,\n appBar: 1100,\n drawer: 1200,\n modal: 1300,\n snackbar: 1400,\n tooltip: 1500\n};\nexport default zIndex;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { refType } from '@material-ui/utils';\nimport useControlled from '../utils/useControlled';\nimport useFormControl from '../FormControl/useFormControl';\nimport withStyles from '../styles/withStyles';\nimport IconButton from '../IconButton';\nexport var styles = {\n root: {\n padding: 9\n },\n checked: {},\n disabled: {},\n input: {\n cursor: 'inherit',\n position: 'absolute',\n opacity: 0,\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n margin: 0,\n padding: 0,\n zIndex: 1\n }\n};\n/**\n * @ignore - internal component.\n */\n\nvar SwitchBase = /*#__PURE__*/React.forwardRef(function SwitchBase(props, ref) {\n var autoFocus = props.autoFocus,\n checkedProp = props.checked,\n checkedIcon = props.checkedIcon,\n classes = props.classes,\n className = props.className,\n defaultChecked = props.defaultChecked,\n disabledProp = props.disabled,\n icon = props.icon,\n id = props.id,\n inputProps = props.inputProps,\n inputRef = props.inputRef,\n name = props.name,\n onBlur = props.onBlur,\n onChange = props.onChange,\n onFocus = props.onFocus,\n readOnly = props.readOnly,\n required = props.required,\n tabIndex = props.tabIndex,\n type = props.type,\n value = props.value,\n other = _objectWithoutProperties(props, [\"autoFocus\", \"checked\", \"checkedIcon\", \"classes\", \"className\", \"defaultChecked\", \"disabled\", \"icon\", \"id\", \"inputProps\", \"inputRef\", \"name\", \"onBlur\", \"onChange\", \"onFocus\", \"readOnly\", \"required\", \"tabIndex\", \"type\", \"value\"]);\n\n var _useControlled = useControlled({\n controlled: checkedProp,\n default: Boolean(defaultChecked),\n name: 'SwitchBase',\n state: 'checked'\n }),\n _useControlled2 = _slicedToArray(_useControlled, 2),\n checked = _useControlled2[0],\n setCheckedState = _useControlled2[1];\n\n var muiFormControl = useFormControl();\n\n var handleFocus = function handleFocus(event) {\n if (onFocus) {\n onFocus(event);\n }\n\n if (muiFormControl && muiFormControl.onFocus) {\n muiFormControl.onFocus(event);\n }\n };\n\n var handleBlur = function handleBlur(event) {\n if (onBlur) {\n onBlur(event);\n }\n\n if (muiFormControl && muiFormControl.onBlur) {\n muiFormControl.onBlur(event);\n }\n };\n\n var handleInputChange = function handleInputChange(event) {\n var newChecked = event.target.checked;\n setCheckedState(newChecked);\n\n if (onChange) {\n // TODO v5: remove the second argument.\n onChange(event, newChecked);\n }\n };\n\n var disabled = disabledProp;\n\n if (muiFormControl) {\n if (typeof disabled === 'undefined') {\n disabled = muiFormControl.disabled;\n }\n }\n\n var hasLabelFor = type === 'checkbox' || type === 'radio';\n return /*#__PURE__*/React.createElement(IconButton, _extends({\n component: \"span\",\n className: clsx(classes.root, className, checked && classes.checked, disabled && classes.disabled),\n disabled: disabled,\n tabIndex: null,\n role: undefined,\n onFocus: handleFocus,\n onBlur: handleBlur,\n ref: ref\n }, other), /*#__PURE__*/React.createElement(\"input\", _extends({\n autoFocus: autoFocus,\n checked: checkedProp,\n defaultChecked: defaultChecked,\n className: classes.input,\n disabled: disabled,\n id: hasLabelFor && id,\n name: name,\n onChange: handleInputChange,\n readOnly: readOnly,\n ref: inputRef,\n required: required,\n tabIndex: tabIndex,\n type: type,\n value: value\n }, inputProps)), checked ? checkedIcon : icon);\n}); // NB: If changed, please update Checkbox, Switch and Radio\n// so that the API documentation is updated.\n\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default withStyles(styles, {\n name: 'PrivateSwitchBase'\n})(SwitchBase);","module.exports = __webpack_public_path__ + \"media/icon/icon-bathtub-green-3b27ad1c.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon-bathtub-gray-10f3448d.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon-hot_tub-green-422feea7.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon-hot_tub-gray-dac03fa3.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon-countertops-green-02aae218.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon-countertops-gray-b61ee0cf.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon-local_laundry_service-green-277b273b.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon-local_laundry_service-gray-2756f2a5.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon-windy-green-9bf72fe0.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon-windy-gray-c7000fc7.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon-building-green-1171a9ae.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon-building-gray-8b5b908b.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon-bear-green-dc5cf509.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon-bear-gray-f45c6b74.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon-truck-green-4e6ea352.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon-truck-gray-e01d7987.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon-car-green-4483eba5.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon-car-gray-dfe0b13b.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon-door-lock-box-green-ea497a34.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon-door-lock-box-gray-28158013.svg\";","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","module.exports = __webpack_public_path__ + \"media/icon/icon-map-35516e99.svg\";","module.exports = __webpack_public_path__ + \"media/images/dummy-qr-f5bd7508.png\";","module.exports = __webpack_public_path__ + \"media/icon/icon-LINE-edc59aed.svg\";","module.exports = __webpack_public_path__ + \"media/images/line-phone-39c3716c.svg\";","module.exports = __webpack_public_path__ + \"media/top/icon_train_36x36-5c64bcc1.svg\";","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\"; // Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\n\nexport var keys = ['xs', 'sm', 'md', 'lg', 'xl']; // Keep in mind that @media is inclusive by the CSS specification.\n\nexport default function createBreakpoints(breakpoints) {\n var _breakpoints$values = breakpoints.values,\n values = _breakpoints$values === void 0 ? {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920\n } : _breakpoints$values,\n _breakpoints$unit = breakpoints.unit,\n unit = _breakpoints$unit === void 0 ? 'px' : _breakpoints$unit,\n _breakpoints$step = breakpoints.step,\n step = _breakpoints$step === void 0 ? 5 : _breakpoints$step,\n other = _objectWithoutProperties(breakpoints, [\"values\", \"unit\", \"step\"]);\n\n function up(key) {\n var value = typeof values[key] === 'number' ? values[key] : key;\n return \"@media (min-width:\".concat(value).concat(unit, \")\");\n }\n\n function down(key) {\n var endIndex = keys.indexOf(key) + 1;\n var upperbound = values[keys[endIndex]];\n\n if (endIndex === keys.length) {\n // xl down applies to all sizes\n return up('xs');\n }\n\n var value = typeof upperbound === 'number' && endIndex > 0 ? upperbound : key;\n return \"@media (max-width:\".concat(value - step / 100).concat(unit, \")\");\n }\n\n function between(start, end) {\n var endIndex = keys.indexOf(end);\n\n if (endIndex === keys.length - 1) {\n return up(start);\n }\n\n return \"@media (min-width:\".concat(typeof values[start] === 'number' ? values[start] : start).concat(unit, \") and \") + \"(max-width:\".concat((endIndex !== -1 && typeof values[keys[endIndex + 1]] === 'number' ? values[keys[endIndex + 1]] : end) - step / 100).concat(unit, \")\");\n }\n\n function only(key) {\n return between(key, key);\n }\n\n var warnedOnce = false;\n\n function width(key) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.warn([\"Material-UI: The `theme.breakpoints.width` utility is deprecated because it's redundant.\", 'Use the `theme.breakpoints.values` instead.'].join('\\n'));\n }\n }\n\n return values[key];\n }\n\n return _extends({\n keys: keys,\n values: values,\n up: up,\n down: down,\n between: between,\n only: only,\n width: width\n }, other);\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function createMixins(breakpoints, spacing, mixins) {\n var _toolbar;\n\n return _extends({\n gutters: function gutters() {\n var styles = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n console.warn(['Material-UI: theme.mixins.gutters() is deprecated.', 'You can use the source of the mixin directly:', \"\\n paddingLeft: theme.spacing(2),\\n paddingRight: theme.spacing(2),\\n [theme.breakpoints.up('sm')]: {\\n paddingLeft: theme.spacing(3),\\n paddingRight: theme.spacing(3),\\n },\\n \"].join('\\n'));\n return _extends({\n paddingLeft: spacing(2),\n paddingRight: spacing(2)\n }, styles, _defineProperty({}, breakpoints.up('sm'), _extends({\n paddingLeft: spacing(3),\n paddingRight: spacing(3)\n }, styles[breakpoints.up('sm')])));\n },\n toolbar: (_toolbar = {\n minHeight: 56\n }, _defineProperty(_toolbar, \"\".concat(breakpoints.up('xs'), \" and (orientation: landscape)\"), {\n minHeight: 48\n }), _defineProperty(_toolbar, breakpoints.up('sm'), {\n minHeight: 64\n }), _toolbar)\n }, mixins);\n}","var common = {\n black: '#000',\n white: '#fff'\n};\nexport default common;","var grey = {\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#eeeeee',\n 300: '#e0e0e0',\n 400: '#bdbdbd',\n 500: '#9e9e9e',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n A100: '#d5d5d5',\n A200: '#aaaaaa',\n A400: '#303030',\n A700: '#616161'\n};\nexport default grey;","var indigo = {\n 50: '#e8eaf6',\n 100: '#c5cae9',\n 200: '#9fa8da',\n 300: '#7986cb',\n 400: '#5c6bc0',\n 500: '#3f51b5',\n 600: '#3949ab',\n 700: '#303f9f',\n 800: '#283593',\n 900: '#1a237e',\n A100: '#8c9eff',\n A200: '#536dfe',\n A400: '#3d5afe',\n A700: '#304ffe'\n};\nexport default indigo;","var pink = {\n 50: '#fce4ec',\n 100: '#f8bbd0',\n 200: '#f48fb1',\n 300: '#f06292',\n 400: '#ec407a',\n 500: '#e91e63',\n 600: '#d81b60',\n 700: '#c2185b',\n 800: '#ad1457',\n 900: '#880e4f',\n A100: '#ff80ab',\n A200: '#ff4081',\n A400: '#f50057',\n A700: '#c51162'\n};\nexport default pink;","var red = {\n 50: '#ffebee',\n 100: '#ffcdd2',\n 200: '#ef9a9a',\n 300: '#e57373',\n 400: '#ef5350',\n 500: '#f44336',\n 600: '#e53935',\n 700: '#d32f2f',\n 800: '#c62828',\n 900: '#b71c1c',\n A100: '#ff8a80',\n A200: '#ff5252',\n A400: '#ff1744',\n A700: '#d50000'\n};\nexport default red;","var orange = {\n 50: '#fff3e0',\n 100: '#ffe0b2',\n 200: '#ffcc80',\n 300: '#ffb74d',\n 400: '#ffa726',\n 500: '#ff9800',\n 600: '#fb8c00',\n 700: '#f57c00',\n 800: '#ef6c00',\n 900: '#e65100',\n A100: '#ffd180',\n A200: '#ffab40',\n A400: '#ff9100',\n A700: '#ff6d00'\n};\nexport default orange;","var blue = {\n 50: '#e3f2fd',\n 100: '#bbdefb',\n 200: '#90caf9',\n 300: '#64b5f6',\n 400: '#42a5f5',\n 500: '#2196f3',\n 600: '#1e88e5',\n 700: '#1976d2',\n 800: '#1565c0',\n 900: '#0d47a1',\n A100: '#82b1ff',\n A200: '#448aff',\n A400: '#2979ff',\n A700: '#2962ff'\n};\nexport default blue;","var green = {\n 50: '#e8f5e9',\n 100: '#c8e6c9',\n 200: '#a5d6a7',\n 300: '#81c784',\n 400: '#66bb6a',\n 500: '#4caf50',\n 600: '#43a047',\n 700: '#388e3c',\n 800: '#2e7d32',\n 900: '#1b5e20',\n A100: '#b9f6ca',\n A200: '#69f0ae',\n A400: '#00e676',\n A700: '#00c853'\n};\nexport default green;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@material-ui/utils\";\nimport { deepmerge } from '@material-ui/utils';\nimport common from '../colors/common';\nimport grey from '../colors/grey';\nimport indigo from '../colors/indigo';\nimport pink from '../colors/pink';\nimport red from '../colors/red';\nimport orange from '../colors/orange';\nimport blue from '../colors/blue';\nimport green from '../colors/green';\nimport { darken, getContrastRatio, lighten } from './colorManipulator';\nexport var light = {\n // The colors used to style the text.\n text: {\n // The most important text.\n primary: 'rgba(0, 0, 0, 0.87)',\n // Secondary text.\n secondary: 'rgba(0, 0, 0, 0.54)',\n // Disabled text have even lower visual prominence.\n disabled: 'rgba(0, 0, 0, 0.38)',\n // Text hints.\n hint: 'rgba(0, 0, 0, 0.38)'\n },\n // The color used to divide different elements.\n divider: 'rgba(0, 0, 0, 0.12)',\n // The background colors used to style the surfaces.\n // Consistency between these values is important.\n background: {\n paper: common.white,\n default: grey[50]\n },\n // The colors used to style the action elements.\n action: {\n // The color of an active action like an icon button.\n active: 'rgba(0, 0, 0, 0.54)',\n // The color of an hovered action.\n hover: 'rgba(0, 0, 0, 0.04)',\n hoverOpacity: 0.04,\n // The color of a selected action.\n selected: 'rgba(0, 0, 0, 0.08)',\n selectedOpacity: 0.08,\n // The color of a disabled action.\n disabled: 'rgba(0, 0, 0, 0.26)',\n // The background color of a disabled action.\n disabledBackground: 'rgba(0, 0, 0, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(0, 0, 0, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.12\n }\n};\nexport var dark = {\n text: {\n primary: common.white,\n secondary: 'rgba(255, 255, 255, 0.7)',\n disabled: 'rgba(255, 255, 255, 0.5)',\n hint: 'rgba(255, 255, 255, 0.5)',\n icon: 'rgba(255, 255, 255, 0.5)'\n },\n divider: 'rgba(255, 255, 255, 0.12)',\n background: {\n paper: grey[800],\n default: '#303030'\n },\n action: {\n active: common.white,\n hover: 'rgba(255, 255, 255, 0.08)',\n hoverOpacity: 0.08,\n selected: 'rgba(255, 255, 255, 0.16)',\n selectedOpacity: 0.16,\n disabled: 'rgba(255, 255, 255, 0.3)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(255, 255, 255, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.24\n }\n};\n\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n var tonalOffsetLight = tonalOffset.light || tonalOffset;\n var tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n\n if (!intent[direction]) {\n if (intent.hasOwnProperty(shade)) {\n intent[direction] = intent[shade];\n } else if (direction === 'light') {\n intent.light = lighten(intent.main, tonalOffsetLight);\n } else if (direction === 'dark') {\n intent.dark = darken(intent.main, tonalOffsetDark);\n }\n }\n}\n\nexport default function createPalette(palette) {\n var _palette$primary = palette.primary,\n primary = _palette$primary === void 0 ? {\n light: indigo[300],\n main: indigo[500],\n dark: indigo[700]\n } : _palette$primary,\n _palette$secondary = palette.secondary,\n secondary = _palette$secondary === void 0 ? {\n light: pink.A200,\n main: pink.A400,\n dark: pink.A700\n } : _palette$secondary,\n _palette$error = palette.error,\n error = _palette$error === void 0 ? {\n light: red[300],\n main: red[500],\n dark: red[700]\n } : _palette$error,\n _palette$warning = palette.warning,\n warning = _palette$warning === void 0 ? {\n light: orange[300],\n main: orange[500],\n dark: orange[700]\n } : _palette$warning,\n _palette$info = palette.info,\n info = _palette$info === void 0 ? {\n light: blue[300],\n main: blue[500],\n dark: blue[700]\n } : _palette$info,\n _palette$success = palette.success,\n success = _palette$success === void 0 ? {\n light: green[300],\n main: green[500],\n dark: green[700]\n } : _palette$success,\n _palette$type = palette.type,\n type = _palette$type === void 0 ? 'light' : _palette$type,\n _palette$contrastThre = palette.contrastThreshold,\n contrastThreshold = _palette$contrastThre === void 0 ? 3 : _palette$contrastThre,\n _palette$tonalOffset = palette.tonalOffset,\n tonalOffset = _palette$tonalOffset === void 0 ? 0.2 : _palette$tonalOffset,\n other = _objectWithoutProperties(palette, [\"primary\", \"secondary\", \"error\", \"warning\", \"info\", \"success\", \"type\", \"contrastThreshold\", \"tonalOffset\"]); // Use the same logic as\n // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n\n\n function getContrastText(background) {\n var contrastText = getContrastRatio(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n\n if (process.env.NODE_ENV !== 'production') {\n var contrast = getContrastRatio(background, contrastText);\n\n if (contrast < 3) {\n console.error([\"Material-UI: The contrast ratio of \".concat(contrast, \":1 for \").concat(contrastText, \" on \").concat(background), 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n }\n }\n\n return contrastText;\n }\n\n var augmentColor = function augmentColor(color) {\n var mainShade = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 500;\n var lightShade = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 300;\n var darkShade = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 700;\n color = _extends({}, color);\n\n if (!color.main && color[mainShade]) {\n color.main = color[mainShade];\n }\n\n if (!color.main) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: The color provided to augmentColor(color) is invalid.\\nThe color object needs to have a `main` property or a `\".concat(mainShade, \"` property.\") : _formatMuiErrorMessage(4, mainShade));\n }\n\n if (typeof color.main !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: The color provided to augmentColor(color) is invalid.\\n`color.main` should be a string, but `\".concat(JSON.stringify(color.main), \"` was provided instead.\\n\\nDid you intend to use one of the following approaches?\\n\\nimport {\\xA0green } from \\\"@material-ui/core/colors\\\";\\n\\nconst theme1 = createTheme({ palette: {\\n primary: green,\\n} });\\n\\nconst theme2 = createTheme({ palette: {\\n primary: { main: green[500] },\\n} });\") : _formatMuiErrorMessage(5, JSON.stringify(color.main)));\n }\n\n addLightOrDark(color, 'light', lightShade, tonalOffset);\n addLightOrDark(color, 'dark', darkShade, tonalOffset);\n\n if (!color.contrastText) {\n color.contrastText = getContrastText(color.main);\n }\n\n return color;\n };\n\n var types = {\n dark: dark,\n light: light\n };\n\n if (process.env.NODE_ENV !== 'production') {\n if (!types[type]) {\n console.error(\"Material-UI: The palette type `\".concat(type, \"` is not supported.\"));\n }\n }\n\n var paletteOutput = deepmerge(_extends({\n // A collection of common colors.\n common: common,\n // The palette type, can be light or dark.\n type: type,\n // The colors used to represent primary interface elements for a user.\n primary: augmentColor(primary),\n // The colors used to represent secondary interface elements for a user.\n secondary: augmentColor(secondary, 'A400', 'A200', 'A700'),\n // The colors used to represent interface elements that the user should be made aware of.\n error: augmentColor(error),\n // The colors used to represent potentially dangerous actions or important messages.\n warning: augmentColor(warning),\n // The colors used to present information to the user that is neutral and not necessarily important.\n info: augmentColor(info),\n // The colors used to indicate the successful completion of an action that user triggered.\n success: augmentColor(success),\n // The grey colors.\n grey: grey,\n // Used by `getContrastText()` to maximize the contrast between\n // the background and the text.\n contrastThreshold: contrastThreshold,\n // Takes a background color and returns the text color that maximizes the contrast.\n getContrastText: getContrastText,\n // Generate a rich color object.\n augmentColor: augmentColor,\n // Used by the functions below to shift a color's luminance by approximately\n // two indexes within its tonal palette.\n // E.g., shift from Red 500 to Red 300 or Red 700.\n tonalOffset: tonalOffset\n }, types[type]), other);\n return paletteOutput;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport { deepmerge } from '@material-ui/utils';\n\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\n\nvar warnedOnce = false;\n\nfunction roundWithDeprecationWarning(value) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n console.warn(['Material-UI: The `theme.typography.round` helper is deprecated.', 'Head to https://material-ui.com/r/migration-v4/#theme for a migration path.'].join('\\n'));\n warnedOnce = true;\n }\n }\n\n return round(value);\n}\n\nvar caseAllCaps = {\n textTransform: 'uppercase'\n};\nvar defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n/**\n * @see @link{https://material.io/design/typography/the-type-system.html}\n * @see @link{https://material.io/design/typography/understanding-typography.html}\n */\n\nexport default function createTypography(palette, typography) {\n var _ref = typeof typography === 'function' ? typography(palette) : typography,\n _ref$fontFamily = _ref.fontFamily,\n fontFamily = _ref$fontFamily === void 0 ? defaultFontFamily : _ref$fontFamily,\n _ref$fontSize = _ref.fontSize,\n fontSize = _ref$fontSize === void 0 ? 14 : _ref$fontSize,\n _ref$fontWeightLight = _ref.fontWeightLight,\n fontWeightLight = _ref$fontWeightLight === void 0 ? 300 : _ref$fontWeightLight,\n _ref$fontWeightRegula = _ref.fontWeightRegular,\n fontWeightRegular = _ref$fontWeightRegula === void 0 ? 400 : _ref$fontWeightRegula,\n _ref$fontWeightMedium = _ref.fontWeightMedium,\n fontWeightMedium = _ref$fontWeightMedium === void 0 ? 500 : _ref$fontWeightMedium,\n _ref$fontWeightBold = _ref.fontWeightBold,\n fontWeightBold = _ref$fontWeightBold === void 0 ? 700 : _ref$fontWeightBold,\n _ref$htmlFontSize = _ref.htmlFontSize,\n htmlFontSize = _ref$htmlFontSize === void 0 ? 16 : _ref$htmlFontSize,\n allVariants = _ref.allVariants,\n pxToRem2 = _ref.pxToRem,\n other = _objectWithoutProperties(_ref, [\"fontFamily\", \"fontSize\", \"fontWeightLight\", \"fontWeightRegular\", \"fontWeightMedium\", \"fontWeightBold\", \"htmlFontSize\", \"allVariants\", \"pxToRem\"]);\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof fontSize !== 'number') {\n console.error('Material-UI: `fontSize` is required to be a number.');\n }\n\n if (typeof htmlFontSize !== 'number') {\n console.error('Material-UI: `htmlFontSize` is required to be a number.');\n }\n }\n\n var coef = fontSize / 14;\n\n var pxToRem = pxToRem2 || function (size) {\n return \"\".concat(size / htmlFontSize * coef, \"rem\");\n };\n\n var buildVariant = function buildVariant(fontWeight, size, lineHeight, letterSpacing, casing) {\n return _extends({\n fontFamily: fontFamily,\n fontWeight: fontWeight,\n fontSize: pxToRem(size),\n // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n lineHeight: lineHeight\n }, fontFamily === defaultFontFamily ? {\n letterSpacing: \"\".concat(round(letterSpacing / size), \"em\")\n } : {}, casing, allVariants);\n };\n\n var variants = {\n h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps)\n };\n return deepmerge(_extends({\n htmlFontSize: htmlFontSize,\n pxToRem: pxToRem,\n round: roundWithDeprecationWarning,\n // TODO v5: remove\n fontFamily: fontFamily,\n fontSize: fontSize,\n fontWeightLight: fontWeightLight,\n fontWeightRegular: fontWeightRegular,\n fontWeightMedium: fontWeightMedium,\n fontWeightBold: fontWeightBold\n }, variants), other, {\n clone: false // No need to clone deep\n\n });\n}","var shadowKeyUmbraOpacity = 0.2;\nvar shadowKeyPenumbraOpacity = 0.14;\nvar shadowAmbientShadowOpacity = 0.12;\n\nfunction createShadow() {\n return [\"\".concat(arguments.length <= 0 ? undefined : arguments[0], \"px \").concat(arguments.length <= 1 ? undefined : arguments[1], \"px \").concat(arguments.length <= 2 ? undefined : arguments[2], \"px \").concat(arguments.length <= 3 ? undefined : arguments[3], \"px rgba(0,0,0,\").concat(shadowKeyUmbraOpacity, \")\"), \"\".concat(arguments.length <= 4 ? undefined : arguments[4], \"px \").concat(arguments.length <= 5 ? undefined : arguments[5], \"px \").concat(arguments.length <= 6 ? undefined : arguments[6], \"px \").concat(arguments.length <= 7 ? undefined : arguments[7], \"px rgba(0,0,0,\").concat(shadowKeyPenumbraOpacity, \")\"), \"\".concat(arguments.length <= 8 ? undefined : arguments[8], \"px \").concat(arguments.length <= 9 ? undefined : arguments[9], \"px \").concat(arguments.length <= 10 ? undefined : arguments[10], \"px \").concat(arguments.length <= 11 ? undefined : arguments[11], \"px rgba(0,0,0,\").concat(shadowAmbientShadowOpacity, \")\")].join(',');\n} // Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\n\n\nvar shadows = ['none', createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];\nexport default shadows;","var shape = {\n borderRadius: 4\n};\nexport default shape;","import { deepmerge } from '@material-ui/utils';\n\nfunction merge(acc, item) {\n if (!item) {\n return acc;\n }\n\n return deepmerge(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n\n });\n}\n\nexport default merge;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport PropTypes from 'prop-types';\nimport merge from './merge'; // The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\n\nvar values = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920\n};\nvar defaultBreakpoints = {\n // Sorted ASC by size. That's important.\n // It can't be configured as it's used statically for propTypes.\n keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n up: function up(key) {\n return \"@media (min-width:\".concat(values[key], \"px)\");\n }\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n if (process.env.NODE_ENV !== 'production') {\n if (!props.theme) {\n console.error('Material-UI: You are calling a style function without a theme value.');\n }\n }\n\n if (Array.isArray(propValue)) {\n var themeBreakpoints = props.theme.breakpoints || defaultBreakpoints;\n return propValue.reduce(function (acc, item, index) {\n acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n return acc;\n }, {});\n }\n\n if (_typeof(propValue) === 'object') {\n var _themeBreakpoints = props.theme.breakpoints || defaultBreakpoints;\n\n return Object.keys(propValue).reduce(function (acc, breakpoint) {\n acc[_themeBreakpoints.up(breakpoint)] = styleFromPropValue(propValue[breakpoint]);\n return acc;\n }, {});\n }\n\n var output = styleFromPropValue(propValue);\n return output;\n}\n\nfunction breakpoints(styleFunction) {\n var newStyleFunction = function newStyleFunction(props) {\n var base = styleFunction(props);\n var themeBreakpoints = props.theme.breakpoints || defaultBreakpoints;\n var extended = themeBreakpoints.keys.reduce(function (acc, key) {\n if (props[key]) {\n acc = acc || {};\n acc[themeBreakpoints.up(key)] = styleFunction(_extends({\n theme: props.theme\n }, props[key]));\n }\n\n return acc;\n }, null);\n return merge(base, extended);\n };\n\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends({}, styleFunction.propTypes, {\n xs: PropTypes.object,\n sm: PropTypes.object,\n md: PropTypes.object,\n lg: PropTypes.object,\n xl: PropTypes.object\n }) : {};\n newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl'].concat(_toConsumableArray(styleFunction.filterProps));\n return newStyleFunction;\n}\n\nexport default breakpoints;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nimport merge from './merge';\nimport memoize from './memoize';\nvar properties = {\n m: 'margin',\n p: 'padding'\n};\nvar directions = {\n t: 'Top',\n r: 'Right',\n b: 'Bottom',\n l: 'Left',\n x: ['Left', 'Right'],\n y: ['Top', 'Bottom']\n};\nvar aliases = {\n marginX: 'mx',\n marginY: 'my',\n paddingX: 'px',\n paddingY: 'py'\n}; // memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\n\nvar getCssProperties = memoize(function (prop) {\n // It's not a shorthand notation.\n if (prop.length > 2) {\n if (aliases[prop]) {\n prop = aliases[prop];\n } else {\n return [prop];\n }\n }\n\n var _prop$split = prop.split(''),\n _prop$split2 = _slicedToArray(_prop$split, 2),\n a = _prop$split2[0],\n b = _prop$split2[1];\n\n var property = properties[a];\n var direction = directions[b] || '';\n return Array.isArray(direction) ? direction.map(function (dir) {\n return property + dir;\n }) : [property + direction];\n});\nvar spacingKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY'];\nexport function createUnarySpacing(theme) {\n var themeSpacing = theme.spacing || 8;\n\n if (typeof themeSpacing === 'number') {\n return function (abs) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof abs !== 'number') {\n console.error(\"Material-UI: Expected spacing argument to be a number, got \".concat(abs, \".\"));\n }\n }\n\n return themeSpacing * abs;\n };\n }\n\n if (Array.isArray(themeSpacing)) {\n return function (abs) {\n if (process.env.NODE_ENV !== 'production') {\n if (abs > themeSpacing.length - 1) {\n console.error([\"Material-UI: The value provided (\".concat(abs, \") overflows.\"), \"The supported values are: \".concat(JSON.stringify(themeSpacing), \".\"), \"\".concat(abs, \" > \").concat(themeSpacing.length - 1, \", you need to add the missing values.\")].join('\\n'));\n }\n }\n\n return themeSpacing[abs];\n };\n }\n\n if (typeof themeSpacing === 'function') {\n return themeSpacing;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n console.error([\"Material-UI: The `theme.spacing` value (\".concat(themeSpacing, \") is invalid.\"), 'It should be a number, an array or a function.'].join('\\n'));\n }\n\n return function () {\n return undefined;\n };\n}\n\nfunction getValue(transformer, propValue) {\n if (typeof propValue === 'string' || propValue == null) {\n return propValue;\n }\n\n var abs = Math.abs(propValue);\n var transformed = transformer(abs);\n\n if (propValue >= 0) {\n return transformed;\n }\n\n if (typeof transformed === 'number') {\n return -transformed;\n }\n\n return \"-\".concat(transformed);\n}\n\nfunction getStyleFromPropValue(cssProperties, transformer) {\n return function (propValue) {\n return cssProperties.reduce(function (acc, cssProperty) {\n acc[cssProperty] = getValue(transformer, propValue);\n return acc;\n }, {});\n };\n}\n\nfunction spacing(props) {\n var theme = props.theme;\n var transformer = createUnarySpacing(theme);\n return Object.keys(props).map(function (prop) {\n // Using a hash computation over an array iteration could be faster, but with only 28 items,\n // it's doesn't worth the bundle size.\n if (spacingKeys.indexOf(prop) === -1) {\n return null;\n }\n\n var cssProperties = getCssProperties(prop);\n var styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n var propValue = props[prop];\n return handleBreakpoints(props, propValue, styleFromPropValue);\n }).reduce(merge, {});\n}\n\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce(function (obj, key) {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","export default function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) {\n cache[arg] = fn(arg);\n }\n\n return cache[arg];\n };\n}","import { createUnarySpacing } from '@material-ui/system';\nvar warnOnce;\nexport default function createSpacing() {\n var spacingInput = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 8; // Already transformed.\n\n if (spacingInput.mui) {\n return spacingInput;\n } // Material Design layouts are visually balanced. Most measurements align to an 8dp grid applied, which aligns both spacing and the overall layout.\n // Smaller components, such as icons and type, can align to a 4dp grid.\n // https://material.io/design/layout/understanding-layout.html#usage\n\n\n var transform = createUnarySpacing({\n spacing: spacingInput\n });\n\n var spacing = function spacing() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!(args.length <= 4)) {\n console.error(\"Material-UI: Too many arguments provided, expected between 0 and 4, got \".concat(args.length));\n }\n }\n\n if (args.length === 0) {\n return transform(1);\n }\n\n if (args.length === 1) {\n return transform(args[0]);\n }\n\n return args.map(function (argument) {\n if (typeof argument === 'string') {\n return argument;\n }\n\n var output = transform(argument);\n return typeof output === 'number' ? \"\".concat(output, \"px\") : output;\n }).join(' ');\n }; // Backward compatibility, to remove in v5.\n\n\n Object.defineProperty(spacing, 'unit', {\n get: function get() {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnOnce || process.env.NODE_ENV === 'test') {\n console.error(['Material-UI: theme.spacing.unit usage has been deprecated.', 'It will be removed in v5.', 'You can replace `theme.spacing.unit * y` with `theme.spacing(y)`.', '', 'You can use the `https://github.com/mui-org/material-ui/tree/master/packages/material-ui-codemod/README.md#theme-spacing-api` migration helper to make the process smoother.'].join('\\n'));\n }\n\n warnOnce = true;\n }\n\n return spacingInput;\n }\n });\n spacing.mui = true;\n return spacing;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport { deepmerge } from '@material-ui/utils';\nimport createBreakpoints from './createBreakpoints';\nimport createMixins from './createMixins';\nimport createPalette from './createPalette';\nimport createTypography from './createTypography';\nimport shadows from './shadows';\nimport shape from './shape';\nimport createSpacing from './createSpacing';\nimport transitions from './transitions';\nimport zIndex from './zIndex';\n\nfunction createTheme() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _options$breakpoints = options.breakpoints,\n breakpointsInput = _options$breakpoints === void 0 ? {} : _options$breakpoints,\n _options$mixins = options.mixins,\n mixinsInput = _options$mixins === void 0 ? {} : _options$mixins,\n _options$palette = options.palette,\n paletteInput = _options$palette === void 0 ? {} : _options$palette,\n spacingInput = options.spacing,\n _options$typography = options.typography,\n typographyInput = _options$typography === void 0 ? {} : _options$typography,\n other = _objectWithoutProperties(options, [\"breakpoints\", \"mixins\", \"palette\", \"spacing\", \"typography\"]);\n\n var palette = createPalette(paletteInput);\n var breakpoints = createBreakpoints(breakpointsInput);\n var spacing = createSpacing(spacingInput);\n var muiTheme = deepmerge({\n breakpoints: breakpoints,\n direction: 'ltr',\n mixins: createMixins(breakpoints, spacing, mixinsInput),\n overrides: {},\n // Inject custom styles\n palette: palette,\n props: {},\n // Provide default props\n shadows: shadows,\n typography: createTypography(palette, typographyInput),\n spacing: spacing,\n shape: shape,\n transitions: transitions,\n zIndex: zIndex\n }, other);\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n muiTheme = args.reduce(function (acc, argument) {\n return deepmerge(acc, argument);\n }, muiTheme);\n\n if (process.env.NODE_ENV !== 'production') {\n var pseudoClasses = ['checked', 'disabled', 'error', 'focused', 'focusVisible', 'required', 'expanded', 'selected'];\n\n var traverse = function traverse(node, parentKey) {\n var depth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var key; // eslint-disable-next-line guard-for-in, no-restricted-syntax\n\n for (key in node) {\n var child = node[key];\n\n if (depth === 1) {\n if (key.indexOf('Mui') === 0 && child) {\n traverse(child, key, depth + 1);\n }\n } else if (pseudoClasses.indexOf(key) !== -1 && Object.keys(child).length > 0) {\n if (process.env.NODE_ENV !== 'production') {\n console.error([\"Material-UI: The `\".concat(parentKey, \"` component increases \") + \"the CSS specificity of the `\".concat(key, \"` internal state.\"), 'You can not override it like this: ', JSON.stringify(node, null, 2), '', 'Instead, you need to use the $ruleName syntax:', JSON.stringify({\n root: _defineProperty({}, \"&$\".concat(key), child)\n }, null, 2), '', 'https://material-ui.com/r/pseudo-classes-guide'].join('\\n'));\n } // Remove the style to prevent global conflicts.\n\n\n node[key] = {};\n }\n }\n };\n\n traverse(muiTheme.overrides);\n }\n\n return muiTheme;\n}\n\nvar warnedOnce = false;\nexport function createMuiTheme() {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.error(['Material-UI: the createMuiTheme function was renamed to createTheme.', '', \"You should use `import { createTheme } from '@material-ui/core/styles'`\"].join('\\n'));\n }\n }\n\n return createTheme.apply(void 0, arguments);\n}\nexport default createTheme;","import createTheme from './createTheme';\nvar defaultTheme = createTheme();\nexport default defaultTheme;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\ntypeof window !== \"undefined\" && function webpackUniversalModuleDefinition(root, factory) {\n if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && (typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === 'object') module.exports = factory();else if (typeof define === 'function' && define.amd) define([], factory);else if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object') exports[\"Hls\"] = factory();else root[\"Hls\"] = factory();\n}(this, function () {\n return (\n /******/\n function (modules) {\n // webpackBootstrap\n\n /******/\n // The module cache\n\n /******/\n var installedModules = {};\n /******/\n\n /******/\n // The require function\n\n /******/\n\n function __webpack_require__(moduleId) {\n /******/\n\n /******/\n // Check if module is in cache\n\n /******/\n if (installedModules[moduleId]) {\n /******/\n return installedModules[moduleId].exports;\n /******/\n }\n /******/\n // Create a new module (and put it into the cache)\n\n /******/\n\n\n var module = installedModules[moduleId] = {\n /******/\n i: moduleId,\n\n /******/\n l: false,\n\n /******/\n exports: {}\n /******/\n\n };\n /******/\n\n /******/\n // Execute the module function\n\n /******/\n\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n /******/\n\n /******/\n // Flag the module as loaded\n\n /******/\n\n module.l = true;\n /******/\n\n /******/\n // Return the exports of the module\n\n /******/\n\n return module.exports;\n /******/\n }\n /******/\n\n /******/\n\n /******/\n // expose the modules object (__webpack_modules__)\n\n /******/\n\n\n __webpack_require__.m = modules;\n /******/\n\n /******/\n // expose the module cache\n\n /******/\n\n __webpack_require__.c = installedModules;\n /******/\n\n /******/\n // define getter function for harmony exports\n\n /******/\n\n __webpack_require__.d = function (exports, name, getter) {\n /******/\n if (!__webpack_require__.o(exports, name)) {\n /******/\n Object.defineProperty(exports, name, {\n enumerable: true,\n get: getter\n });\n /******/\n }\n /******/\n\n };\n /******/\n\n /******/\n // define __esModule on exports\n\n /******/\n\n\n __webpack_require__.r = function (exports) {\n /******/\n if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n /******/\n Object.defineProperty(exports, Symbol.toStringTag, {\n value: 'Module'\n });\n /******/\n }\n /******/\n\n\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n /******/\n };\n /******/\n\n /******/\n // create a fake namespace object\n\n /******/\n // mode & 1: value is a module id, require it\n\n /******/\n // mode & 2: merge all properties of value into the ns\n\n /******/\n // mode & 4: return value when already ns object\n\n /******/\n // mode & 8|1: behave like require\n\n /******/\n\n\n __webpack_require__.t = function (value, mode) {\n /******/\n if (mode & 1) value = __webpack_require__(value);\n /******/\n\n if (mode & 8) return value;\n /******/\n\n if (mode & 4 && _typeof(value) === 'object' && value && value.__esModule) return value;\n /******/\n\n var ns = Object.create(null);\n /******/\n\n __webpack_require__.r(ns);\n /******/\n\n\n Object.defineProperty(ns, 'default', {\n enumerable: true,\n value: value\n });\n /******/\n\n if (mode & 2 && typeof value != 'string') for (var key in value) {\n __webpack_require__.d(ns, key, function (key) {\n return value[key];\n }.bind(null, key));\n }\n /******/\n\n return ns;\n /******/\n };\n /******/\n\n /******/\n // getDefaultExport function for compatibility with non-harmony modules\n\n /******/\n\n\n __webpack_require__.n = function (module) {\n /******/\n var getter = module && module.__esModule ?\n /******/\n function getDefault() {\n return module['default'];\n } :\n /******/\n function getModuleExports() {\n return module;\n };\n /******/\n\n __webpack_require__.d(getter, 'a', getter);\n /******/\n\n\n return getter;\n /******/\n };\n /******/\n\n /******/\n // Object.prototype.hasOwnProperty.call\n\n /******/\n\n\n __webpack_require__.o = function (object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n };\n /******/\n\n /******/\n // __webpack_public_path__\n\n /******/\n\n\n __webpack_require__.p = \"/dist/\";\n /******/\n\n /******/\n\n /******/\n // Load entry module and return exports\n\n /******/\n\n return __webpack_require__(__webpack_require__.s = \"./src/hls.ts\");\n /******/\n }\n /************************************************************************/\n\n /******/\n ({\n /***/\n \"./node_modules/eventemitter3/index.js\":\n /*!*********************************************!*\\\n !*** ./node_modules/eventemitter3/index.js ***!\n \\*********************************************/\n\n /*! no static exports found */\n\n /***/\n function node_modulesEventemitter3IndexJs(module, exports, __webpack_require__) {\n \"use strict\";\n\n var has = Object.prototype.hasOwnProperty,\n prefix = '~';\n /**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\n\n function Events() {} //\n // We try to not inherit from `Object.prototype`. In some engines creating an\n // instance in this way is faster than calling `Object.create(null)` directly.\n // If `Object.create(null)` is not supported we prefix the event names with a\n // character to make sure that the built-in object properties are not\n // overridden or used as an attack vector.\n //\n\n\n if (Object.create) {\n Events.prototype = Object.create(null); //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n\n if (!new Events().__proto__) prefix = false;\n }\n /**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\n\n\n function EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n }\n /**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\n\n\n function addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once),\n evt = prefix ? prefix + event : event;\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);else emitter._events[evt] = [emitter._events[evt], listener];\n return emitter;\n }\n /**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\n\n\n function clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();else delete emitter._events[evt];\n }\n /**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\n\n\n function EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n }\n /**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\n\n\n EventEmitter.prototype.eventNames = function eventNames() {\n var names = [],\n events,\n name;\n if (this._eventsCount === 0) return names;\n\n for (name in events = this._events) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n };\n /**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\n\n\n EventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event,\n handlers = this._events[evt];\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n };\n /**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\n\n\n EventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event,\n listeners = this._events[evt];\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n };\n /**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\n\n\n EventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n if (!this._events[evt]) return false;\n var listeners = this._events[evt],\n len = arguments.length,\n args,\n i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1:\n return listeners.fn.call(listeners.context), true;\n\n case 2:\n return listeners.fn.call(listeners.context, a1), true;\n\n case 3:\n return listeners.fn.call(listeners.context, a1, a2), true;\n\n case 4:\n return listeners.fn.call(listeners.context, a1, a2, a3), true;\n\n case 5:\n return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n\n case 6:\n return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len - 1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length,\n j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1:\n listeners[i].fn.call(listeners[i].context);\n break;\n\n case 2:\n listeners[i].fn.call(listeners[i].context, a1);\n break;\n\n case 3:\n listeners[i].fn.call(listeners[i].context, a1, a2);\n break;\n\n case 4:\n listeners[i].fn.call(listeners[i].context, a1, a2, a3);\n break;\n\n default:\n if (!args) for (j = 1, args = new Array(len - 1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n };\n /**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\n\n\n EventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n };\n /**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\n\n\n EventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n };\n /**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\n\n\n EventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n if (!this._events[evt]) return this;\n\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (listeners.fn === fn && (!once || listeners.once) && (!context || listeners.context === context)) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (listeners[i].fn !== fn || once && !listeners[i].once || context && listeners[i].context !== context) {\n events.push(listeners[i]);\n }\n } //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n\n\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;else clearEvent(this, evt);\n }\n\n return this;\n };\n /**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\n\n\n EventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n }; //\n // Alias methods names because people roll like that.\n //\n\n\n EventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n EventEmitter.prototype.addListener = EventEmitter.prototype.on; //\n // Expose the prefix.\n //\n\n EventEmitter.prefixed = prefix; //\n // Allow `EventEmitter` to be imported as module namespace.\n //\n\n EventEmitter.EventEmitter = EventEmitter; //\n // Expose the module.\n //\n\n if (true) {\n module.exports = EventEmitter;\n }\n /***/\n\n },\n\n /***/\n \"./node_modules/url-toolkit/src/url-toolkit.js\":\n /*!*****************************************************!*\\\n !*** ./node_modules/url-toolkit/src/url-toolkit.js ***!\n \\*****************************************************/\n\n /*! no static exports found */\n\n /***/\n function node_modulesUrlToolkitSrcUrlToolkitJs(module, exports, __webpack_require__) {\n // see https://tools.ietf.org/html/rfc1808\n (function (root) {\n var URL_REGEX = /^((?:[a-zA-Z0-9+\\-.]+:)?)(\\/\\/[^\\/?#]*)?((?:[^\\/?#]*\\/)*[^;?#]*)?(;[^?#]*)?(\\?[^#]*)?(#[^]*)?$/;\n var FIRST_SEGMENT_REGEX = /^([^\\/?#]*)([^]*)$/;\n var SLASH_DOT_REGEX = /(?:\\/|^)\\.(?=\\/)/g;\n var SLASH_DOT_DOT_REGEX = /(?:\\/|^)\\.\\.\\/(?!\\.\\.\\/)[^\\/]*(?=\\/)/g;\n var URLToolkit = {\n // If opts.alwaysNormalize is true then the path will always be normalized even when it starts with / or //\n // E.g\n // With opts.alwaysNormalize = false (default, spec compliant)\n // http://a.com/b/cd + /e/f/../g => http://a.com/e/f/../g\n // With opts.alwaysNormalize = true (not spec compliant)\n // http://a.com/b/cd + /e/f/../g => http://a.com/e/g\n buildAbsoluteURL: function buildAbsoluteURL(baseURL, relativeURL, opts) {\n opts = opts || {}; // remove any remaining space and CRLF\n\n baseURL = baseURL.trim();\n relativeURL = relativeURL.trim();\n\n if (!relativeURL) {\n // 2a) If the embedded URL is entirely empty, it inherits the\n // entire base URL (i.e., is set equal to the base URL)\n // and we are done.\n if (!opts.alwaysNormalize) {\n return baseURL;\n }\n\n var basePartsForNormalise = URLToolkit.parseURL(baseURL);\n\n if (!basePartsForNormalise) {\n throw new Error('Error trying to parse base URL.');\n }\n\n basePartsForNormalise.path = URLToolkit.normalizePath(basePartsForNormalise.path);\n return URLToolkit.buildURLFromParts(basePartsForNormalise);\n }\n\n var relativeParts = URLToolkit.parseURL(relativeURL);\n\n if (!relativeParts) {\n throw new Error('Error trying to parse relative URL.');\n }\n\n if (relativeParts.scheme) {\n // 2b) If the embedded URL starts with a scheme name, it is\n // interpreted as an absolute URL and we are done.\n if (!opts.alwaysNormalize) {\n return relativeURL;\n }\n\n relativeParts.path = URLToolkit.normalizePath(relativeParts.path);\n return URLToolkit.buildURLFromParts(relativeParts);\n }\n\n var baseParts = URLToolkit.parseURL(baseURL);\n\n if (!baseParts) {\n throw new Error('Error trying to parse base URL.');\n }\n\n if (!baseParts.netLoc && baseParts.path && baseParts.path[0] !== '/') {\n // If netLoc missing and path doesn't start with '/', assume everthing before the first '/' is the netLoc\n // This causes 'example.com/a' to be handled as '//example.com/a' instead of '/example.com/a'\n var pathParts = FIRST_SEGMENT_REGEX.exec(baseParts.path);\n baseParts.netLoc = pathParts[1];\n baseParts.path = pathParts[2];\n }\n\n if (baseParts.netLoc && !baseParts.path) {\n baseParts.path = '/';\n }\n\n var builtParts = {\n // 2c) Otherwise, the embedded URL inherits the scheme of\n // the base URL.\n scheme: baseParts.scheme,\n netLoc: relativeParts.netLoc,\n path: null,\n params: relativeParts.params,\n query: relativeParts.query,\n fragment: relativeParts.fragment\n };\n\n if (!relativeParts.netLoc) {\n // 3) If the embedded URL's is non-empty, we skip to\n // Step 7. Otherwise, the embedded URL inherits the \n // (if any) of the base URL.\n builtParts.netLoc = baseParts.netLoc; // 4) If the embedded URL path is preceded by a slash \"/\", the\n // path is not relative and we skip to Step 7.\n\n if (relativeParts.path[0] !== '/') {\n if (!relativeParts.path) {\n // 5) If the embedded URL path is empty (and not preceded by a\n // slash), then the embedded URL inherits the base URL path\n builtParts.path = baseParts.path; // 5a) if the embedded URL's is non-empty, we skip to\n // step 7; otherwise, it inherits the of the base\n // URL (if any) and\n\n if (!relativeParts.params) {\n builtParts.params = baseParts.params; // 5b) if the embedded URL's is non-empty, we skip to\n // step 7; otherwise, it inherits the of the base\n // URL (if any) and we skip to step 7.\n\n if (!relativeParts.query) {\n builtParts.query = baseParts.query;\n }\n }\n } else {\n // 6) The last segment of the base URL's path (anything\n // following the rightmost slash \"/\", or the entire path if no\n // slash is present) is removed and the embedded URL's path is\n // appended in its place.\n var baseURLPath = baseParts.path;\n var newPath = baseURLPath.substring(0, baseURLPath.lastIndexOf('/') + 1) + relativeParts.path;\n builtParts.path = URLToolkit.normalizePath(newPath);\n }\n }\n }\n\n if (builtParts.path === null) {\n builtParts.path = opts.alwaysNormalize ? URLToolkit.normalizePath(relativeParts.path) : relativeParts.path;\n }\n\n return URLToolkit.buildURLFromParts(builtParts);\n },\n parseURL: function parseURL(url) {\n var parts = URL_REGEX.exec(url);\n\n if (!parts) {\n return null;\n }\n\n return {\n scheme: parts[1] || '',\n netLoc: parts[2] || '',\n path: parts[3] || '',\n params: parts[4] || '',\n query: parts[5] || '',\n fragment: parts[6] || ''\n };\n },\n normalizePath: function normalizePath(path) {\n // The following operations are\n // then applied, in order, to the new path:\n // 6a) All occurrences of \"./\", where \".\" is a complete path\n // segment, are removed.\n // 6b) If the path ends with \".\" as a complete path segment,\n // that \".\" is removed.\n path = path.split('').reverse().join('').replace(SLASH_DOT_REGEX, ''); // 6c) All occurrences of \"/../\", where is a\n // complete path segment not equal to \"..\", are removed.\n // Removal of these path segments is performed iteratively,\n // removing the leftmost matching pattern on each iteration,\n // until no matching pattern remains.\n // 6d) If the path ends with \"/..\", where is a\n // complete path segment not equal to \"..\", that\n // \"/..\" is removed.\n\n while (path.length !== (path = path.replace(SLASH_DOT_DOT_REGEX, '')).length) {}\n\n return path.split('').reverse().join('');\n },\n buildURLFromParts: function buildURLFromParts(parts) {\n return parts.scheme + parts.netLoc + parts.path + parts.params + parts.query + parts.fragment;\n }\n };\n if (true) module.exports = URLToolkit;else {}\n })(this);\n /***/\n\n },\n\n /***/\n \"./node_modules/webworkify-webpack/index.js\":\n /*!**************************************************!*\\\n !*** ./node_modules/webworkify-webpack/index.js ***!\n \\**************************************************/\n\n /*! no static exports found */\n\n /***/\n function node_modulesWebworkifyWebpackIndexJs(module, exports, __webpack_require__) {\n function webpackBootstrapFunc(modules) {\n /******/\n // The module cache\n\n /******/\n var installedModules = {};\n /******/\n // The require function\n\n /******/\n\n function __webpack_require__(moduleId) {\n /******/\n // Check if module is in cache\n\n /******/\n if (installedModules[moduleId])\n /******/\n return installedModules[moduleId].exports;\n /******/\n // Create a new module (and put it into the cache)\n\n /******/\n\n var module = installedModules[moduleId] = {\n /******/\n i: moduleId,\n\n /******/\n l: false,\n\n /******/\n exports: {}\n /******/\n\n };\n /******/\n // Execute the module function\n\n /******/\n\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n /******/\n // Flag the module as loaded\n\n /******/\n\n module.l = true;\n /******/\n // Return the exports of the module\n\n /******/\n\n return module.exports;\n /******/\n }\n /******/\n // expose the modules object (__webpack_modules__)\n\n /******/\n\n\n __webpack_require__.m = modules;\n /******/\n // expose the module cache\n\n /******/\n\n __webpack_require__.c = installedModules;\n /******/\n // identity function for calling harmony imports with the correct context\n\n /******/\n\n __webpack_require__.i = function (value) {\n return value;\n };\n /******/\n // define getter function for harmony exports\n\n /******/\n\n\n __webpack_require__.d = function (exports, name, getter) {\n /******/\n if (!__webpack_require__.o(exports, name)) {\n /******/\n Object.defineProperty(exports, name, {\n /******/\n configurable: false,\n\n /******/\n enumerable: true,\n\n /******/\n get: getter\n /******/\n\n });\n /******/\n }\n /******/\n\n };\n /******/\n // define __esModule on exports\n\n /******/\n\n\n __webpack_require__.r = function (exports) {\n /******/\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n /******/\n };\n /******/\n // getDefaultExport function for compatibility with non-harmony modules\n\n /******/\n\n\n __webpack_require__.n = function (module) {\n /******/\n var getter = module && module.__esModule ?\n /******/\n function getDefault() {\n return module['default'];\n } :\n /******/\n function getModuleExports() {\n return module;\n };\n /******/\n\n __webpack_require__.d(getter, 'a', getter);\n /******/\n\n\n return getter;\n /******/\n };\n /******/\n // Object.prototype.hasOwnProperty.call\n\n /******/\n\n\n __webpack_require__.o = function (object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n };\n /******/\n // __webpack_public_path__\n\n /******/\n\n\n __webpack_require__.p = \"/\";\n /******/\n // on error function for async loading\n\n /******/\n\n __webpack_require__.oe = function (err) {\n console.error(err);\n throw err;\n };\n\n var f = __webpack_require__(__webpack_require__.s = ENTRY_MODULE);\n\n return f.default || f; // try to call default if defined to also support babel esmodule exports\n }\n\n var moduleNameReqExp = '[\\\\.|\\\\-|\\\\+|\\\\w|\\/|@]+';\n var dependencyRegExp = '\\\\(\\\\s*(\\/\\\\*.*?\\\\*\\/)?\\\\s*.*?(' + moduleNameReqExp + ').*?\\\\)'; // additional chars when output.pathinfo is true\n // http://stackoverflow.com/a/2593661/130442\n\n function quoteRegExp(str) {\n return (str + '').replace(/[.?*+^$[\\]\\\\(){}|-]/g, '\\\\$&');\n }\n\n function isNumeric(n) {\n return !isNaN(1 * n); // 1 * n converts integers, integers as string (\"123\"), 1e3 and \"1e3\" to integers and strings to NaN\n }\n\n function getModuleDependencies(sources, module, queueName) {\n var retval = {};\n retval[queueName] = [];\n var fnString = module.toString();\n var wrapperSignature = fnString.match(/^function\\s?\\w*\\(\\w+,\\s*\\w+,\\s*(\\w+)\\)/);\n if (!wrapperSignature) return retval;\n var webpackRequireName = wrapperSignature[1]; // main bundle deps\n\n var re = new RegExp('(\\\\\\\\n|\\\\W)' + quoteRegExp(webpackRequireName) + dependencyRegExp, 'g');\n var match;\n\n while (match = re.exec(fnString)) {\n if (match[3] === 'dll-reference') continue;\n retval[queueName].push(match[3]);\n } // dll deps\n\n\n re = new RegExp('\\\\(' + quoteRegExp(webpackRequireName) + '\\\\(\"(dll-reference\\\\s(' + moduleNameReqExp + '))\"\\\\)\\\\)' + dependencyRegExp, 'g');\n\n while (match = re.exec(fnString)) {\n if (!sources[match[2]]) {\n retval[queueName].push(match[1]);\n sources[match[2]] = __webpack_require__(match[1]).m;\n }\n\n retval[match[2]] = retval[match[2]] || [];\n retval[match[2]].push(match[4]);\n } // convert 1e3 back to 1000 - this can be important after uglify-js converted 1000 to 1e3\n\n\n var keys = Object.keys(retval);\n\n for (var i = 0; i < keys.length; i++) {\n for (var j = 0; j < retval[keys[i]].length; j++) {\n if (isNumeric(retval[keys[i]][j])) {\n retval[keys[i]][j] = 1 * retval[keys[i]][j];\n }\n }\n }\n\n return retval;\n }\n\n function hasValuesInQueues(queues) {\n var keys = Object.keys(queues);\n return keys.reduce(function (hasValues, key) {\n return hasValues || queues[key].length > 0;\n }, false);\n }\n\n function getRequiredModules(sources, moduleId) {\n var modulesQueue = {\n main: [moduleId]\n };\n var requiredModules = {\n main: []\n };\n var seenModules = {\n main: {}\n };\n\n while (hasValuesInQueues(modulesQueue)) {\n var queues = Object.keys(modulesQueue);\n\n for (var i = 0; i < queues.length; i++) {\n var queueName = queues[i];\n var queue = modulesQueue[queueName];\n var moduleToCheck = queue.pop();\n seenModules[queueName] = seenModules[queueName] || {};\n if (seenModules[queueName][moduleToCheck] || !sources[queueName][moduleToCheck]) continue;\n seenModules[queueName][moduleToCheck] = true;\n requiredModules[queueName] = requiredModules[queueName] || [];\n requiredModules[queueName].push(moduleToCheck);\n var newModules = getModuleDependencies(sources, sources[queueName][moduleToCheck], queueName);\n var newModulesKeys = Object.keys(newModules);\n\n for (var j = 0; j < newModulesKeys.length; j++) {\n modulesQueue[newModulesKeys[j]] = modulesQueue[newModulesKeys[j]] || [];\n modulesQueue[newModulesKeys[j]] = modulesQueue[newModulesKeys[j]].concat(newModules[newModulesKeys[j]]);\n }\n }\n }\n\n return requiredModules;\n }\n\n module.exports = function (moduleId, options) {\n options = options || {};\n var sources = {\n main: __webpack_require__.m\n };\n var requiredModules = options.all ? {\n main: Object.keys(sources.main)\n } : getRequiredModules(sources, moduleId);\n var src = '';\n Object.keys(requiredModules).filter(function (m) {\n return m !== 'main';\n }).forEach(function (module) {\n var entryModule = 0;\n\n while (requiredModules[module][entryModule]) {\n entryModule++;\n }\n\n requiredModules[module].push(entryModule);\n sources[module][entryModule] = '(function(module, exports, __webpack_require__) { module.exports = __webpack_require__; })';\n src = src + 'var ' + module + ' = (' + webpackBootstrapFunc.toString().replace('ENTRY_MODULE', JSON.stringify(entryModule)) + ')({' + requiredModules[module].map(function (id) {\n return '' + JSON.stringify(id) + ': ' + sources[module][id].toString();\n }).join(',') + '});\\n';\n });\n src = src + 'new ((' + webpackBootstrapFunc.toString().replace('ENTRY_MODULE', JSON.stringify(moduleId)) + ')({' + requiredModules.main.map(function (id) {\n return '' + JSON.stringify(id) + ': ' + sources.main[id].toString();\n }).join(',') + '}))(self);';\n var blob = new window.Blob([src], {\n type: 'text/javascript'\n });\n\n if (options.bare) {\n return blob;\n }\n\n var URL = window.URL || window.webkitURL || window.mozURL || window.msURL;\n var workerUrl = URL.createObjectURL(blob);\n var worker = new window.Worker(workerUrl);\n worker.objectURL = workerUrl;\n return worker;\n };\n /***/\n\n },\n\n /***/\n \"./src/config.ts\":\n /*!***********************!*\\\n !*** ./src/config.ts ***!\n \\***********************/\n\n /*! exports provided: hlsDefaultConfig, mergeConfig, enableStreamingMode */\n\n /***/\n function srcConfigTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"hlsDefaultConfig\", function () {\n return hlsDefaultConfig;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"mergeConfig\", function () {\n return mergeConfig;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"enableStreamingMode\", function () {\n return enableStreamingMode;\n });\n /* harmony import */\n\n\n var _controller_abr_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./controller/abr-controller */\n \"./src/controller/abr-controller.ts\");\n /* harmony import */\n\n\n var _controller_audio_stream_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ./controller/audio-stream-controller */\n \"./src/controller/audio-stream-controller.ts\");\n /* harmony import */\n\n\n var _controller_audio_track_controller__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ./controller/audio-track-controller */\n \"./src/controller/audio-track-controller.ts\");\n /* harmony import */\n\n\n var _controller_subtitle_stream_controller__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\n /*! ./controller/subtitle-stream-controller */\n \"./src/controller/subtitle-stream-controller.ts\");\n /* harmony import */\n\n\n var _controller_subtitle_track_controller__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\n /*! ./controller/subtitle-track-controller */\n \"./src/controller/subtitle-track-controller.ts\");\n /* harmony import */\n\n\n var _controller_buffer_controller__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(\n /*! ./controller/buffer-controller */\n \"./src/controller/buffer-controller.ts\");\n /* harmony import */\n\n\n var _controller_timeline_controller__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(\n /*! ./controller/timeline-controller */\n \"./src/controller/timeline-controller.ts\");\n /* harmony import */\n\n\n var _controller_cap_level_controller__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(\n /*! ./controller/cap-level-controller */\n \"./src/controller/cap-level-controller.ts\");\n /* harmony import */\n\n\n var _controller_fps_controller__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(\n /*! ./controller/fps-controller */\n \"./src/controller/fps-controller.ts\");\n /* harmony import */\n\n\n var _controller_eme_controller__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(\n /*! ./controller/eme-controller */\n \"./src/controller/eme-controller.ts\");\n /* harmony import */\n\n\n var _controller_cmcd_controller__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(\n /*! ./controller/cmcd-controller */\n \"./src/controller/cmcd-controller.ts\");\n /* harmony import */\n\n\n var _utils_xhr_loader__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(\n /*! ./utils/xhr-loader */\n \"./src/utils/xhr-loader.ts\");\n /* harmony import */\n\n\n var _utils_fetch_loader__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(\n /*! ./utils/fetch-loader */\n \"./src/utils/fetch-loader.ts\");\n /* harmony import */\n\n\n var _utils_cues__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(\n /*! ./utils/cues */\n \"./src/utils/cues.ts\");\n /* harmony import */\n\n\n var _utils_mediakeys_helper__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(\n /*! ./utils/mediakeys-helper */\n \"./src/utils/mediakeys-helper.ts\");\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(\n /*! ./utils/logger */\n \"./src/utils/logger.ts\");\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n }\n\n function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n } // If possible, keep hlsDefaultConfig shallow\n // It is cloned whenever a new Hls instance is created, by keeping the config\n // shallow the properties are cloned, and we don't end up manipulating the default\n\n\n var hlsDefaultConfig = _objectSpread(_objectSpread({\n autoStartLoad: true,\n // used by stream-controller\n startPosition: -1,\n // used by stream-controller\n defaultAudioCodec: undefined,\n // used by stream-controller\n debug: false,\n // used by logger\n capLevelOnFPSDrop: false,\n // used by fps-controller\n capLevelToPlayerSize: false,\n // used by cap-level-controller\n initialLiveManifestSize: 1,\n // used by stream-controller\n maxBufferLength: 30,\n // used by stream-controller\n backBufferLength: Infinity,\n // used by buffer-controller\n maxBufferSize: 60 * 1000 * 1000,\n // used by stream-controller\n maxBufferHole: 0.1,\n // used by stream-controller\n highBufferWatchdogPeriod: 2,\n // used by stream-controller\n nudgeOffset: 0.1,\n // used by stream-controller\n nudgeMaxRetry: 3,\n // used by stream-controller\n maxFragLookUpTolerance: 0.25,\n // used by stream-controller\n liveSyncDurationCount: 3,\n // used by latency-controller\n liveMaxLatencyDurationCount: Infinity,\n // used by latency-controller\n liveSyncDuration: undefined,\n // used by latency-controller\n liveMaxLatencyDuration: undefined,\n // used by latency-controller\n maxLiveSyncPlaybackRate: 1,\n // used by latency-controller\n liveDurationInfinity: false,\n // used by buffer-controller\n liveBackBufferLength: null,\n // used by buffer-controller\n maxMaxBufferLength: 600,\n // used by stream-controller\n enableWorker: true,\n // used by demuxer\n enableSoftwareAES: true,\n // used by decrypter\n manifestLoadingTimeOut: 10000,\n // used by playlist-loader\n manifestLoadingMaxRetry: 1,\n // used by playlist-loader\n manifestLoadingRetryDelay: 1000,\n // used by playlist-loader\n manifestLoadingMaxRetryTimeout: 64000,\n // used by playlist-loader\n startLevel: undefined,\n // used by level-controller\n levelLoadingTimeOut: 10000,\n // used by playlist-loader\n levelLoadingMaxRetry: 4,\n // used by playlist-loader\n levelLoadingRetryDelay: 1000,\n // used by playlist-loader\n levelLoadingMaxRetryTimeout: 64000,\n // used by playlist-loader\n fragLoadingTimeOut: 20000,\n // used by fragment-loader\n fragLoadingMaxRetry: 6,\n // used by fragment-loader\n fragLoadingRetryDelay: 1000,\n // used by fragment-loader\n fragLoadingMaxRetryTimeout: 64000,\n // used by fragment-loader\n startFragPrefetch: false,\n // used by stream-controller\n fpsDroppedMonitoringPeriod: 5000,\n // used by fps-controller\n fpsDroppedMonitoringThreshold: 0.2,\n // used by fps-controller\n appendErrorMaxRetry: 3,\n // used by buffer-controller\n loader: _utils_xhr_loader__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n // loader: FetchLoader,\n fLoader: undefined,\n // used by fragment-loader\n pLoader: undefined,\n // used by playlist-loader\n xhrSetup: undefined,\n // used by xhr-loader\n licenseXhrSetup: undefined,\n // used by eme-controller\n licenseResponseCallback: undefined,\n // used by eme-controller\n abrController: _controller_abr_controller__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n bufferController: _controller_buffer_controller__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n capLevelController: _controller_cap_level_controller__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n fpsController: _controller_fps_controller__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n stretchShortVideoTrack: false,\n // used by mp4-remuxer\n maxAudioFramesDrift: 1,\n // used by mp4-remuxer\n forceKeyFrameOnDiscontinuity: true,\n // used by ts-demuxer\n abrEwmaFastLive: 3,\n // used by abr-controller\n abrEwmaSlowLive: 9,\n // used by abr-controller\n abrEwmaFastVoD: 3,\n // used by abr-controller\n abrEwmaSlowVoD: 9,\n // used by abr-controller\n abrEwmaDefaultEstimate: 5e5,\n // 500 kbps // used by abr-controller\n abrBandWidthFactor: 0.95,\n // used by abr-controller\n abrBandWidthUpFactor: 0.7,\n // used by abr-controller\n abrMaxWithRealBitrate: false,\n // used by abr-controller\n maxStarvationDelay: 4,\n // used by abr-controller\n maxLoadingDelay: 4,\n // used by abr-controller\n minAutoBitrate: 0,\n // used by hls\n emeEnabled: false,\n // used by eme-controller\n widevineLicenseUrl: undefined,\n // used by eme-controller\n drmSystemOptions: {},\n // used by eme-controller\n requestMediaKeySystemAccessFunc: _utils_mediakeys_helper__WEBPACK_IMPORTED_MODULE_14__[\"requestMediaKeySystemAccess\"],\n // used by eme-controller\n testBandwidth: true,\n progressive: false,\n lowLatencyMode: true,\n cmcd: undefined\n }, timelineConfig()), {}, {\n subtitleStreamController: true ? _controller_subtitle_stream_controller__WEBPACK_IMPORTED_MODULE_3__[\"SubtitleStreamController\"] : undefined,\n subtitleTrackController: true ? _controller_subtitle_track_controller__WEBPACK_IMPORTED_MODULE_4__[\"default\"] : undefined,\n timelineController: true ? _controller_timeline_controller__WEBPACK_IMPORTED_MODULE_6__[\"TimelineController\"] : undefined,\n audioStreamController: true ? _controller_audio_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"default\"] : undefined,\n audioTrackController: true ? _controller_audio_track_controller__WEBPACK_IMPORTED_MODULE_2__[\"default\"] : undefined,\n emeController: true ? _controller_eme_controller__WEBPACK_IMPORTED_MODULE_9__[\"default\"] : undefined,\n cmcdController: true ? _controller_cmcd_controller__WEBPACK_IMPORTED_MODULE_10__[\"default\"] : undefined\n });\n\n function timelineConfig() {\n return {\n cueHandler: _utils_cues__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n // used by timeline-controller\n enableCEA708Captions: true,\n // used by timeline-controller\n enableWebVTT: true,\n // used by timeline-controller\n enableIMSC1: true,\n // used by timeline-controller\n captionsTextTrack1Label: 'English',\n // used by timeline-controller\n captionsTextTrack1LanguageCode: 'en',\n // used by timeline-controller\n captionsTextTrack2Label: 'Spanish',\n // used by timeline-controller\n captionsTextTrack2LanguageCode: 'es',\n // used by timeline-controller\n captionsTextTrack3Label: 'Unknown CC',\n // used by timeline-controller\n captionsTextTrack3LanguageCode: '',\n // used by timeline-controller\n captionsTextTrack4Label: 'Unknown CC',\n // used by timeline-controller\n captionsTextTrack4LanguageCode: '',\n // used by timeline-controller\n renderTextTracksNatively: true\n };\n }\n\n function mergeConfig(defaultConfig, userConfig) {\n if ((userConfig.liveSyncDurationCount || userConfig.liveMaxLatencyDurationCount) && (userConfig.liveSyncDuration || userConfig.liveMaxLatencyDuration)) {\n throw new Error(\"Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration\");\n }\n\n if (userConfig.liveMaxLatencyDurationCount !== undefined && (userConfig.liveSyncDurationCount === undefined || userConfig.liveMaxLatencyDurationCount <= userConfig.liveSyncDurationCount)) {\n throw new Error('Illegal hls.js config: \"liveMaxLatencyDurationCount\" must be greater than \"liveSyncDurationCount\"');\n }\n\n if (userConfig.liveMaxLatencyDuration !== undefined && (userConfig.liveSyncDuration === undefined || userConfig.liveMaxLatencyDuration <= userConfig.liveSyncDuration)) {\n throw new Error('Illegal hls.js config: \"liveMaxLatencyDuration\" must be greater than \"liveSyncDuration\"');\n }\n\n return _extends({}, defaultConfig, userConfig);\n }\n\n function enableStreamingMode(config) {\n var currentLoader = config.loader;\n\n if (currentLoader !== _utils_fetch_loader__WEBPACK_IMPORTED_MODULE_12__[\"default\"] && currentLoader !== _utils_xhr_loader__WEBPACK_IMPORTED_MODULE_11__[\"default\"]) {\n // If a developer has configured their own loader, respect that choice\n _utils_logger__WEBPACK_IMPORTED_MODULE_15__[\"logger\"].log('[config]: Custom loader detected, cannot enable progressive streaming');\n\n config.progressive = false;\n } else {\n var canStreamProgressively = Object(_utils_fetch_loader__WEBPACK_IMPORTED_MODULE_12__[\"fetchSupported\"])();\n\n if (canStreamProgressively) {\n config.loader = _utils_fetch_loader__WEBPACK_IMPORTED_MODULE_12__[\"default\"];\n config.progressive = true;\n config.enableSoftwareAES = true;\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_15__[\"logger\"].log('[config]: Progressive streaming enabled, using FetchLoader');\n }\n }\n }\n /***/\n\n },\n\n /***/\n \"./src/controller/abr-controller.ts\":\n /*!******************************************!*\\\n !*** ./src/controller/abr-controller.ts ***!\n \\******************************************/\n\n /*! exports provided: default */\n\n /***/\n function srcControllerAbrControllerTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony import */\n\n\n var _home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./src/polyfills/number */\n \"./src/polyfills/number.ts\");\n /* harmony import */\n\n\n var _utils_ewma_bandwidth_estimator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ../utils/ewma-bandwidth-estimator */\n \"./src/utils/ewma-bandwidth-estimator.ts\");\n /* harmony import */\n\n\n var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ../events */\n \"./src/events.ts\");\n /* harmony import */\n\n\n var _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\n /*! ../utils/buffer-helper */\n \"./src/utils/buffer-helper.ts\");\n /* harmony import */\n\n\n var _errors__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\n /*! ../errors */\n \"./src/errors.ts\");\n /* harmony import */\n\n\n var _types_loader__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(\n /*! ../types/loader */\n \"./src/types/loader.ts\");\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(\n /*! ../utils/logger */\n \"./src/utils/logger.ts\");\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n var AbrController = /*#__PURE__*/function () {\n function AbrController(hls) {\n this.hls = void 0;\n this.lastLoadedFragLevel = 0;\n this._nextAutoLevel = -1;\n this.timer = void 0;\n this.onCheck = this._abandonRulesCheck.bind(this);\n this.fragCurrent = null;\n this.partCurrent = null;\n this.bitrateTestDelay = 0;\n this.bwEstimator = void 0;\n this.hls = hls;\n var config = hls.config;\n this.bwEstimator = new _utils_ewma_bandwidth_estimator__WEBPACK_IMPORTED_MODULE_1__[\"default\"](config.abrEwmaSlowVoD, config.abrEwmaFastVoD, config.abrEwmaDefaultEstimate);\n this.registerListeners();\n }\n\n var _proto = AbrController.prototype;\n\n _proto.registerListeners = function registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_LOADING, this.onFragLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_LOADED, this.onFragLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_BUFFERED, this.onFragBuffered, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].LEVEL_LOADED, this.onLevelLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].ERROR, this.onError, this);\n };\n\n _proto.unregisterListeners = function unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_LOADING, this.onFragLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_LOADED, this.onFragLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_BUFFERED, this.onFragBuffered, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].LEVEL_LOADED, this.onLevelLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].ERROR, this.onError, this);\n };\n\n _proto.destroy = function destroy() {\n this.unregisterListeners();\n this.clearTimer(); // @ts-ignore\n\n this.hls = this.onCheck = null;\n this.fragCurrent = this.partCurrent = null;\n };\n\n _proto.onFragLoading = function onFragLoading(event, data) {\n var frag = data.frag;\n\n if (frag.type === _types_loader__WEBPACK_IMPORTED_MODULE_5__[\"PlaylistLevelType\"].MAIN) {\n if (!this.timer) {\n var _data$part;\n\n this.fragCurrent = frag;\n this.partCurrent = (_data$part = data.part) != null ? _data$part : null;\n this.timer = self.setInterval(this.onCheck, 100);\n }\n }\n };\n\n _proto.onLevelLoaded = function onLevelLoaded(event, data) {\n var config = this.hls.config;\n\n if (data.details.live) {\n this.bwEstimator.update(config.abrEwmaSlowLive, config.abrEwmaFastLive);\n } else {\n this.bwEstimator.update(config.abrEwmaSlowVoD, config.abrEwmaFastVoD);\n }\n }\n /*\n This method monitors the download rate of the current fragment, and will downswitch if that fragment will not load\n quickly enough to prevent underbuffering\n */\n ;\n\n _proto._abandonRulesCheck = function _abandonRulesCheck() {\n var frag = this.fragCurrent,\n part = this.partCurrent,\n hls = this.hls;\n var autoLevelEnabled = hls.autoLevelEnabled,\n config = hls.config,\n media = hls.media;\n\n if (!frag || !media) {\n return;\n }\n\n var stats = part ? part.stats : frag.stats;\n var duration = part ? part.duration : frag.duration; // If loading has been aborted and not in lowLatencyMode, stop timer and return\n\n if (stats.aborted) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].warn('frag loader destroy or aborted, disarm abandonRules');\n\n this.clearTimer(); // reset forced auto level value so that next level will be selected\n\n this._nextAutoLevel = -1;\n return;\n } // This check only runs if we're in ABR mode and actually playing\n\n\n if (!autoLevelEnabled || media.paused || !media.playbackRate || !media.readyState) {\n return;\n }\n\n var requestDelay = performance.now() - stats.loading.start;\n var playbackRate = Math.abs(media.playbackRate); // In order to work with a stable bandwidth, only begin monitoring bandwidth after half of the fragment has been loaded\n\n if (requestDelay <= 500 * duration / playbackRate) {\n return;\n }\n\n var levels = hls.levels,\n minAutoLevel = hls.minAutoLevel;\n var level = levels[frag.level];\n var expectedLen = stats.total || Math.max(stats.loaded, Math.round(duration * level.maxBitrate / 8));\n var loadRate = Math.max(1, stats.bwEstimate ? stats.bwEstimate / 8 : stats.loaded * 1000 / requestDelay); // fragLoadDelay is an estimate of the time (in seconds) it will take to buffer the entire fragment\n\n var fragLoadedDelay = (expectedLen - stats.loaded) / loadRate;\n var pos = media.currentTime; // bufferStarvationDelay is an estimate of the amount time (in seconds) it will take to exhaust the buffer\n\n var bufferStarvationDelay = (_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].bufferInfo(media, pos, config.maxBufferHole).end - pos) / playbackRate; // Attempt an emergency downswitch only if less than 2 fragment lengths are buffered, and the time to finish loading\n // the current fragment is greater than the amount of buffer we have left\n\n if (bufferStarvationDelay >= 2 * duration / playbackRate || fragLoadedDelay <= bufferStarvationDelay) {\n return;\n }\n\n var fragLevelNextLoadedDelay = Number.POSITIVE_INFINITY;\n var nextLoadLevel; // Iterate through lower level and try to find the largest one that avoids rebuffering\n\n for (nextLoadLevel = frag.level - 1; nextLoadLevel > minAutoLevel; nextLoadLevel--) {\n // compute time to load next fragment at lower level\n // 0.8 : consider only 80% of current bw to be conservative\n // 8 = bits per byte (bps/Bps)\n var levelNextBitrate = levels[nextLoadLevel].maxBitrate;\n fragLevelNextLoadedDelay = duration * levelNextBitrate / (8 * 0.8 * loadRate);\n\n if (fragLevelNextLoadedDelay < bufferStarvationDelay) {\n break;\n }\n } // Only emergency switch down if it takes less time to load a new fragment at lowest level instead of continuing\n // to load the current one\n\n\n if (fragLevelNextLoadedDelay >= fragLoadedDelay) {\n return;\n }\n\n var bwEstimate = this.bwEstimator.getEstimate();\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].warn(\"Fragment \" + frag.sn + (part ? ' part ' + part.index : '') + \" of level \" + frag.level + \" is loading too slowly and will cause an underbuffer; aborting and switching to level \" + nextLoadLevel + \"\\n Current BW estimate: \" + (Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(bwEstimate) ? (bwEstimate / 1024).toFixed(3) : 'Unknown') + \" Kb/s\\n Estimated load time for current fragment: \" + fragLoadedDelay.toFixed(3) + \" s\\n Estimated load time for the next fragment: \" + fragLevelNextLoadedDelay.toFixed(3) + \" s\\n Time to underbuffer: \" + bufferStarvationDelay.toFixed(3) + \" s\");\n\n hls.nextLoadLevel = nextLoadLevel;\n this.bwEstimator.sample(requestDelay, stats.loaded);\n this.clearTimer();\n\n if (frag.loader) {\n this.fragCurrent = this.partCurrent = null;\n frag.loader.abort();\n }\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_LOAD_EMERGENCY_ABORTED, {\n frag: frag,\n part: part,\n stats: stats\n });\n };\n\n _proto.onFragLoaded = function onFragLoaded(event, _ref) {\n var frag = _ref.frag,\n part = _ref.part;\n\n if (frag.type === _types_loader__WEBPACK_IMPORTED_MODULE_5__[\"PlaylistLevelType\"].MAIN && Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(frag.sn)) {\n var stats = part ? part.stats : frag.stats;\n var duration = part ? part.duration : frag.duration; // stop monitoring bw once frag loaded\n\n this.clearTimer(); // store level id after successful fragment load\n\n this.lastLoadedFragLevel = frag.level; // reset forced auto level value so that next level will be selected\n\n this._nextAutoLevel = -1; // compute level average bitrate\n\n if (this.hls.config.abrMaxWithRealBitrate) {\n var level = this.hls.levels[frag.level];\n var loadedBytes = (level.loaded ? level.loaded.bytes : 0) + stats.loaded;\n var loadedDuration = (level.loaded ? level.loaded.duration : 0) + duration;\n level.loaded = {\n bytes: loadedBytes,\n duration: loadedDuration\n };\n level.realBitrate = Math.round(8 * loadedBytes / loadedDuration);\n }\n\n if (frag.bitrateTest) {\n var fragBufferedData = {\n stats: stats,\n frag: frag,\n part: part,\n id: frag.type\n };\n this.onFragBuffered(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_BUFFERED, fragBufferedData);\n frag.bitrateTest = false;\n }\n }\n };\n\n _proto.onFragBuffered = function onFragBuffered(event, data) {\n var frag = data.frag,\n part = data.part;\n var stats = part ? part.stats : frag.stats;\n\n if (stats.aborted) {\n return;\n } // Only count non-alt-audio frags which were actually buffered in our BW calculations\n\n\n if (frag.type !== _types_loader__WEBPACK_IMPORTED_MODULE_5__[\"PlaylistLevelType\"].MAIN || frag.sn === 'initSegment') {\n return;\n } // Use the difference between parsing and request instead of buffering and request to compute fragLoadingProcessing;\n // rationale is that buffer appending only happens once media is attached. This can happen when config.startFragPrefetch\n // is used. If we used buffering in that case, our BW estimate sample will be very large.\n\n\n var processingMs = stats.parsing.end - stats.loading.start;\n this.bwEstimator.sample(processingMs, stats.loaded);\n stats.bwEstimate = this.bwEstimator.getEstimate();\n\n if (frag.bitrateTest) {\n this.bitrateTestDelay = processingMs / 1000;\n } else {\n this.bitrateTestDelay = 0;\n }\n };\n\n _proto.onError = function onError(event, data) {\n // stop timer in case of frag loading error\n switch (data.details) {\n case _errors__WEBPACK_IMPORTED_MODULE_4__[\"ErrorDetails\"].FRAG_LOAD_ERROR:\n case _errors__WEBPACK_IMPORTED_MODULE_4__[\"ErrorDetails\"].FRAG_LOAD_TIMEOUT:\n this.clearTimer();\n break;\n\n default:\n break;\n }\n };\n\n _proto.clearTimer = function clearTimer() {\n self.clearInterval(this.timer);\n this.timer = undefined;\n } // return next auto level\n ;\n\n _proto.getNextABRAutoLevel = function getNextABRAutoLevel() {\n var fragCurrent = this.fragCurrent,\n partCurrent = this.partCurrent,\n hls = this.hls;\n var maxAutoLevel = hls.maxAutoLevel,\n config = hls.config,\n minAutoLevel = hls.minAutoLevel,\n media = hls.media;\n var currentFragDuration = partCurrent ? partCurrent.duration : fragCurrent ? fragCurrent.duration : 0;\n var pos = media ? media.currentTime : 0; // playbackRate is the absolute value of the playback rate; if media.playbackRate is 0, we use 1 to load as\n // if we're playing back at the normal rate.\n\n var playbackRate = media && media.playbackRate !== 0 ? Math.abs(media.playbackRate) : 1.0;\n var avgbw = this.bwEstimator ? this.bwEstimator.getEstimate() : config.abrEwmaDefaultEstimate; // bufferStarvationDelay is the wall-clock time left until the playback buffer is exhausted.\n\n var bufferStarvationDelay = (_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].bufferInfo(media, pos, config.maxBufferHole).end - pos) / playbackRate; // First, look to see if we can find a level matching with our avg bandwidth AND that could also guarantee no rebuffering at all\n\n var bestLevel = this.findBestLevel(avgbw, minAutoLevel, maxAutoLevel, bufferStarvationDelay, config.abrBandWidthFactor, config.abrBandWidthUpFactor);\n\n if (bestLevel >= 0) {\n return bestLevel;\n }\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].trace((bufferStarvationDelay ? 'rebuffering expected' : 'buffer is empty') + \", finding optimal quality level\"); // not possible to get rid of rebuffering ... let's try to find level that will guarantee less than maxStarvationDelay of rebuffering\n // if no matching level found, logic will return 0\n\n\n var maxStarvationDelay = currentFragDuration ? Math.min(currentFragDuration, config.maxStarvationDelay) : config.maxStarvationDelay;\n var bwFactor = config.abrBandWidthFactor;\n var bwUpFactor = config.abrBandWidthUpFactor;\n\n if (!bufferStarvationDelay) {\n // in case buffer is empty, let's check if previous fragment was loaded to perform a bitrate test\n var bitrateTestDelay = this.bitrateTestDelay;\n\n if (bitrateTestDelay) {\n // if it is the case, then we need to adjust our max starvation delay using maxLoadingDelay config value\n // max video loading delay used in automatic start level selection :\n // in that mode ABR controller will ensure that video loading time (ie the time to fetch the first fragment at lowest quality level +\n // the time to fetch the fragment at the appropriate quality level is less than ```maxLoadingDelay``` )\n // cap maxLoadingDelay and ensure it is not bigger 'than bitrate test' frag duration\n var maxLoadingDelay = currentFragDuration ? Math.min(currentFragDuration, config.maxLoadingDelay) : config.maxLoadingDelay;\n maxStarvationDelay = maxLoadingDelay - bitrateTestDelay;\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].trace(\"bitrate test took \" + Math.round(1000 * bitrateTestDelay) + \"ms, set first fragment max fetchDuration to \" + Math.round(1000 * maxStarvationDelay) + \" ms\"); // don't use conservative factor on bitrate test\n\n\n bwFactor = bwUpFactor = 1;\n }\n }\n\n bestLevel = this.findBestLevel(avgbw, minAutoLevel, maxAutoLevel, bufferStarvationDelay + maxStarvationDelay, bwFactor, bwUpFactor);\n return Math.max(bestLevel, 0);\n };\n\n _proto.findBestLevel = function findBestLevel(currentBw, minAutoLevel, maxAutoLevel, maxFetchDuration, bwFactor, bwUpFactor) {\n var _level$details;\n\n var fragCurrent = this.fragCurrent,\n partCurrent = this.partCurrent,\n currentLevel = this.lastLoadedFragLevel;\n var levels = this.hls.levels;\n var level = levels[currentLevel];\n var live = !!(level !== null && level !== void 0 && (_level$details = level.details) !== null && _level$details !== void 0 && _level$details.live);\n var currentCodecSet = level === null || level === void 0 ? void 0 : level.codecSet;\n var currentFragDuration = partCurrent ? partCurrent.duration : fragCurrent ? fragCurrent.duration : 0;\n\n for (var i = maxAutoLevel; i >= minAutoLevel; i--) {\n var levelInfo = levels[i];\n\n if (!levelInfo || currentCodecSet && levelInfo.codecSet !== currentCodecSet) {\n continue;\n }\n\n var levelDetails = levelInfo.details;\n var avgDuration = (partCurrent ? levelDetails === null || levelDetails === void 0 ? void 0 : levelDetails.partTarget : levelDetails === null || levelDetails === void 0 ? void 0 : levelDetails.averagetargetduration) || currentFragDuration;\n var adjustedbw = void 0; // follow algorithm captured from stagefright :\n // https://android.googlesource.com/platform/frameworks/av/+/master/media/libstagefright/httplive/LiveSession.cpp\n // Pick the highest bandwidth stream below or equal to estimated bandwidth.\n // consider only 80% of the available bandwidth, but if we are switching up,\n // be even more conservative (70%) to avoid overestimating and immediately\n // switching back.\n\n if (i <= currentLevel) {\n adjustedbw = bwFactor * currentBw;\n } else {\n adjustedbw = bwUpFactor * currentBw;\n }\n\n var bitrate = levels[i].maxBitrate;\n var fetchDuration = bitrate * avgDuration / adjustedbw;\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].trace(\"level/adjustedbw/bitrate/avgDuration/maxFetchDuration/fetchDuration: \" + i + \"/\" + Math.round(adjustedbw) + \"/\" + bitrate + \"/\" + avgDuration + \"/\" + maxFetchDuration + \"/\" + fetchDuration); // if adjusted bw is greater than level bitrate AND\n\n\n if (adjustedbw > bitrate && ( // fragment fetchDuration unknown OR live stream OR fragment fetchDuration less than max allowed fetch duration, then this level matches\n // we don't account for max Fetch Duration for live streams, this is to avoid switching down when near the edge of live sliding window ...\n // special case to support startLevel = -1 (bitrateTest) on live streams : in that case we should not exit loop so that findBestLevel will return -1\n !fetchDuration || live && !this.bitrateTestDelay || fetchDuration < maxFetchDuration)) {\n // as we are looping from highest to lowest, this will return the best achievable quality level\n return i;\n }\n } // not enough time budget even with quality level 0 ... rebuffering might happen\n\n\n return -1;\n };\n\n _createClass(AbrController, [{\n key: \"nextAutoLevel\",\n get: function get() {\n var forcedAutoLevel = this._nextAutoLevel;\n var bwEstimator = this.bwEstimator; // in case next auto level has been forced, and bw not available or not reliable, return forced value\n\n if (forcedAutoLevel !== -1 && (!bwEstimator || !bwEstimator.canEstimate())) {\n return forcedAutoLevel;\n } // compute next level using ABR logic\n\n\n var nextABRAutoLevel = this.getNextABRAutoLevel(); // if forced auto level has been defined, use it to cap ABR computed quality level\n\n if (forcedAutoLevel !== -1) {\n nextABRAutoLevel = Math.min(forcedAutoLevel, nextABRAutoLevel);\n }\n\n return nextABRAutoLevel;\n },\n set: function set(nextLevel) {\n this._nextAutoLevel = nextLevel;\n }\n }]);\n\n return AbrController;\n }();\n /* harmony default export */\n\n\n __webpack_exports__[\"default\"] = AbrController;\n /***/\n },\n\n /***/\n \"./src/controller/audio-stream-controller.ts\":\n /*!***************************************************!*\\\n !*** ./src/controller/audio-stream-controller.ts ***!\n \\***************************************************/\n\n /*! exports provided: default */\n\n /***/\n function srcControllerAudioStreamControllerTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony import */\n\n\n var _home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./src/polyfills/number */\n \"./src/polyfills/number.ts\");\n /* harmony import */\n\n\n var _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ./base-stream-controller */\n \"./src/controller/base-stream-controller.ts\");\n /* harmony import */\n\n\n var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ../events */\n \"./src/events.ts\");\n /* harmony import */\n\n\n var _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\n /*! ../utils/buffer-helper */\n \"./src/utils/buffer-helper.ts\");\n /* harmony import */\n\n\n var _fragment_tracker__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\n /*! ./fragment-tracker */\n \"./src/controller/fragment-tracker.ts\");\n /* harmony import */\n\n\n var _types_level__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(\n /*! ../types/level */\n \"./src/types/level.ts\");\n /* harmony import */\n\n\n var _types_loader__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(\n /*! ../types/loader */\n \"./src/types/loader.ts\");\n /* harmony import */\n\n\n var _loader_fragment__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(\n /*! ../loader/fragment */\n \"./src/loader/fragment.ts\");\n /* harmony import */\n\n\n var _demux_chunk_cache__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(\n /*! ../demux/chunk-cache */\n \"./src/demux/chunk-cache.ts\");\n /* harmony import */\n\n\n var _demux_transmuxer_interface__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(\n /*! ../demux/transmuxer-interface */\n \"./src/demux/transmuxer-interface.ts\");\n /* harmony import */\n\n\n var _types_transmuxer__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(\n /*! ../types/transmuxer */\n \"./src/types/transmuxer.ts\");\n /* harmony import */\n\n\n var _fragment_finders__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(\n /*! ./fragment-finders */\n \"./src/controller/fragment-finders.ts\");\n /* harmony import */\n\n\n var _utils_discontinuities__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(\n /*! ../utils/discontinuities */\n \"./src/utils/discontinuities.ts\");\n /* harmony import */\n\n\n var _errors__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(\n /*! ../errors */\n \"./src/errors.ts\");\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(\n /*! ../utils/logger */\n \"./src/utils/logger.ts\");\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n }\n\n var TICK_INTERVAL = 100; // how often to tick in ms\n\n var AudioStreamController = /*#__PURE__*/function (_BaseStreamController) {\n _inheritsLoose(AudioStreamController, _BaseStreamController);\n\n function AudioStreamController(hls, fragmentTracker) {\n var _this;\n\n _this = _BaseStreamController.call(this, hls, fragmentTracker, '[audio-stream-controller]') || this;\n _this.videoBuffer = null;\n _this.videoTrackCC = -1;\n _this.waitingVideoCC = -1;\n _this.audioSwitch = false;\n _this.trackId = -1;\n _this.waitingData = null;\n _this.mainDetails = null;\n _this.bufferFlushed = false;\n\n _this._registerListeners();\n\n return _this;\n }\n\n var _proto = AudioStreamController.prototype;\n\n _proto.onHandlerDestroying = function onHandlerDestroying() {\n this._unregisterListeners();\n\n this.mainDetails = null;\n };\n\n _proto._registerListeners = function _registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].LEVEL_LOADED, this.onLevelLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].AUDIO_TRACKS_UPDATED, this.onAudioTracksUpdated, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].ERROR, this.onError, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].BUFFER_RESET, this.onBufferReset, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].BUFFER_CREATED, this.onBufferCreated, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].BUFFER_FLUSHED, this.onBufferFlushed, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].INIT_PTS_FOUND, this.onInitPtsFound, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_BUFFERED, this.onFragBuffered, this);\n };\n\n _proto._unregisterListeners = function _unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].LEVEL_LOADED, this.onLevelLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].AUDIO_TRACKS_UPDATED, this.onAudioTracksUpdated, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].ERROR, this.onError, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].BUFFER_RESET, this.onBufferReset, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].BUFFER_CREATED, this.onBufferCreated, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].BUFFER_FLUSHED, this.onBufferFlushed, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].INIT_PTS_FOUND, this.onInitPtsFound, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_BUFFERED, this.onFragBuffered, this);\n } // INIT_PTS_FOUND is triggered when the video track parsed in the stream-controller has a new PTS value\n ;\n\n _proto.onInitPtsFound = function onInitPtsFound(event, _ref) {\n var frag = _ref.frag,\n id = _ref.id,\n initPTS = _ref.initPTS; // Always update the new INIT PTS\n // Can change due level switch\n\n if (id === 'main') {\n var cc = frag.cc;\n this.initPTS[frag.cc] = initPTS;\n this.log(\"InitPTS for cc: \" + cc + \" found from main: \" + initPTS);\n this.videoTrackCC = cc; // If we are waiting, tick immediately to unblock audio fragment transmuxing\n\n if (this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_INIT_PTS) {\n this.tick();\n }\n }\n };\n\n _proto.startLoad = function startLoad(startPosition) {\n if (!this.levels) {\n this.startPosition = startPosition;\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].STOPPED;\n return;\n }\n\n var lastCurrentTime = this.lastCurrentTime;\n this.stopLoad();\n this.setInterval(TICK_INTERVAL);\n this.fragLoadError = 0;\n\n if (lastCurrentTime > 0 && startPosition === -1) {\n this.log(\"Override startPosition with lastCurrentTime @\" + lastCurrentTime.toFixed(3));\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n } else {\n this.loadedmetadata = false;\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_TRACK;\n }\n\n this.nextLoadPosition = this.startPosition = this.lastCurrentTime = startPosition;\n this.tick();\n };\n\n _proto.doTick = function doTick() {\n switch (this.state) {\n case _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE:\n this.doTickIdle();\n break;\n\n case _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_TRACK:\n {\n var _levels$trackId;\n\n var levels = this.levels,\n trackId = this.trackId;\n var details = levels === null || levels === void 0 ? void 0 : (_levels$trackId = levels[trackId]) === null || _levels$trackId === void 0 ? void 0 : _levels$trackId.details;\n\n if (details) {\n if (this.waitForCdnTuneIn(details)) {\n break;\n }\n\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_INIT_PTS;\n }\n\n break;\n }\n\n case _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].FRAG_LOADING_WAITING_RETRY:\n {\n var _this$media;\n\n var now = performance.now();\n var retryDate = this.retryDate; // if current time is gt than retryDate, or if media seeking let's switch to IDLE state to retry loading\n\n if (!retryDate || now >= retryDate || (_this$media = this.media) !== null && _this$media !== void 0 && _this$media.seeking) {\n this.log('RetryDate reached, switch back to IDLE state');\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n }\n\n break;\n }\n\n case _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_INIT_PTS:\n {\n // Ensure we don't get stuck in the WAITING_INIT_PTS state if the waiting frag CC doesn't match any initPTS\n var waitingData = this.waitingData;\n\n if (waitingData) {\n var frag = waitingData.frag,\n part = waitingData.part,\n cache = waitingData.cache,\n complete = waitingData.complete;\n\n if (this.initPTS[frag.cc] !== undefined) {\n this.waitingData = null;\n this.waitingVideoCC = -1;\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].FRAG_LOADING;\n var payload = cache.flush();\n var data = {\n frag: frag,\n part: part,\n payload: payload,\n networkDetails: null\n };\n\n this._handleFragmentLoadProgress(data);\n\n if (complete) {\n _BaseStreamController.prototype._handleFragmentLoadComplete.call(this, data);\n }\n } else if (this.videoTrackCC !== this.waitingVideoCC) {\n // Drop waiting fragment if videoTrackCC has changed since waitingFragment was set and initPTS was not found\n _utils_logger__WEBPACK_IMPORTED_MODULE_14__[\"logger\"].log(\"Waiting fragment cc (\" + frag.cc + \") cancelled because video is at cc \" + this.videoTrackCC);\n\n this.clearWaitingFragment();\n } else {\n // Drop waiting fragment if an earlier fragment is needed\n var pos = this.getLoadPosition();\n\n var bufferInfo = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].bufferInfo(this.mediaBuffer, pos, this.config.maxBufferHole);\n\n var waitingFragmentAtPosition = Object(_fragment_finders__WEBPACK_IMPORTED_MODULE_11__[\"fragmentWithinToleranceTest\"])(bufferInfo.end, this.config.maxFragLookUpTolerance, frag);\n\n if (waitingFragmentAtPosition < 0) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_14__[\"logger\"].log(\"Waiting fragment cc (\" + frag.cc + \") @ \" + frag.start + \" cancelled because another fragment at \" + bufferInfo.end + \" is needed\");\n\n this.clearWaitingFragment();\n }\n }\n } else {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n }\n }\n }\n\n this.onTickEnd();\n };\n\n _proto.clearWaitingFragment = function clearWaitingFragment() {\n var waitingData = this.waitingData;\n\n if (waitingData) {\n this.fragmentTracker.removeFragment(waitingData.frag);\n this.waitingData = null;\n this.waitingVideoCC = -1;\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n }\n };\n\n _proto.onTickEnd = function onTickEnd() {\n var media = this.media;\n\n if (!media || !media.readyState) {\n // Exit early if we don't have media or if the media hasn't buffered anything yet (readyState 0)\n return;\n }\n\n var mediaBuffer = this.mediaBuffer ? this.mediaBuffer : media;\n var buffered = mediaBuffer.buffered;\n\n if (!this.loadedmetadata && buffered.length) {\n this.loadedmetadata = true;\n }\n\n this.lastCurrentTime = media.currentTime;\n };\n\n _proto.doTickIdle = function doTickIdle() {\n var _frag$decryptdata, _frag$decryptdata2;\n\n var hls = this.hls,\n levels = this.levels,\n media = this.media,\n trackId = this.trackId;\n var config = hls.config;\n\n if (!levels || !levels[trackId]) {\n return;\n } // if video not attached AND\n // start fragment already requested OR start frag prefetch not enabled\n // exit loop\n // => if media not attached but start frag prefetch is enabled and start frag not requested yet, we will not exit loop\n\n\n if (!media && (this.startFragRequested || !config.startFragPrefetch)) {\n return;\n }\n\n var levelInfo = levels[trackId];\n var trackDetails = levelInfo.details;\n\n if (!trackDetails || trackDetails.live && this.levelLastLoaded !== trackId || this.waitForCdnTuneIn(trackDetails)) {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_TRACK;\n return;\n }\n\n if (this.bufferFlushed) {\n this.bufferFlushed = false;\n this.afterBufferFlushed(this.mediaBuffer ? this.mediaBuffer : this.media, _loader_fragment__WEBPACK_IMPORTED_MODULE_7__[\"ElementaryStreamTypes\"].AUDIO, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].AUDIO);\n }\n\n var bufferInfo = this.getFwdBufferInfo(this.mediaBuffer ? this.mediaBuffer : this.media, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].AUDIO);\n\n if (bufferInfo === null) {\n return;\n }\n\n var bufferLen = bufferInfo.len;\n var maxBufLen = this.getMaxBufferLength();\n var audioSwitch = this.audioSwitch; // if buffer length is less than maxBufLen try to load a new fragment\n\n if (bufferLen >= maxBufLen && !audioSwitch) {\n return;\n }\n\n if (!audioSwitch && this._streamEnded(bufferInfo, trackDetails)) {\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].BUFFER_EOS, {\n type: 'audio'\n });\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].ENDED;\n return;\n }\n\n var fragments = trackDetails.fragments;\n var start = fragments[0].start;\n var targetBufferTime = bufferInfo.end;\n\n if (audioSwitch) {\n var pos = this.getLoadPosition();\n targetBufferTime = pos; // if currentTime (pos) is less than alt audio playlist start time, it means that alt audio is ahead of currentTime\n\n if (trackDetails.PTSKnown && pos < start) {\n // if everything is buffered from pos to start or if audio buffer upfront, let's seek to start\n if (bufferInfo.end > start || bufferInfo.nextStart) {\n this.log('Alt audio track ahead of main track, seek to start of alt audio track');\n media.currentTime = start + 0.05;\n }\n }\n }\n\n var frag = this.getNextFragment(targetBufferTime, trackDetails);\n\n if (!frag) {\n this.bufferFlushed = true;\n return;\n }\n\n if (((_frag$decryptdata = frag.decryptdata) === null || _frag$decryptdata === void 0 ? void 0 : _frag$decryptdata.keyFormat) === 'identity' && !((_frag$decryptdata2 = frag.decryptdata) !== null && _frag$decryptdata2 !== void 0 && _frag$decryptdata2.key)) {\n this.loadKey(frag, trackDetails);\n } else {\n this.loadFragment(frag, trackDetails, targetBufferTime);\n }\n };\n\n _proto.getMaxBufferLength = function getMaxBufferLength() {\n var maxConfigBuffer = _BaseStreamController.prototype.getMaxBufferLength.call(this);\n\n var mainBufferInfo = this.getFwdBufferInfo(this.videoBuffer ? this.videoBuffer : this.media, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN);\n\n if (mainBufferInfo === null) {\n return maxConfigBuffer;\n }\n\n return Math.max(maxConfigBuffer, mainBufferInfo.len);\n };\n\n _proto.onMediaDetaching = function onMediaDetaching() {\n this.videoBuffer = null;\n\n _BaseStreamController.prototype.onMediaDetaching.call(this);\n };\n\n _proto.onAudioTracksUpdated = function onAudioTracksUpdated(event, _ref2) {\n var audioTracks = _ref2.audioTracks;\n this.resetTransmuxer();\n this.levels = audioTracks.map(function (mediaPlaylist) {\n return new _types_level__WEBPACK_IMPORTED_MODULE_5__[\"Level\"](mediaPlaylist);\n });\n };\n\n _proto.onAudioTrackSwitching = function onAudioTrackSwitching(event, data) {\n // if any URL found on new audio track, it is an alternate audio track\n var altAudio = !!data.url;\n this.trackId = data.id;\n var fragCurrent = this.fragCurrent;\n\n if (fragCurrent !== null && fragCurrent !== void 0 && fragCurrent.loader) {\n fragCurrent.loader.abort();\n }\n\n this.fragCurrent = null;\n this.clearWaitingFragment(); // destroy useless transmuxer when switching audio to main\n\n if (!altAudio) {\n this.resetTransmuxer();\n } else {\n // switching to audio track, start timer if not already started\n this.setInterval(TICK_INTERVAL);\n } // should we switch tracks ?\n\n\n if (altAudio) {\n this.audioSwitch = true; // main audio track are handled by stream-controller, just do something if switching to alt audio track\n\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n } else {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].STOPPED;\n }\n\n this.tick();\n };\n\n _proto.onManifestLoading = function onManifestLoading() {\n this.mainDetails = null;\n this.fragmentTracker.removeAllFragments();\n this.startPosition = this.lastCurrentTime = 0;\n this.bufferFlushed = false;\n };\n\n _proto.onLevelLoaded = function onLevelLoaded(event, data) {\n this.mainDetails = data.details;\n };\n\n _proto.onAudioTrackLoaded = function onAudioTrackLoaded(event, data) {\n var _track$details;\n\n var levels = this.levels;\n var newDetails = data.details,\n trackId = data.id;\n\n if (!levels) {\n this.warn(\"Audio tracks were reset while loading level \" + trackId);\n return;\n }\n\n this.log(\"Track \" + trackId + \" loaded [\" + newDetails.startSN + \",\" + newDetails.endSN + \"],duration:\" + newDetails.totalduration);\n var track = levels[trackId];\n var sliding = 0;\n\n if (newDetails.live || (_track$details = track.details) !== null && _track$details !== void 0 && _track$details.live) {\n var mainDetails = this.mainDetails;\n\n if (!newDetails.fragments[0]) {\n newDetails.deltaUpdateFailed = true;\n }\n\n if (newDetails.deltaUpdateFailed || !mainDetails) {\n return;\n }\n\n if (!track.details && newDetails.hasProgramDateTime && mainDetails.hasProgramDateTime) {\n // Make sure our audio rendition is aligned with the \"main\" rendition, using\n // pdt as our reference times.\n Object(_utils_discontinuities__WEBPACK_IMPORTED_MODULE_12__[\"alignMediaPlaylistByPDT\"])(newDetails, mainDetails);\n sliding = newDetails.fragments[0].start;\n } else {\n sliding = this.alignPlaylists(newDetails, track.details);\n }\n }\n\n track.details = newDetails;\n this.levelLastLoaded = trackId; // compute start position if we are aligned with the main playlist\n\n if (!this.startFragRequested && (this.mainDetails || !newDetails.live)) {\n this.setStartPosition(track.details, sliding);\n } // only switch back to IDLE state if we were waiting for track to start downloading a new fragment\n\n\n if (this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_TRACK && !this.waitForCdnTuneIn(newDetails)) {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n } // trigger handler right now\n\n\n this.tick();\n };\n\n _proto._handleFragmentLoadProgress = function _handleFragmentLoadProgress(data) {\n var _frag$initSegment;\n\n var frag = data.frag,\n part = data.part,\n payload = data.payload;\n var config = this.config,\n trackId = this.trackId,\n levels = this.levels;\n\n if (!levels) {\n this.warn(\"Audio tracks were reset while fragment load was in progress. Fragment \" + frag.sn + \" of level \" + frag.level + \" will not be buffered\");\n return;\n }\n\n var track = levels[trackId];\n console.assert(track, 'Audio track is defined on fragment load progress');\n var details = track.details;\n console.assert(details, 'Audio track details are defined on fragment load progress');\n var audioCodec = config.defaultAudioCodec || track.audioCodec || 'mp4a.40.2';\n var transmuxer = this.transmuxer;\n\n if (!transmuxer) {\n transmuxer = this.transmuxer = new _demux_transmuxer_interface__WEBPACK_IMPORTED_MODULE_9__[\"default\"](this.hls, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].AUDIO, this._handleTransmuxComplete.bind(this), this._handleTransmuxerFlush.bind(this));\n } // Check if we have video initPTS\n // If not we need to wait for it\n\n\n var initPTS = this.initPTS[frag.cc];\n var initSegmentData = (_frag$initSegment = frag.initSegment) === null || _frag$initSegment === void 0 ? void 0 : _frag$initSegment.data;\n\n if (initPTS !== undefined) {\n // this.log(`Transmuxing ${sn} of [${details.startSN} ,${details.endSN}],track ${trackId}`);\n // time Offset is accurate if level PTS is known, or if playlist is not sliding (not live)\n var accurateTimeOffset = false; // details.PTSKnown || !details.live;\n\n var partIndex = part ? part.index : -1;\n var partial = partIndex !== -1;\n var chunkMeta = new _types_transmuxer__WEBPACK_IMPORTED_MODULE_10__[\"ChunkMetadata\"](frag.level, frag.sn, frag.stats.chunkCount, payload.byteLength, partIndex, partial);\n transmuxer.push(payload, initSegmentData, audioCodec, '', frag, part, details.totalduration, accurateTimeOffset, chunkMeta, initPTS);\n } else {\n _utils_logger__WEBPACK_IMPORTED_MODULE_14__[\"logger\"].log(\"Unknown video PTS for cc \" + frag.cc + \", waiting for video PTS before demuxing audio frag \" + frag.sn + \" of [\" + details.startSN + \" ,\" + details.endSN + \"],track \" + trackId);\n\n var _this$waitingData = this.waitingData = this.waitingData || {\n frag: frag,\n part: part,\n cache: new _demux_chunk_cache__WEBPACK_IMPORTED_MODULE_8__[\"default\"](),\n complete: false\n },\n cache = _this$waitingData.cache;\n\n cache.push(new Uint8Array(payload));\n this.waitingVideoCC = this.videoTrackCC;\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_INIT_PTS;\n }\n };\n\n _proto._handleFragmentLoadComplete = function _handleFragmentLoadComplete(fragLoadedData) {\n if (this.waitingData) {\n this.waitingData.complete = true;\n return;\n }\n\n _BaseStreamController.prototype._handleFragmentLoadComplete.call(this, fragLoadedData);\n };\n\n _proto.onBufferReset = function\n /* event: Events.BUFFER_RESET */\n onBufferReset() {\n // reset reference to sourcebuffers\n this.mediaBuffer = this.videoBuffer = null;\n this.loadedmetadata = false;\n };\n\n _proto.onBufferCreated = function onBufferCreated(event, data) {\n var audioTrack = data.tracks.audio;\n\n if (audioTrack) {\n this.mediaBuffer = audioTrack.buffer;\n }\n\n if (data.tracks.video) {\n this.videoBuffer = data.tracks.video.buffer;\n }\n };\n\n _proto.onFragBuffered = function onFragBuffered(event, data) {\n var frag = data.frag,\n part = data.part;\n\n if (frag.type !== _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].AUDIO) {\n return;\n }\n\n if (this.fragContextChanged(frag)) {\n // If a level switch was requested while a fragment was buffering, it will emit the FRAG_BUFFERED event upon completion\n // Avoid setting state back to IDLE or concluding the audio switch; otherwise, the switched-to track will not buffer\n this.warn(\"Fragment \" + frag.sn + (part ? ' p: ' + part.index : '') + \" of level \" + frag.level + \" finished buffering, but was aborted. state: \" + this.state + \", audioSwitch: \" + this.audioSwitch);\n return;\n }\n\n if (frag.sn !== 'initSegment') {\n this.fragPrevious = frag;\n\n if (this.audioSwitch) {\n this.audioSwitch = false;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].AUDIO_TRACK_SWITCHED, {\n id: this.trackId\n });\n }\n }\n\n this.fragBufferedComplete(frag, part);\n };\n\n _proto.onError = function onError(event, data) {\n switch (data.details) {\n case _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorDetails\"].FRAG_LOAD_ERROR:\n case _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorDetails\"].FRAG_LOAD_TIMEOUT:\n case _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorDetails\"].KEY_LOAD_ERROR:\n case _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorDetails\"].KEY_LOAD_TIMEOUT:\n // TODO: Skip fragments that do not belong to this.fragCurrent audio-group id\n this.onFragmentOrKeyLoadError(_types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].AUDIO, data);\n break;\n\n case _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorDetails\"].AUDIO_TRACK_LOAD_ERROR:\n case _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorDetails\"].AUDIO_TRACK_LOAD_TIMEOUT:\n // when in ERROR state, don't switch back to IDLE state in case a non-fatal error is received\n if (this.state !== _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].ERROR && this.state !== _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].STOPPED) {\n // if fatal error, stop processing, otherwise move to IDLE to retry loading\n this.state = data.fatal ? _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].ERROR : _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n this.warn(data.details + \" while loading frag, switching to \" + this.state + \" state\");\n }\n\n break;\n\n case _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorDetails\"].BUFFER_FULL_ERROR:\n // if in appending state\n if (data.parent === 'audio' && (this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].PARSING || this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].PARSED)) {\n var flushBuffer = true;\n var bufferedInfo = this.getFwdBufferInfo(this.mediaBuffer, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].AUDIO); // 0.5 : tolerance needed as some browsers stalls playback before reaching buffered end\n // reduce max buf len if current position is buffered\n\n if (bufferedInfo && bufferedInfo.len > 0.5) {\n flushBuffer = !this.reduceMaxBufferLength(bufferedInfo.len);\n }\n\n if (flushBuffer) {\n // current position is not buffered, but browser is still complaining about buffer full error\n // this happens on IE/Edge, refer to https://github.com/video-dev/hls.js/pull/708\n // in that case flush the whole audio buffer to recover\n this.warn('Buffer full error also media.currentTime is not buffered, flush audio buffer');\n this.fragCurrent = null;\n\n _BaseStreamController.prototype.flushMainBuffer.call(this, 0, Number.POSITIVE_INFINITY, 'audio');\n }\n\n this.resetLoadingState();\n }\n\n break;\n\n default:\n break;\n }\n };\n\n _proto.onBufferFlushed = function onBufferFlushed(event, _ref3) {\n var type = _ref3.type;\n\n if (type === _loader_fragment__WEBPACK_IMPORTED_MODULE_7__[\"ElementaryStreamTypes\"].AUDIO) {\n this.bufferFlushed = true;\n }\n };\n\n _proto._handleTransmuxComplete = function _handleTransmuxComplete(transmuxResult) {\n var _id3$samples;\n\n var id = 'audio';\n var hls = this.hls;\n var remuxResult = transmuxResult.remuxResult,\n chunkMeta = transmuxResult.chunkMeta;\n var context = this.getCurrentContext(chunkMeta);\n\n if (!context) {\n this.warn(\"The loading context changed while buffering fragment \" + chunkMeta.sn + \" of level \" + chunkMeta.level + \". This chunk will not be buffered.\");\n this.resetLiveStartWhenNotLoaded(chunkMeta.level);\n return;\n }\n\n var frag = context.frag,\n part = context.part;\n var audio = remuxResult.audio,\n text = remuxResult.text,\n id3 = remuxResult.id3,\n initSegment = remuxResult.initSegment; // Check if the current fragment has been aborted. We check this by first seeing if we're still playing the current level.\n // If we are, subsequently check if the currently loading fragment (fragCurrent) has changed.\n\n if (this.fragContextChanged(frag)) {\n return;\n }\n\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].PARSING;\n\n if (this.audioSwitch && audio) {\n this.completeAudioSwitch();\n }\n\n if (initSegment !== null && initSegment !== void 0 && initSegment.tracks) {\n this._bufferInitSegment(initSegment.tracks, frag, chunkMeta);\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_PARSING_INIT_SEGMENT, {\n frag: frag,\n id: id,\n tracks: initSegment.tracks\n }); // Only flush audio from old audio tracks when PTS is known on new audio track\n }\n\n if (audio) {\n var startPTS = audio.startPTS,\n endPTS = audio.endPTS,\n startDTS = audio.startDTS,\n endDTS = audio.endDTS;\n\n if (part) {\n part.elementaryStreams[_loader_fragment__WEBPACK_IMPORTED_MODULE_7__[\"ElementaryStreamTypes\"].AUDIO] = {\n startPTS: startPTS,\n endPTS: endPTS,\n startDTS: startDTS,\n endDTS: endDTS\n };\n }\n\n frag.setElementaryStreamInfo(_loader_fragment__WEBPACK_IMPORTED_MODULE_7__[\"ElementaryStreamTypes\"].AUDIO, startPTS, endPTS, startDTS, endDTS);\n this.bufferFragmentData(audio, frag, part, chunkMeta);\n }\n\n if (id3 !== null && id3 !== void 0 && (_id3$samples = id3.samples) !== null && _id3$samples !== void 0 && _id3$samples.length) {\n var emittedID3 = _extends({\n frag: frag,\n id: id\n }, id3);\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_PARSING_METADATA, emittedID3);\n }\n\n if (text) {\n var emittedText = _extends({\n frag: frag,\n id: id\n }, text);\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_PARSING_USERDATA, emittedText);\n }\n };\n\n _proto._bufferInitSegment = function _bufferInitSegment(tracks, frag, chunkMeta) {\n if (this.state !== _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].PARSING) {\n return;\n } // delete any video track found on audio transmuxer\n\n\n if (tracks.video) {\n delete tracks.video;\n } // include levelCodec in audio and video tracks\n\n\n var track = tracks.audio;\n\n if (!track) {\n return;\n }\n\n track.levelCodec = track.codec;\n track.id = 'audio';\n this.log(\"Init audio buffer, container:\" + track.container + \", codecs[parsed]=[\" + track.codec + \"]\");\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].BUFFER_CODECS, tracks);\n var initSegment = track.initSegment;\n\n if (initSegment !== null && initSegment !== void 0 && initSegment.byteLength) {\n var segment = {\n type: 'audio',\n frag: frag,\n part: null,\n chunkMeta: chunkMeta,\n parent: frag.type,\n data: initSegment\n };\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].BUFFER_APPENDING, segment);\n } // trigger handler right now\n\n\n this.tick();\n };\n\n _proto.loadFragment = function loadFragment(frag, trackDetails, targetBufferTime) {\n // only load if fragment is not loaded or if in audio switch\n var fragState = this.fragmentTracker.getState(frag);\n this.fragCurrent = frag; // we force a frag loading in audio switch as fragment tracker might not have evicted previous frags in case of quick audio switch\n\n if (this.audioSwitch || fragState === _fragment_tracker__WEBPACK_IMPORTED_MODULE_4__[\"FragmentState\"].NOT_LOADED || fragState === _fragment_tracker__WEBPACK_IMPORTED_MODULE_4__[\"FragmentState\"].PARTIAL) {\n if (frag.sn === 'initSegment') {\n this._loadInitSegment(frag);\n } else if (trackDetails.live && !Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(this.initPTS[frag.cc])) {\n this.log(\"Waiting for video PTS in continuity counter \" + frag.cc + \" of live stream before loading audio fragment \" + frag.sn + \" of level \" + this.trackId);\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_INIT_PTS;\n } else {\n this.startFragRequested = true;\n\n _BaseStreamController.prototype.loadFragment.call(this, frag, trackDetails, targetBufferTime);\n }\n }\n };\n\n _proto.completeAudioSwitch = function completeAudioSwitch() {\n var hls = this.hls,\n media = this.media,\n trackId = this.trackId;\n\n if (media) {\n this.log('Switching audio track : flushing all audio');\n\n _BaseStreamController.prototype.flushMainBuffer.call(this, 0, Number.POSITIVE_INFINITY, 'audio');\n }\n\n this.audioSwitch = false;\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].AUDIO_TRACK_SWITCHED, {\n id: trackId\n });\n };\n\n return AudioStreamController;\n }(_base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n /* harmony default export */\n\n\n __webpack_exports__[\"default\"] = AudioStreamController;\n /***/\n },\n\n /***/\n \"./src/controller/audio-track-controller.ts\":\n /*!**************************************************!*\\\n !*** ./src/controller/audio-track-controller.ts ***!\n \\**************************************************/\n\n /*! exports provided: default */\n\n /***/\n function srcControllerAudioTrackControllerTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony import */\n\n\n var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ../events */\n \"./src/events.ts\");\n /* harmony import */\n\n\n var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ../errors */\n \"./src/errors.ts\");\n /* harmony import */\n\n\n var _base_playlist_controller__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ./base-playlist-controller */\n \"./src/controller/base-playlist-controller.ts\");\n /* harmony import */\n\n\n var _types_loader__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\n /*! ../types/loader */\n \"./src/types/loader.ts\");\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n }\n\n var AudioTrackController = /*#__PURE__*/function (_BasePlaylistControll) {\n _inheritsLoose(AudioTrackController, _BasePlaylistControll);\n\n function AudioTrackController(hls) {\n var _this;\n\n _this = _BasePlaylistControll.call(this, hls, '[audio-track-controller]') || this;\n _this.tracks = [];\n _this.groupId = null;\n _this.tracksInGroup = [];\n _this.trackId = -1;\n _this.trackName = '';\n _this.selectDefaultTrack = true;\n\n _this.registerListeners();\n\n return _this;\n }\n\n var _proto = AudioTrackController.prototype;\n\n _proto.registerListeners = function registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].LEVEL_LOADING, this.onLevelLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].LEVEL_SWITCHING, this.onLevelSwitching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, this.onError, this);\n };\n\n _proto.unregisterListeners = function unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].LEVEL_LOADING, this.onLevelLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].LEVEL_SWITCHING, this.onLevelSwitching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, this.onError, this);\n };\n\n _proto.destroy = function destroy() {\n this.unregisterListeners();\n this.tracks.length = 0;\n this.tracksInGroup.length = 0;\n\n _BasePlaylistControll.prototype.destroy.call(this);\n };\n\n _proto.onManifestLoading = function onManifestLoading() {\n this.tracks = [];\n this.groupId = null;\n this.tracksInGroup = [];\n this.trackId = -1;\n this.trackName = '';\n this.selectDefaultTrack = true;\n };\n\n _proto.onManifestParsed = function onManifestParsed(event, data) {\n this.tracks = data.audioTracks || [];\n };\n\n _proto.onAudioTrackLoaded = function onAudioTrackLoaded(event, data) {\n var id = data.id,\n details = data.details;\n var currentTrack = this.tracksInGroup[id];\n\n if (!currentTrack) {\n this.warn(\"Invalid audio track id \" + id);\n return;\n }\n\n var curDetails = currentTrack.details;\n currentTrack.details = data.details;\n this.log(\"audioTrack \" + id + \" loaded [\" + details.startSN + \"-\" + details.endSN + \"]\");\n\n if (id === this.trackId) {\n this.retryCount = 0;\n this.playlistLoaded(id, data, curDetails);\n }\n };\n\n _proto.onLevelLoading = function onLevelLoading(event, data) {\n this.switchLevel(data.level);\n };\n\n _proto.onLevelSwitching = function onLevelSwitching(event, data) {\n this.switchLevel(data.level);\n };\n\n _proto.switchLevel = function switchLevel(levelIndex) {\n var levelInfo = this.hls.levels[levelIndex];\n\n if (!(levelInfo !== null && levelInfo !== void 0 && levelInfo.audioGroupIds)) {\n return;\n }\n\n var audioGroupId = levelInfo.audioGroupIds[levelInfo.urlId];\n\n if (this.groupId !== audioGroupId) {\n this.groupId = audioGroupId;\n var audioTracks = this.tracks.filter(function (track) {\n return !audioGroupId || track.groupId === audioGroupId;\n }); // Disable selectDefaultTrack if there are no default tracks\n\n if (this.selectDefaultTrack && !audioTracks.some(function (track) {\n return track.default;\n })) {\n this.selectDefaultTrack = false;\n }\n\n this.tracksInGroup = audioTracks;\n var audioTracksUpdated = {\n audioTracks: audioTracks\n };\n this.log(\"Updating audio tracks, \" + audioTracks.length + \" track(s) found in \\\"\" + audioGroupId + \"\\\" group-id\");\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].AUDIO_TRACKS_UPDATED, audioTracksUpdated);\n this.selectInitialTrack();\n }\n };\n\n _proto.onError = function onError(event, data) {\n _BasePlaylistControll.prototype.onError.call(this, event, data);\n\n if (data.fatal || !data.context) {\n return;\n }\n\n if (data.context.type === _types_loader__WEBPACK_IMPORTED_MODULE_3__[\"PlaylistContextType\"].AUDIO_TRACK && data.context.id === this.trackId && data.context.groupId === this.groupId) {\n this.retryLoadingOrFail(data);\n }\n };\n\n _proto.setAudioTrack = function setAudioTrack(newId) {\n var tracks = this.tracksInGroup; // check if level idx is valid\n\n if (newId < 0 || newId >= tracks.length) {\n this.warn('Invalid id passed to audio-track controller');\n return;\n } // stopping live reloading timer if any\n\n\n this.clearTimer();\n var lastTrack = tracks[this.trackId];\n this.log(\"Now switching to audio-track index \" + newId);\n var track = tracks[newId];\n var id = track.id,\n _track$groupId = track.groupId,\n groupId = _track$groupId === void 0 ? '' : _track$groupId,\n name = track.name,\n type = track.type,\n url = track.url;\n this.trackId = newId;\n this.trackName = name;\n this.selectDefaultTrack = false;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].AUDIO_TRACK_SWITCHING, {\n id: id,\n groupId: groupId,\n name: name,\n type: type,\n url: url\n }); // Do not reload track unless live\n\n if (track.details && !track.details.live) {\n return;\n }\n\n var hlsUrlParameters = this.switchParams(track.url, lastTrack === null || lastTrack === void 0 ? void 0 : lastTrack.details);\n this.loadPlaylist(hlsUrlParameters);\n };\n\n _proto.selectInitialTrack = function selectInitialTrack() {\n var audioTracks = this.tracksInGroup;\n console.assert(audioTracks.length, 'Initial audio track should be selected when tracks are known');\n var currentAudioTrackName = this.trackName;\n var trackId = this.findTrackId(currentAudioTrackName) || this.findTrackId();\n\n if (trackId !== -1) {\n this.setAudioTrack(trackId);\n } else {\n this.warn(\"No track found for running audio group-ID: \" + this.groupId);\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].AUDIO_TRACK_LOAD_ERROR,\n fatal: true\n });\n }\n };\n\n _proto.findTrackId = function findTrackId(name) {\n var audioTracks = this.tracksInGroup;\n\n for (var i = 0; i < audioTracks.length; i++) {\n var track = audioTracks[i];\n\n if (!this.selectDefaultTrack || track.default) {\n if (!name || name === track.name) {\n return track.id;\n }\n }\n }\n\n return -1;\n };\n\n _proto.loadPlaylist = function loadPlaylist(hlsUrlParameters) {\n var audioTrack = this.tracksInGroup[this.trackId];\n\n if (this.shouldLoadTrack(audioTrack)) {\n var id = audioTrack.id;\n var groupId = audioTrack.groupId;\n var url = audioTrack.url;\n\n if (hlsUrlParameters) {\n try {\n url = hlsUrlParameters.addDirectives(url);\n } catch (error) {\n this.warn(\"Could not construct new URL with HLS Delivery Directives: \" + error);\n }\n } // track not retrieved yet, or live playlist we need to (re)load it\n\n\n this.log(\"loading audio-track playlist for id: \" + id);\n this.clearTimer();\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].AUDIO_TRACK_LOADING, {\n url: url,\n id: id,\n groupId: groupId,\n deliveryDirectives: hlsUrlParameters || null\n });\n }\n };\n\n _createClass(AudioTrackController, [{\n key: \"audioTracks\",\n get: function get() {\n return this.tracksInGroup;\n }\n }, {\n key: \"audioTrack\",\n get: function get() {\n return this.trackId;\n },\n set: function set(newId) {\n // If audio track is selected from API then don't choose from the manifest default track\n this.selectDefaultTrack = false;\n this.setAudioTrack(newId);\n }\n }]);\n\n return AudioTrackController;\n }(_base_playlist_controller__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n /* harmony default export */\n\n\n __webpack_exports__[\"default\"] = AudioTrackController;\n /***/\n },\n\n /***/\n \"./src/controller/base-playlist-controller.ts\":\n /*!****************************************************!*\\\n !*** ./src/controller/base-playlist-controller.ts ***!\n \\****************************************************/\n\n /*! exports provided: default */\n\n /***/\n function srcControllerBasePlaylistControllerTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"default\", function () {\n return BasePlaylistController;\n });\n /* harmony import */\n\n\n var _home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./src/polyfills/number */\n \"./src/polyfills/number.ts\");\n /* harmony import */\n\n\n var _types_level__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ../types/level */\n \"./src/types/level.ts\");\n /* harmony import */\n\n\n var _level_helper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ./level-helper */\n \"./src/controller/level-helper.ts\");\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\n /*! ../utils/logger */\n \"./src/utils/logger.ts\");\n /* harmony import */\n\n\n var _errors__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\n /*! ../errors */\n \"./src/errors.ts\");\n\n var BasePlaylistController = /*#__PURE__*/function () {\n function BasePlaylistController(hls, logPrefix) {\n this.hls = void 0;\n this.timer = -1;\n this.canLoad = false;\n this.retryCount = 0;\n this.log = void 0;\n this.warn = void 0;\n this.log = _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].log.bind(_utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"], logPrefix + \":\");\n this.warn = _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn.bind(_utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"], logPrefix + \":\");\n this.hls = hls;\n }\n\n var _proto = BasePlaylistController.prototype;\n\n _proto.destroy = function destroy() {\n this.clearTimer(); // @ts-ignore\n\n this.hls = this.log = this.warn = null;\n };\n\n _proto.onError = function onError(event, data) {\n if (data.fatal && data.type === _errors__WEBPACK_IMPORTED_MODULE_4__[\"ErrorTypes\"].NETWORK_ERROR) {\n this.clearTimer();\n }\n };\n\n _proto.clearTimer = function clearTimer() {\n clearTimeout(this.timer);\n this.timer = -1;\n };\n\n _proto.startLoad = function startLoad() {\n this.canLoad = true;\n this.retryCount = 0;\n this.loadPlaylist();\n };\n\n _proto.stopLoad = function stopLoad() {\n this.canLoad = false;\n this.clearTimer();\n };\n\n _proto.switchParams = function switchParams(playlistUri, previous) {\n var renditionReports = previous === null || previous === void 0 ? void 0 : previous.renditionReports;\n\n if (renditionReports) {\n for (var i = 0; i < renditionReports.length; i++) {\n var attr = renditionReports[i];\n var uri = '' + attr.URI;\n\n if (uri === playlistUri.substr(-uri.length)) {\n var msn = parseInt(attr['LAST-MSN']);\n var part = parseInt(attr['LAST-PART']);\n\n if (previous && this.hls.config.lowLatencyMode) {\n var currentGoal = Math.min(previous.age - previous.partTarget, previous.targetduration);\n\n if (part !== undefined && currentGoal > previous.partTarget) {\n part += 1;\n }\n }\n\n if (Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(msn)) {\n return new _types_level__WEBPACK_IMPORTED_MODULE_1__[\"HlsUrlParameters\"](msn, Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(part) ? part : undefined, _types_level__WEBPACK_IMPORTED_MODULE_1__[\"HlsSkip\"].No);\n }\n }\n }\n }\n };\n\n _proto.loadPlaylist = function loadPlaylist(hlsUrlParameters) {};\n\n _proto.shouldLoadTrack = function shouldLoadTrack(track) {\n return this.canLoad && track && !!track.url && (!track.details || track.details.live);\n };\n\n _proto.playlistLoaded = function playlistLoaded(index, data, previousDetails) {\n var _this = this;\n\n var details = data.details,\n stats = data.stats; // Set last updated date-time\n\n var elapsed = stats.loading.end ? Math.max(0, self.performance.now() - stats.loading.end) : 0;\n details.advancedDateTime = Date.now() - elapsed; // if current playlist is a live playlist, arm a timer to reload it\n\n if (details.live || previousDetails !== null && previousDetails !== void 0 && previousDetails.live) {\n details.reloaded(previousDetails);\n\n if (previousDetails) {\n this.log(\"live playlist \" + index + \" \" + (details.advanced ? 'REFRESHED ' + details.lastPartSn + '-' + details.lastPartIndex : 'MISSED'));\n } // Merge live playlists to adjust fragment starts and fill in delta playlist skipped segments\n\n\n if (previousDetails && details.fragments.length > 0) {\n Object(_level_helper__WEBPACK_IMPORTED_MODULE_2__[\"mergeDetails\"])(previousDetails, details);\n }\n\n if (!this.canLoad || !details.live) {\n return;\n }\n\n var deliveryDirectives;\n var msn = undefined;\n var part = undefined;\n\n if (details.canBlockReload && details.endSN && details.advanced) {\n // Load level with LL-HLS delivery directives\n var lowLatencyMode = this.hls.config.lowLatencyMode;\n var lastPartSn = details.lastPartSn;\n var endSn = details.endSN;\n var lastPartIndex = details.lastPartIndex;\n var hasParts = lastPartIndex !== -1;\n var lastPart = lastPartSn === endSn; // When low latency mode is disabled, we'll skip part requests once the last part index is found\n\n var nextSnStartIndex = lowLatencyMode ? 0 : lastPartIndex;\n\n if (hasParts) {\n msn = lastPart ? endSn + 1 : lastPartSn;\n part = lastPart ? nextSnStartIndex : lastPartIndex + 1;\n } else {\n msn = endSn + 1;\n } // Low-Latency CDN Tune-in: \"age\" header and time since load indicates we're behind by more than one part\n // Update directives to obtain the Playlist that has the estimated additional duration of media\n\n\n var lastAdvanced = details.age;\n var cdnAge = lastAdvanced + details.ageHeader;\n var currentGoal = Math.min(cdnAge - details.partTarget, details.targetduration * 1.5);\n\n if (currentGoal > 0) {\n if (previousDetails && currentGoal > previousDetails.tuneInGoal) {\n // If we attempted to get the next or latest playlist update, but currentGoal increased,\n // then we either can't catchup, or the \"age\" header cannot be trusted.\n this.warn(\"CDN Tune-in goal increased from: \" + previousDetails.tuneInGoal + \" to: \" + currentGoal + \" with playlist age: \" + details.age);\n currentGoal = 0;\n } else {\n var segments = Math.floor(currentGoal / details.targetduration);\n msn += segments;\n\n if (part !== undefined) {\n var parts = Math.round(currentGoal % details.targetduration / details.partTarget);\n part += parts;\n }\n\n this.log(\"CDN Tune-in age: \" + details.ageHeader + \"s last advanced \" + lastAdvanced.toFixed(2) + \"s goal: \" + currentGoal + \" skip sn \" + segments + \" to part \" + part);\n }\n\n details.tuneInGoal = currentGoal;\n }\n\n deliveryDirectives = this.getDeliveryDirectives(details, data.deliveryDirectives, msn, part);\n\n if (lowLatencyMode || !lastPart) {\n this.loadPlaylist(deliveryDirectives);\n return;\n }\n } else {\n deliveryDirectives = this.getDeliveryDirectives(details, data.deliveryDirectives, msn, part);\n }\n\n var reloadInterval = Object(_level_helper__WEBPACK_IMPORTED_MODULE_2__[\"computeReloadInterval\"])(details, stats);\n\n if (msn !== undefined && details.canBlockReload) {\n reloadInterval -= details.partTarget || 1;\n }\n\n this.log(\"reload live playlist \" + index + \" in \" + Math.round(reloadInterval) + \" ms\");\n this.timer = self.setTimeout(function () {\n return _this.loadPlaylist(deliveryDirectives);\n }, reloadInterval);\n } else {\n this.clearTimer();\n }\n };\n\n _proto.getDeliveryDirectives = function getDeliveryDirectives(details, previousDeliveryDirectives, msn, part) {\n var skip = Object(_types_level__WEBPACK_IMPORTED_MODULE_1__[\"getSkipValue\"])(details, msn);\n\n if (previousDeliveryDirectives !== null && previousDeliveryDirectives !== void 0 && previousDeliveryDirectives.skip && details.deltaUpdateFailed) {\n msn = previousDeliveryDirectives.msn;\n part = previousDeliveryDirectives.part;\n skip = _types_level__WEBPACK_IMPORTED_MODULE_1__[\"HlsSkip\"].No;\n }\n\n return new _types_level__WEBPACK_IMPORTED_MODULE_1__[\"HlsUrlParameters\"](msn, part, skip);\n };\n\n _proto.retryLoadingOrFail = function retryLoadingOrFail(errorEvent) {\n var _this2 = this;\n\n var config = this.hls.config;\n var retry = this.retryCount < config.levelLoadingMaxRetry;\n\n if (retry) {\n var _errorEvent$context;\n\n this.retryCount++;\n\n if (errorEvent.details.indexOf('LoadTimeOut') > -1 && (_errorEvent$context = errorEvent.context) !== null && _errorEvent$context !== void 0 && _errorEvent$context.deliveryDirectives) {\n // The LL-HLS request already timed out so retry immediately\n this.warn(\"retry playlist loading #\" + this.retryCount + \" after \\\"\" + errorEvent.details + \"\\\"\");\n this.loadPlaylist();\n } else {\n // exponential backoff capped to max retry timeout\n var delay = Math.min(Math.pow(2, this.retryCount) * config.levelLoadingRetryDelay, config.levelLoadingMaxRetryTimeout); // Schedule level/track reload\n\n this.timer = self.setTimeout(function () {\n return _this2.loadPlaylist();\n }, delay);\n this.warn(\"retry playlist loading #\" + this.retryCount + \" in \" + delay + \" ms after \\\"\" + errorEvent.details + \"\\\"\");\n }\n } else {\n this.warn(\"cannot recover from error \\\"\" + errorEvent.details + \"\\\"\"); // stopping live reloading timer if any\n\n this.clearTimer(); // switch error to fatal\n\n errorEvent.fatal = true;\n }\n\n return retry;\n };\n\n return BasePlaylistController;\n }();\n /***/\n\n },\n\n /***/\n \"./src/controller/base-stream-controller.ts\":\n /*!**************************************************!*\\\n !*** ./src/controller/base-stream-controller.ts ***!\n \\**************************************************/\n\n /*! exports provided: State, default */\n\n /***/\n function srcControllerBaseStreamControllerTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"State\", function () {\n return State;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"default\", function () {\n return BaseStreamController;\n });\n /* harmony import */\n\n\n var _home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./src/polyfills/number */\n \"./src/polyfills/number.ts\");\n /* harmony import */\n\n\n var _task_loop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ../task-loop */\n \"./src/task-loop.ts\");\n /* harmony import */\n\n\n var _fragment_tracker__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ./fragment-tracker */\n \"./src/controller/fragment-tracker.ts\");\n /* harmony import */\n\n\n var _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\n /*! ../utils/buffer-helper */\n \"./src/utils/buffer-helper.ts\");\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\n /*! ../utils/logger */\n \"./src/utils/logger.ts\");\n /* harmony import */\n\n\n var _events__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(\n /*! ../events */\n \"./src/events.ts\");\n /* harmony import */\n\n\n var _errors__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(\n /*! ../errors */\n \"./src/errors.ts\");\n /* harmony import */\n\n\n var _types_transmuxer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(\n /*! ../types/transmuxer */\n \"./src/types/transmuxer.ts\");\n /* harmony import */\n\n\n var _utils_mp4_tools__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(\n /*! ../utils/mp4-tools */\n \"./src/utils/mp4-tools.ts\");\n /* harmony import */\n\n\n var _utils_discontinuities__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(\n /*! ../utils/discontinuities */\n \"./src/utils/discontinuities.ts\");\n /* harmony import */\n\n\n var _fragment_finders__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(\n /*! ./fragment-finders */\n \"./src/controller/fragment-finders.ts\");\n /* harmony import */\n\n\n var _level_helper__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(\n /*! ./level-helper */\n \"./src/controller/level-helper.ts\");\n /* harmony import */\n\n\n var _loader_fragment_loader__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(\n /*! ../loader/fragment-loader */\n \"./src/loader/fragment-loader.ts\");\n /* harmony import */\n\n\n var _crypt_decrypter__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(\n /*! ../crypt/decrypter */\n \"./src/crypt/decrypter.ts\");\n /* harmony import */\n\n\n var _utils_time_ranges__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(\n /*! ../utils/time-ranges */\n \"./src/utils/time-ranges.ts\");\n /* harmony import */\n\n\n var _types_loader__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(\n /*! ../types/loader */\n \"./src/types/loader.ts\");\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n }\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n }\n\n var State = {\n STOPPED: 'STOPPED',\n IDLE: 'IDLE',\n KEY_LOADING: 'KEY_LOADING',\n FRAG_LOADING: 'FRAG_LOADING',\n FRAG_LOADING_WAITING_RETRY: 'FRAG_LOADING_WAITING_RETRY',\n WAITING_TRACK: 'WAITING_TRACK',\n PARSING: 'PARSING',\n PARSED: 'PARSED',\n BACKTRACKING: 'BACKTRACKING',\n ENDED: 'ENDED',\n ERROR: 'ERROR',\n WAITING_INIT_PTS: 'WAITING_INIT_PTS',\n WAITING_LEVEL: 'WAITING_LEVEL'\n };\n\n var BaseStreamController = /*#__PURE__*/function (_TaskLoop) {\n _inheritsLoose(BaseStreamController, _TaskLoop);\n\n function BaseStreamController(hls, fragmentTracker, logPrefix) {\n var _this;\n\n _this = _TaskLoop.call(this) || this;\n _this.hls = void 0;\n _this.fragPrevious = null;\n _this.fragCurrent = null;\n _this.fragmentTracker = void 0;\n _this.transmuxer = null;\n _this._state = State.STOPPED;\n _this.media = void 0;\n _this.mediaBuffer = void 0;\n _this.config = void 0;\n _this.bitrateTest = false;\n _this.lastCurrentTime = 0;\n _this.nextLoadPosition = 0;\n _this.startPosition = 0;\n _this.loadedmetadata = false;\n _this.fragLoadError = 0;\n _this.retryDate = 0;\n _this.levels = null;\n _this.fragmentLoader = void 0;\n _this.levelLastLoaded = null;\n _this.startFragRequested = false;\n _this.decrypter = void 0;\n _this.initPTS = [];\n _this.onvseeking = null;\n _this.onvended = null;\n _this.logPrefix = '';\n _this.log = void 0;\n _this.warn = void 0;\n _this.logPrefix = logPrefix;\n _this.log = _utils_logger__WEBPACK_IMPORTED_MODULE_4__[\"logger\"].log.bind(_utils_logger__WEBPACK_IMPORTED_MODULE_4__[\"logger\"], logPrefix + \":\");\n _this.warn = _utils_logger__WEBPACK_IMPORTED_MODULE_4__[\"logger\"].warn.bind(_utils_logger__WEBPACK_IMPORTED_MODULE_4__[\"logger\"], logPrefix + \":\");\n _this.hls = hls;\n _this.fragmentLoader = new _loader_fragment_loader__WEBPACK_IMPORTED_MODULE_12__[\"default\"](hls.config);\n _this.fragmentTracker = fragmentTracker;\n _this.config = hls.config;\n _this.decrypter = new _crypt_decrypter__WEBPACK_IMPORTED_MODULE_13__[\"default\"](hls, hls.config);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].KEY_LOADED, _this.onKeyLoaded, _assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = BaseStreamController.prototype;\n\n _proto.doTick = function doTick() {\n this.onTickEnd();\n };\n\n _proto.onTickEnd = function onTickEnd() {} // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ;\n\n _proto.startLoad = function startLoad(startPosition) {};\n\n _proto.stopLoad = function stopLoad() {\n this.fragmentLoader.abort();\n var frag = this.fragCurrent;\n\n if (frag) {\n this.fragmentTracker.removeFragment(frag);\n }\n\n this.resetTransmuxer();\n this.fragCurrent = null;\n this.fragPrevious = null;\n this.clearInterval();\n this.clearNextTick();\n this.state = State.STOPPED;\n };\n\n _proto._streamEnded = function _streamEnded(bufferInfo, levelDetails) {\n var fragCurrent = this.fragCurrent,\n fragmentTracker = this.fragmentTracker; // we just got done loading the final fragment and there is no other buffered range after ...\n // rationale is that in case there are any buffered ranges after, it means that there are unbuffered portion in between\n // so we should not switch to ENDED in that case, to be able to buffer them\n\n if (!levelDetails.live && fragCurrent && // NOTE: Because of the way parts are currently parsed/represented in the playlist, we can end up\n // in situations where the current fragment is actually greater than levelDetails.endSN. While\n // this feels like the \"wrong place\" to account for that, this is a narrower/safer change than\n // updating e.g. M3U8Parser::parseLevelPlaylist().\n fragCurrent.sn >= levelDetails.endSN && !bufferInfo.nextStart) {\n var partList = levelDetails.partList; // Since the last part isn't guaranteed to correspond to fragCurrent for ll-hls, check instead if the last part is buffered.\n\n if (partList !== null && partList !== void 0 && partList.length) {\n var lastPart = partList[partList.length - 1]; // Checking the midpoint of the part for potential margin of error and related issues.\n // NOTE: Technically I believe parts could yield content that is < the computed duration (including potential a duration of 0)\n // and still be spec-compliant, so there may still be edge cases here. Likewise, there could be issues in end of stream\n // part mismatches for independent audio and video playlists/segments.\n\n var lastPartBuffered = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].isBuffered(this.media, lastPart.start + lastPart.duration / 2);\n\n return lastPartBuffered;\n }\n\n var fragState = fragmentTracker.getState(fragCurrent);\n return fragState === _fragment_tracker__WEBPACK_IMPORTED_MODULE_2__[\"FragmentState\"].PARTIAL || fragState === _fragment_tracker__WEBPACK_IMPORTED_MODULE_2__[\"FragmentState\"].OK;\n }\n\n return false;\n };\n\n _proto.onMediaAttached = function onMediaAttached(event, data) {\n var media = this.media = this.mediaBuffer = data.media;\n this.onvseeking = this.onMediaSeeking.bind(this);\n this.onvended = this.onMediaEnded.bind(this);\n media.addEventListener('seeking', this.onvseeking);\n media.addEventListener('ended', this.onvended);\n var config = this.config;\n\n if (this.levels && config.autoStartLoad && this.state === State.STOPPED) {\n this.startLoad(config.startPosition);\n }\n };\n\n _proto.onMediaDetaching = function onMediaDetaching() {\n var media = this.media;\n\n if (media !== null && media !== void 0 && media.ended) {\n this.log('MSE detaching and video ended, reset startPosition');\n this.startPosition = this.lastCurrentTime = 0;\n } // remove video listeners\n\n\n if (media) {\n media.removeEventListener('seeking', this.onvseeking);\n media.removeEventListener('ended', this.onvended);\n this.onvseeking = this.onvended = null;\n }\n\n this.media = this.mediaBuffer = null;\n this.loadedmetadata = false;\n this.fragmentTracker.removeAllFragments();\n this.stopLoad();\n };\n\n _proto.onMediaSeeking = function onMediaSeeking() {\n var config = this.config,\n fragCurrent = this.fragCurrent,\n media = this.media,\n mediaBuffer = this.mediaBuffer,\n state = this.state;\n var currentTime = media ? media.currentTime : 0;\n\n var bufferInfo = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].bufferInfo(mediaBuffer || media, currentTime, config.maxBufferHole);\n\n this.log(\"media seeking to \" + (Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(currentTime) ? currentTime.toFixed(3) : currentTime) + \", state: \" + state);\n\n if (state === State.ENDED) {\n this.resetLoadingState();\n } else if (fragCurrent && !bufferInfo.len) {\n // check if we are seeking to a unbuffered area AND if frag loading is in progress\n var tolerance = config.maxFragLookUpTolerance;\n var fragStartOffset = fragCurrent.start - tolerance;\n var fragEndOffset = fragCurrent.start + fragCurrent.duration + tolerance;\n var pastFragment = currentTime > fragEndOffset; // check if the seek position is past current fragment, and if so abort loading\n\n if (currentTime < fragStartOffset || pastFragment) {\n if (pastFragment && fragCurrent.loader) {\n this.log('seeking outside of buffer while fragment load in progress, cancel fragment load');\n fragCurrent.loader.abort();\n }\n\n this.resetLoadingState();\n }\n }\n\n if (media) {\n this.lastCurrentTime = currentTime;\n } // in case seeking occurs although no media buffered, adjust startPosition and nextLoadPosition to seek target\n\n\n if (!this.loadedmetadata && !bufferInfo.len) {\n this.nextLoadPosition = this.startPosition = currentTime;\n } // Async tick to speed up processing\n\n\n this.tickImmediate();\n };\n\n _proto.onMediaEnded = function onMediaEnded() {\n // reset startPosition and lastCurrentTime to restart playback @ stream beginning\n this.startPosition = this.lastCurrentTime = 0;\n };\n\n _proto.onKeyLoaded = function onKeyLoaded(event, data) {\n if (this.state !== State.KEY_LOADING || data.frag !== this.fragCurrent || !this.levels) {\n return;\n }\n\n this.state = State.IDLE;\n var levelDetails = this.levels[data.frag.level].details;\n\n if (levelDetails) {\n this.loadFragment(data.frag, levelDetails, data.frag.start);\n }\n };\n\n _proto.onHandlerDestroying = function onHandlerDestroying() {\n this.stopLoad();\n\n _TaskLoop.prototype.onHandlerDestroying.call(this);\n };\n\n _proto.onHandlerDestroyed = function onHandlerDestroyed() {\n this.state = State.STOPPED;\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].KEY_LOADED, this.onKeyLoaded, this);\n\n if (this.fragmentLoader) {\n this.fragmentLoader.destroy();\n }\n\n if (this.decrypter) {\n this.decrypter.destroy();\n }\n\n this.hls = this.log = this.warn = this.decrypter = this.fragmentLoader = this.fragmentTracker = null;\n\n _TaskLoop.prototype.onHandlerDestroyed.call(this);\n };\n\n _proto.loadKey = function loadKey(frag, details) {\n this.log(\"Loading key for \" + frag.sn + \" of [\" + details.startSN + \"-\" + details.endSN + \"], \" + (this.logPrefix === '[stream-controller]' ? 'level' : 'track') + \" \" + frag.level);\n this.state = State.KEY_LOADING;\n this.fragCurrent = frag;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].KEY_LOADING, {\n frag: frag\n });\n };\n\n _proto.loadFragment = function loadFragment(frag, levelDetails, targetBufferTime) {\n this._loadFragForPlayback(frag, levelDetails, targetBufferTime);\n };\n\n _proto._loadFragForPlayback = function _loadFragForPlayback(frag, levelDetails, targetBufferTime) {\n var _this2 = this;\n\n var progressCallback = function progressCallback(data) {\n if (_this2.fragContextChanged(frag)) {\n _this2.warn(\"Fragment \" + frag.sn + (data.part ? ' p: ' + data.part.index : '') + \" of level \" + frag.level + \" was dropped during download.\");\n\n _this2.fragmentTracker.removeFragment(frag);\n\n return;\n }\n\n frag.stats.chunkCount++;\n\n _this2._handleFragmentLoadProgress(data);\n };\n\n this._doFragLoad(frag, levelDetails, targetBufferTime, progressCallback).then(function (data) {\n if (!data) {\n // if we're here we probably needed to backtrack or are waiting for more parts\n return;\n }\n\n _this2.fragLoadError = 0;\n var state = _this2.state;\n\n if (_this2.fragContextChanged(frag)) {\n if (state === State.FRAG_LOADING || state === State.BACKTRACKING || !_this2.fragCurrent && state === State.PARSING) {\n _this2.fragmentTracker.removeFragment(frag);\n\n _this2.state = State.IDLE;\n }\n\n return;\n }\n\n if ('payload' in data) {\n _this2.log(\"Loaded fragment \" + frag.sn + \" of level \" + frag.level);\n\n _this2.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].FRAG_LOADED, data); // Tracker backtrack must be called after onFragLoaded to update the fragment entity state to BACKTRACKED\n // This happens after handleTransmuxComplete when the worker or progressive is disabled\n\n\n if (_this2.state === State.BACKTRACKING) {\n _this2.fragmentTracker.backtrack(frag, data);\n\n _this2.resetFragmentLoading(frag);\n\n return;\n }\n } // Pass through the whole payload; controllers not implementing progressive loading receive data from this callback\n\n\n _this2._handleFragmentLoadComplete(data);\n }).catch(function (reason) {\n _this2.warn(reason);\n\n _this2.resetFragmentLoading(frag);\n });\n };\n\n _proto.flushMainBuffer = function flushMainBuffer(startOffset, endOffset, type) {\n if (type === void 0) {\n type = null;\n }\n\n if (!(startOffset - endOffset)) {\n return;\n } // When alternate audio is playing, the audio-stream-controller is responsible for the audio buffer. Otherwise,\n // passing a null type flushes both buffers\n\n\n var flushScope = {\n startOffset: startOffset,\n endOffset: endOffset,\n type: type\n }; // Reset load errors on flush\n\n this.fragLoadError = 0;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].BUFFER_FLUSHING, flushScope);\n };\n\n _proto._loadInitSegment = function _loadInitSegment(frag) {\n var _this3 = this;\n\n this._doFragLoad(frag).then(function (data) {\n if (!data || _this3.fragContextChanged(frag) || !_this3.levels) {\n throw new Error('init load aborted');\n }\n\n return data;\n }).then(function (data) {\n var hls = _this3.hls;\n var payload = data.payload;\n var decryptData = frag.decryptdata; // check to see if the payload needs to be decrypted\n\n if (payload && payload.byteLength > 0 && decryptData && decryptData.key && decryptData.iv && decryptData.method === 'AES-128') {\n var startTime = self.performance.now(); // decrypt the subtitles\n\n return _this3.decrypter.webCryptoDecrypt(new Uint8Array(payload), decryptData.key.buffer, decryptData.iv.buffer).then(function (decryptedData) {\n var endTime = self.performance.now();\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].FRAG_DECRYPTED, {\n frag: frag,\n payload: decryptedData,\n stats: {\n tstart: startTime,\n tdecrypt: endTime\n }\n });\n data.payload = decryptedData;\n return data;\n });\n }\n\n return data;\n }).then(function (data) {\n var fragCurrent = _this3.fragCurrent,\n hls = _this3.hls,\n levels = _this3.levels;\n\n if (!levels) {\n throw new Error('init load aborted, missing levels');\n }\n\n var details = levels[frag.level].details;\n console.assert(details, 'Level details are defined when init segment is loaded');\n var stats = frag.stats;\n _this3.state = State.IDLE;\n _this3.fragLoadError = 0;\n frag.data = new Uint8Array(data.payload);\n stats.parsing.start = stats.buffering.start = self.performance.now();\n stats.parsing.end = stats.buffering.end = self.performance.now(); // Silence FRAG_BUFFERED event if fragCurrent is null\n\n if (data.frag === fragCurrent) {\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].FRAG_BUFFERED, {\n stats: stats,\n frag: fragCurrent,\n part: null,\n id: frag.type\n });\n }\n\n _this3.tick();\n }).catch(function (reason) {\n _this3.warn(reason);\n\n _this3.resetFragmentLoading(frag);\n });\n };\n\n _proto.fragContextChanged = function fragContextChanged(frag) {\n var fragCurrent = this.fragCurrent;\n return !frag || !fragCurrent || frag.level !== fragCurrent.level || frag.sn !== fragCurrent.sn || frag.urlId !== fragCurrent.urlId;\n };\n\n _proto.fragBufferedComplete = function fragBufferedComplete(frag, part) {\n var media = this.mediaBuffer ? this.mediaBuffer : this.media;\n this.log(\"Buffered \" + frag.type + \" sn: \" + frag.sn + (part ? ' part: ' + part.index : '') + \" of \" + (this.logPrefix === '[stream-controller]' ? 'level' : 'track') + \" \" + frag.level + \" \" + _utils_time_ranges__WEBPACK_IMPORTED_MODULE_14__[\"default\"].toString(_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].getBuffered(media)));\n this.state = State.IDLE;\n this.tick();\n };\n\n _proto._handleFragmentLoadComplete = function _handleFragmentLoadComplete(fragLoadedEndData) {\n var transmuxer = this.transmuxer;\n\n if (!transmuxer) {\n return;\n }\n\n var frag = fragLoadedEndData.frag,\n part = fragLoadedEndData.part,\n partsLoaded = fragLoadedEndData.partsLoaded; // If we did not load parts, or loaded all parts, we have complete (not partial) fragment data\n\n var complete = !partsLoaded || partsLoaded.length === 0 || partsLoaded.some(function (fragLoaded) {\n return !fragLoaded;\n });\n var chunkMeta = new _types_transmuxer__WEBPACK_IMPORTED_MODULE_7__[\"ChunkMetadata\"](frag.level, frag.sn, frag.stats.chunkCount + 1, 0, part ? part.index : -1, !complete);\n transmuxer.flush(chunkMeta);\n } // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ;\n\n _proto._handleFragmentLoadProgress = function _handleFragmentLoadProgress(frag) {};\n\n _proto._doFragLoad = function _doFragLoad(frag, details, targetBufferTime, progressCallback) {\n var _this4 = this;\n\n if (targetBufferTime === void 0) {\n targetBufferTime = null;\n }\n\n if (!this.levels) {\n throw new Error('frag load aborted, missing levels');\n }\n\n targetBufferTime = Math.max(frag.start, targetBufferTime || 0);\n\n if (this.config.lowLatencyMode && details) {\n var partList = details.partList;\n\n if (partList && progressCallback) {\n if (targetBufferTime > frag.end && details.fragmentHint) {\n frag = details.fragmentHint;\n }\n\n var partIndex = this.getNextPart(partList, frag, targetBufferTime);\n\n if (partIndex > -1) {\n var part = partList[partIndex];\n this.log(\"Loading part sn: \" + frag.sn + \" p: \" + part.index + \" cc: \" + frag.cc + \" of playlist [\" + details.startSN + \"-\" + details.endSN + \"] parts [0-\" + partIndex + \"-\" + (partList.length - 1) + \"] \" + (this.logPrefix === '[stream-controller]' ? 'level' : 'track') + \": \" + frag.level + \", target: \" + parseFloat(targetBufferTime.toFixed(3)));\n this.nextLoadPosition = part.start + part.duration;\n this.state = State.FRAG_LOADING;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].FRAG_LOADING, {\n frag: frag,\n part: partList[partIndex],\n targetBufferTime: targetBufferTime\n });\n return this.doFragPartsLoad(frag, partList, partIndex, progressCallback).catch(function (error) {\n return _this4.handleFragLoadError(error);\n });\n } else if (!frag.url || this.loadedEndOfParts(partList, targetBufferTime)) {\n // Fragment hint has no parts\n return Promise.resolve(null);\n }\n }\n }\n\n this.log(\"Loading fragment \" + frag.sn + \" cc: \" + frag.cc + \" \" + (details ? 'of [' + details.startSN + '-' + details.endSN + '] ' : '') + (this.logPrefix === '[stream-controller]' ? 'level' : 'track') + \": \" + frag.level + \", target: \" + parseFloat(targetBufferTime.toFixed(3))); // Don't update nextLoadPosition for fragments which are not buffered\n\n if (Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(frag.sn) && !this.bitrateTest) {\n this.nextLoadPosition = frag.start + frag.duration;\n }\n\n this.state = State.FRAG_LOADING;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].FRAG_LOADING, {\n frag: frag,\n targetBufferTime: targetBufferTime\n });\n return this.fragmentLoader.load(frag, progressCallback).catch(function (error) {\n return _this4.handleFragLoadError(error);\n });\n };\n\n _proto.doFragPartsLoad = function doFragPartsLoad(frag, partList, partIndex, progressCallback) {\n var _this5 = this;\n\n return new Promise(function (resolve, reject) {\n var partsLoaded = [];\n\n var loadPartIndex = function loadPartIndex(index) {\n var part = partList[index];\n\n _this5.fragmentLoader.loadPart(frag, part, progressCallback).then(function (partLoadedData) {\n partsLoaded[part.index] = partLoadedData;\n var loadedPart = partLoadedData.part;\n\n _this5.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].FRAG_LOADED, partLoadedData);\n\n var nextPart = partList[index + 1];\n\n if (nextPart && nextPart.fragment === frag) {\n loadPartIndex(index + 1);\n } else {\n return resolve({\n frag: frag,\n part: loadedPart,\n partsLoaded: partsLoaded\n });\n }\n }).catch(reject);\n };\n\n loadPartIndex(partIndex);\n });\n };\n\n _proto.handleFragLoadError = function handleFragLoadError(_ref) {\n var data = _ref.data;\n\n if (data && data.details === _errors__WEBPACK_IMPORTED_MODULE_6__[\"ErrorDetails\"].INTERNAL_ABORTED) {\n this.handleFragLoadAborted(data.frag, data.part);\n } else {\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].ERROR, data);\n }\n\n return null;\n };\n\n _proto._handleTransmuxerFlush = function _handleTransmuxerFlush(chunkMeta) {\n var context = this.getCurrentContext(chunkMeta);\n\n if (!context || this.state !== State.PARSING) {\n if (!this.fragCurrent) {\n this.state = State.IDLE;\n }\n\n return;\n }\n\n var frag = context.frag,\n part = context.part,\n level = context.level;\n var now = self.performance.now();\n frag.stats.parsing.end = now;\n\n if (part) {\n part.stats.parsing.end = now;\n }\n\n this.updateLevelTiming(frag, part, level, chunkMeta.partial);\n };\n\n _proto.getCurrentContext = function getCurrentContext(chunkMeta) {\n var levels = this.levels;\n var levelIndex = chunkMeta.level,\n sn = chunkMeta.sn,\n partIndex = chunkMeta.part;\n\n if (!levels || !levels[levelIndex]) {\n this.warn(\"Levels object was unset while buffering fragment \" + sn + \" of level \" + levelIndex + \". The current chunk will not be buffered.\");\n return null;\n }\n\n var level = levels[levelIndex];\n var part = partIndex > -1 ? Object(_level_helper__WEBPACK_IMPORTED_MODULE_11__[\"getPartWith\"])(level, sn, partIndex) : null;\n var frag = part ? part.fragment : Object(_level_helper__WEBPACK_IMPORTED_MODULE_11__[\"getFragmentWithSN\"])(level, sn, this.fragCurrent);\n\n if (!frag) {\n return null;\n }\n\n return {\n frag: frag,\n part: part,\n level: level\n };\n };\n\n _proto.bufferFragmentData = function bufferFragmentData(data, frag, part, chunkMeta) {\n if (!data || this.state !== State.PARSING) {\n return;\n }\n\n var data1 = data.data1,\n data2 = data.data2;\n var buffer = data1;\n\n if (data1 && data2) {\n // Combine the moof + mdat so that we buffer with a single append\n buffer = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_8__[\"appendUint8Array\"])(data1, data2);\n }\n\n if (!buffer || !buffer.length) {\n return;\n }\n\n var segment = {\n type: data.type,\n frag: frag,\n part: part,\n chunkMeta: chunkMeta,\n parent: frag.type,\n data: buffer\n };\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].BUFFER_APPENDING, segment);\n\n if (data.dropped && data.independent && !part) {\n // Clear buffer so that we reload previous segments sequentially if required\n this.flushBufferGap(frag);\n }\n };\n\n _proto.flushBufferGap = function flushBufferGap(frag) {\n var media = this.media;\n\n if (!media) {\n return;\n } // If currentTime is not buffered, clear the back buffer so that we can backtrack as much as needed\n\n\n if (!_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].isBuffered(media, media.currentTime)) {\n this.flushMainBuffer(0, frag.start);\n return;\n } // Remove back-buffer without interrupting playback to allow back tracking\n\n\n var currentTime = media.currentTime;\n\n var bufferInfo = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].bufferInfo(media, currentTime, 0);\n\n var fragDuration = frag.duration;\n var segmentFraction = Math.min(this.config.maxFragLookUpTolerance * 2, fragDuration * 0.25);\n var start = Math.max(Math.min(frag.start - segmentFraction, bufferInfo.end - segmentFraction), currentTime + segmentFraction);\n\n if (frag.start - start > segmentFraction) {\n this.flushMainBuffer(start, frag.start);\n }\n };\n\n _proto.getFwdBufferInfo = function getFwdBufferInfo(bufferable, type) {\n var config = this.config;\n var pos = this.getLoadPosition();\n\n if (!Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(pos)) {\n return null;\n }\n\n var bufferInfo = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].bufferInfo(bufferable, pos, config.maxBufferHole); // Workaround flaw in getting forward buffer when maxBufferHole is smaller than gap at current pos\n\n\n if (bufferInfo.len === 0 && bufferInfo.nextStart !== undefined) {\n var bufferedFragAtPos = this.fragmentTracker.getBufferedFrag(pos, type);\n\n if (bufferedFragAtPos && bufferInfo.nextStart < bufferedFragAtPos.end) {\n return _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].bufferInfo(bufferable, pos, Math.max(bufferInfo.nextStart, config.maxBufferHole));\n }\n }\n\n return bufferInfo;\n };\n\n _proto.getMaxBufferLength = function getMaxBufferLength(levelBitrate) {\n var config = this.config;\n var maxBufLen;\n\n if (levelBitrate) {\n maxBufLen = Math.max(8 * config.maxBufferSize / levelBitrate, config.maxBufferLength);\n } else {\n maxBufLen = config.maxBufferLength;\n }\n\n return Math.min(maxBufLen, config.maxMaxBufferLength);\n };\n\n _proto.reduceMaxBufferLength = function reduceMaxBufferLength(threshold) {\n var config = this.config;\n var minLength = threshold || config.maxBufferLength;\n\n if (config.maxMaxBufferLength >= minLength) {\n // reduce max buffer length as it might be too high. we do this to avoid loop flushing ...\n config.maxMaxBufferLength /= 2;\n this.warn(\"Reduce max buffer length to \" + config.maxMaxBufferLength + \"s\");\n return true;\n }\n\n return false;\n };\n\n _proto.getNextFragment = function getNextFragment(pos, levelDetails) {\n var _frag, _frag2;\n\n var fragments = levelDetails.fragments;\n var fragLen = fragments.length;\n\n if (!fragLen) {\n return null;\n } // find fragment index, contiguous with end of buffer position\n\n\n var config = this.config;\n var start = fragments[0].start;\n var frag;\n\n if (levelDetails.live) {\n var initialLiveManifestSize = config.initialLiveManifestSize;\n\n if (fragLen < initialLiveManifestSize) {\n this.warn(\"Not enough fragments to start playback (have: \" + fragLen + \", need: \" + initialLiveManifestSize + \")\");\n return null;\n } // The real fragment start times for a live stream are only known after the PTS range for that level is known.\n // In order to discover the range, we load the best matching fragment for that level and demux it.\n // Do not load using live logic if the starting frag is requested - we want to use getFragmentAtPosition() so that\n // we get the fragment matching that start time\n\n\n if (!levelDetails.PTSKnown && !this.startFragRequested && this.startPosition === -1) {\n frag = this.getInitialLiveFragment(levelDetails, fragments);\n this.startPosition = frag ? this.hls.liveSyncPosition || frag.start : pos;\n }\n } else if (pos <= start) {\n // VoD playlist: if loadPosition before start of playlist, load first fragment\n frag = fragments[0];\n } // If we haven't run into any special cases already, just load the fragment most closely matching the requested position\n\n\n if (!frag) {\n var end = config.lowLatencyMode ? levelDetails.partEnd : levelDetails.fragmentEnd;\n frag = this.getFragmentAtPosition(pos, end, levelDetails);\n } // If an initSegment is present, it must be buffered first\n\n\n if ((_frag = frag) !== null && _frag !== void 0 && _frag.initSegment && !((_frag2 = frag) !== null && _frag2 !== void 0 && _frag2.initSegment.data) && !this.bitrateTest) {\n frag = frag.initSegment;\n }\n\n return frag;\n };\n\n _proto.getNextPart = function getNextPart(partList, frag, targetBufferTime) {\n var nextPart = -1;\n var contiguous = false;\n var independentAttrOmitted = true;\n\n for (var i = 0, len = partList.length; i < len; i++) {\n var part = partList[i];\n independentAttrOmitted = independentAttrOmitted && !part.independent;\n\n if (nextPart > -1 && targetBufferTime < part.start) {\n break;\n }\n\n var loaded = part.loaded;\n\n if (!loaded && (contiguous || part.independent || independentAttrOmitted) && part.fragment === frag) {\n nextPart = i;\n }\n\n contiguous = loaded;\n }\n\n return nextPart;\n };\n\n _proto.loadedEndOfParts = function loadedEndOfParts(partList, targetBufferTime) {\n var lastPart = partList[partList.length - 1];\n return lastPart && targetBufferTime > lastPart.start && lastPart.loaded;\n }\n /*\n This method is used find the best matching first fragment for a live playlist. This fragment is used to calculate the\n \"sliding\" of the playlist, which is its offset from the start of playback. After sliding we can compute the real\n start and end times for each fragment in the playlist (after which this method will not need to be called).\n */\n ;\n\n _proto.getInitialLiveFragment = function getInitialLiveFragment(levelDetails, fragments) {\n var fragPrevious = this.fragPrevious;\n var frag = null;\n\n if (fragPrevious) {\n if (levelDetails.hasProgramDateTime) {\n // Prefer using PDT, because it can be accurate enough to choose the correct fragment without knowing the level sliding\n this.log(\"Live playlist, switching playlist, load frag with same PDT: \" + fragPrevious.programDateTime);\n frag = Object(_fragment_finders__WEBPACK_IMPORTED_MODULE_10__[\"findFragmentByPDT\"])(fragments, fragPrevious.endProgramDateTime, this.config.maxFragLookUpTolerance);\n }\n\n if (!frag) {\n // SN does not need to be accurate between renditions, but depending on the packaging it may be so.\n var targetSN = fragPrevious.sn + 1;\n\n if (targetSN >= levelDetails.startSN && targetSN <= levelDetails.endSN) {\n var fragNext = fragments[targetSN - levelDetails.startSN]; // Ensure that we're staying within the continuity range, since PTS resets upon a new range\n\n if (fragPrevious.cc === fragNext.cc) {\n frag = fragNext;\n this.log(\"Live playlist, switching playlist, load frag with next SN: \" + frag.sn);\n }\n } // It's important to stay within the continuity range if available; otherwise the fragments in the playlist\n // will have the wrong start times\n\n\n if (!frag) {\n frag = Object(_fragment_finders__WEBPACK_IMPORTED_MODULE_10__[\"findFragWithCC\"])(fragments, fragPrevious.cc);\n\n if (frag) {\n this.log(\"Live playlist, switching playlist, load frag with same CC: \" + frag.sn);\n }\n }\n }\n } else {\n // Find a new start fragment when fragPrevious is null\n var liveStart = this.hls.liveSyncPosition;\n\n if (liveStart !== null) {\n frag = this.getFragmentAtPosition(liveStart, this.bitrateTest ? levelDetails.fragmentEnd : levelDetails.edge, levelDetails);\n }\n }\n\n return frag;\n }\n /*\n This method finds the best matching fragment given the provided position.\n */\n ;\n\n _proto.getFragmentAtPosition = function getFragmentAtPosition(bufferEnd, end, levelDetails) {\n var config = this.config,\n fragPrevious = this.fragPrevious;\n var fragments = levelDetails.fragments,\n endSN = levelDetails.endSN;\n var fragmentHint = levelDetails.fragmentHint;\n var tolerance = config.maxFragLookUpTolerance;\n var loadingParts = !!(config.lowLatencyMode && levelDetails.partList && fragmentHint);\n\n if (loadingParts && fragmentHint && !this.bitrateTest) {\n // Include incomplete fragment with parts at end\n fragments = fragments.concat(fragmentHint);\n endSN = fragmentHint.sn;\n }\n\n var frag;\n\n if (bufferEnd < end) {\n var lookupTolerance = bufferEnd > end - tolerance ? 0 : tolerance; // Remove the tolerance if it would put the bufferEnd past the actual end of stream\n // Uses buffer and sequence number to calculate switch segment (required if using EXT-X-DISCONTINUITY-SEQUENCE)\n\n frag = Object(_fragment_finders__WEBPACK_IMPORTED_MODULE_10__[\"findFragmentByPTS\"])(fragPrevious, fragments, bufferEnd, lookupTolerance);\n } else {\n // reach end of playlist\n frag = fragments[fragments.length - 1];\n }\n\n if (frag) {\n var curSNIdx = frag.sn - levelDetails.startSN;\n var sameLevel = fragPrevious && frag.level === fragPrevious.level;\n var nextFrag = fragments[curSNIdx + 1];\n var fragState = this.fragmentTracker.getState(frag);\n\n if (fragState === _fragment_tracker__WEBPACK_IMPORTED_MODULE_2__[\"FragmentState\"].BACKTRACKED) {\n frag = null;\n var i = curSNIdx;\n\n while (fragments[i] && this.fragmentTracker.getState(fragments[i]) === _fragment_tracker__WEBPACK_IMPORTED_MODULE_2__[\"FragmentState\"].BACKTRACKED) {\n // When fragPrevious is null, backtrack to first the first fragment is not BACKTRACKED for loading\n // When fragPrevious is set, we want the first BACKTRACKED fragment for parsing and buffering\n if (!fragPrevious) {\n frag = fragments[--i];\n } else {\n frag = fragments[i--];\n }\n }\n\n if (!frag) {\n frag = nextFrag;\n }\n } else if (fragPrevious && frag.sn === fragPrevious.sn && !loadingParts) {\n // Force the next fragment to load if the previous one was already selected. This can occasionally happen with\n // non-uniform fragment durations\n if (sameLevel) {\n if (frag.sn < endSN && this.fragmentTracker.getState(nextFrag) !== _fragment_tracker__WEBPACK_IMPORTED_MODULE_2__[\"FragmentState\"].OK) {\n this.log(\"SN \" + frag.sn + \" just loaded, load next one: \" + nextFrag.sn);\n frag = nextFrag;\n } else {\n frag = null;\n }\n }\n }\n }\n\n return frag;\n };\n\n _proto.synchronizeToLiveEdge = function synchronizeToLiveEdge(levelDetails) {\n var config = this.config,\n media = this.media;\n\n if (!media) {\n return;\n }\n\n var liveSyncPosition = this.hls.liveSyncPosition;\n var currentTime = media.currentTime;\n var start = levelDetails.fragments[0].start;\n var end = levelDetails.edge;\n var withinSlidingWindow = currentTime >= start - config.maxFragLookUpTolerance && currentTime <= end; // Continue if we can seek forward to sync position or if current time is outside of sliding window\n\n if (liveSyncPosition !== null && media.duration > liveSyncPosition && (currentTime < liveSyncPosition || !withinSlidingWindow)) {\n // Continue if buffer is starving or if current time is behind max latency\n var maxLatency = config.liveMaxLatencyDuration !== undefined ? config.liveMaxLatencyDuration : config.liveMaxLatencyDurationCount * levelDetails.targetduration;\n\n if (!withinSlidingWindow && media.readyState < 4 || currentTime < end - maxLatency) {\n if (!this.loadedmetadata) {\n this.nextLoadPosition = liveSyncPosition;\n } // Only seek if ready and there is not a significant forward buffer available for playback\n\n\n if (media.readyState) {\n this.warn(\"Playback: \" + currentTime.toFixed(3) + \" is located too far from the end of live sliding playlist: \" + end + \", reset currentTime to : \" + liveSyncPosition.toFixed(3));\n media.currentTime = liveSyncPosition;\n }\n }\n }\n };\n\n _proto.alignPlaylists = function alignPlaylists(details, previousDetails) {\n var levels = this.levels,\n levelLastLoaded = this.levelLastLoaded,\n fragPrevious = this.fragPrevious;\n var lastLevel = levelLastLoaded !== null ? levels[levelLastLoaded] : null; // FIXME: If not for `shouldAlignOnDiscontinuities` requiring fragPrevious.cc,\n // this could all go in level-helper mergeDetails()\n\n var length = details.fragments.length;\n\n if (!length) {\n this.warn(\"No fragments in live playlist\");\n return 0;\n }\n\n var slidingStart = details.fragments[0].start;\n var firstLevelLoad = !previousDetails;\n var aligned = details.alignedSliding && Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(slidingStart);\n\n if (firstLevelLoad || !aligned && !slidingStart) {\n Object(_utils_discontinuities__WEBPACK_IMPORTED_MODULE_9__[\"alignStream\"])(fragPrevious, lastLevel, details);\n var alignedSlidingStart = details.fragments[0].start;\n this.log(\"Live playlist sliding: \" + alignedSlidingStart.toFixed(2) + \" start-sn: \" + (previousDetails ? previousDetails.startSN : 'na') + \"->\" + details.startSN + \" prev-sn: \" + (fragPrevious ? fragPrevious.sn : 'na') + \" fragments: \" + length);\n return alignedSlidingStart;\n }\n\n return slidingStart;\n };\n\n _proto.waitForCdnTuneIn = function waitForCdnTuneIn(details) {\n // Wait for Low-Latency CDN Tune-in to get an updated playlist\n var advancePartLimit = 3;\n return details.live && details.canBlockReload && details.tuneInGoal > Math.max(details.partHoldBack, details.partTarget * advancePartLimit);\n };\n\n _proto.setStartPosition = function setStartPosition(details, sliding) {\n // compute start position if set to -1. use it straight away if value is defined\n var startPosition = this.startPosition;\n\n if (startPosition < sliding) {\n startPosition = -1;\n }\n\n if (startPosition === -1 || this.lastCurrentTime === -1) {\n // first, check if start time offset has been set in playlist, if yes, use this value\n var startTimeOffset = details.startTimeOffset;\n\n if (Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(startTimeOffset)) {\n startPosition = sliding + startTimeOffset;\n\n if (startTimeOffset < 0) {\n startPosition += details.totalduration;\n }\n\n startPosition = Math.min(Math.max(sliding, startPosition), sliding + details.totalduration);\n this.log(\"Start time offset \" + startTimeOffset + \" found in playlist, adjust startPosition to \" + startPosition);\n this.startPosition = startPosition;\n } else if (details.live) {\n // Leave this.startPosition at -1, so that we can use `getInitialLiveFragment` logic when startPosition has\n // not been specified via the config or an as an argument to startLoad (#3736).\n startPosition = this.hls.liveSyncPosition || sliding;\n } else {\n this.startPosition = startPosition = 0;\n }\n\n this.lastCurrentTime = startPosition;\n }\n\n this.nextLoadPosition = startPosition;\n };\n\n _proto.getLoadPosition = function getLoadPosition() {\n var media = this.media; // if we have not yet loaded any fragment, start loading from start position\n\n var pos = 0;\n\n if (this.loadedmetadata && media) {\n pos = media.currentTime;\n } else if (this.nextLoadPosition) {\n pos = this.nextLoadPosition;\n }\n\n return pos;\n };\n\n _proto.handleFragLoadAborted = function handleFragLoadAborted(frag, part) {\n if (this.transmuxer && frag.sn !== 'initSegment' && frag.stats.aborted) {\n this.warn(\"Fragment \" + frag.sn + (part ? ' part' + part.index : '') + \" of level \" + frag.level + \" was aborted\");\n this.resetFragmentLoading(frag);\n }\n };\n\n _proto.resetFragmentLoading = function resetFragmentLoading(frag) {\n if (!this.fragCurrent || !this.fragContextChanged(frag)) {\n this.state = State.IDLE;\n }\n };\n\n _proto.onFragmentOrKeyLoadError = function onFragmentOrKeyLoadError(filterType, data) {\n if (data.fatal) {\n return;\n }\n\n var frag = data.frag; // Handle frag error related to caller's filterType\n\n if (!frag || frag.type !== filterType) {\n return;\n }\n\n var fragCurrent = this.fragCurrent;\n console.assert(fragCurrent && frag.sn === fragCurrent.sn && frag.level === fragCurrent.level && frag.urlId === fragCurrent.urlId, 'Frag load error must match current frag to retry');\n var config = this.config; // keep retrying until the limit will be reached\n\n if (this.fragLoadError + 1 <= config.fragLoadingMaxRetry) {\n if (this.resetLiveStartWhenNotLoaded(frag.level)) {\n return;\n } // exponential backoff capped to config.fragLoadingMaxRetryTimeout\n\n\n var delay = Math.min(Math.pow(2, this.fragLoadError) * config.fragLoadingRetryDelay, config.fragLoadingMaxRetryTimeout);\n this.warn(\"Fragment \" + frag.sn + \" of \" + filterType + \" \" + frag.level + \" failed to load, retrying in \" + delay + \"ms\");\n this.retryDate = self.performance.now() + delay;\n this.fragLoadError++;\n this.state = State.FRAG_LOADING_WAITING_RETRY;\n } else if (data.levelRetry) {\n if (filterType === _types_loader__WEBPACK_IMPORTED_MODULE_15__[\"PlaylistLevelType\"].AUDIO) {\n // Reset current fragment since audio track audio is essential and may not have a fail-over track\n this.fragCurrent = null;\n } // Fragment errors that result in a level switch or redundant fail-over\n // should reset the stream controller state to idle\n\n\n this.fragLoadError = 0;\n this.state = State.IDLE;\n } else {\n _utils_logger__WEBPACK_IMPORTED_MODULE_4__[\"logger\"].error(data.details + \" reaches max retry, redispatch as fatal ...\"); // switch error to fatal\n\n\n data.fatal = true;\n this.hls.stopLoad();\n this.state = State.ERROR;\n }\n };\n\n _proto.afterBufferFlushed = function afterBufferFlushed(media, bufferType, playlistType) {\n if (!media) {\n return;\n } // After successful buffer flushing, filter flushed fragments from bufferedFrags use mediaBuffered instead of media\n // (so that we will check against video.buffered ranges in case of alt audio track)\n\n\n var bufferedTimeRanges = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].getBuffered(media);\n\n this.fragmentTracker.detectEvictedFragments(bufferType, bufferedTimeRanges, playlistType);\n\n if (this.state === State.ENDED) {\n this.resetLoadingState();\n }\n };\n\n _proto.resetLoadingState = function resetLoadingState() {\n this.fragCurrent = null;\n this.fragPrevious = null;\n this.state = State.IDLE;\n };\n\n _proto.resetLiveStartWhenNotLoaded = function resetLiveStartWhenNotLoaded(level) {\n // if loadedmetadata is not set, it means that we are emergency switch down on first frag\n // in that case, reset startFragRequested flag\n if (!this.loadedmetadata) {\n this.startFragRequested = false;\n var details = this.levels ? this.levels[level].details : null;\n\n if (details !== null && details !== void 0 && details.live) {\n // We can't afford to retry after a delay in a live scenario. Update the start position and return to IDLE.\n this.startPosition = -1;\n this.setStartPosition(details, 0);\n this.resetLoadingState();\n return true;\n }\n\n this.nextLoadPosition = this.startPosition;\n }\n\n return false;\n };\n\n _proto.updateLevelTiming = function updateLevelTiming(frag, part, level, partial) {\n var _this6 = this;\n\n var details = level.details;\n console.assert(!!details, 'level.details must be defined');\n var parsed = Object.keys(frag.elementaryStreams).reduce(function (result, type) {\n var info = frag.elementaryStreams[type];\n\n if (info) {\n var parsedDuration = info.endPTS - info.startPTS;\n\n if (parsedDuration <= 0) {\n // Destroy the transmuxer after it's next time offset failed to advance because duration was <= 0.\n // The new transmuxer will be configured with a time offset matching the next fragment start,\n // preventing the timeline from shifting.\n _this6.warn(\"Could not parse fragment \" + frag.sn + \" \" + type + \" duration reliably (\" + parsedDuration + \") resetting transmuxer to fallback to playlist timing\");\n\n _this6.resetTransmuxer();\n\n return result || false;\n }\n\n var drift = partial ? 0 : Object(_level_helper__WEBPACK_IMPORTED_MODULE_11__[\"updateFragPTSDTS\"])(details, frag, info.startPTS, info.endPTS, info.startDTS, info.endDTS);\n\n _this6.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].LEVEL_PTS_UPDATED, {\n details: details,\n level: level,\n drift: drift,\n type: type,\n frag: frag,\n start: info.startPTS,\n end: info.endPTS\n });\n\n return true;\n }\n\n return result;\n }, false);\n\n if (parsed) {\n this.state = State.PARSED;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].FRAG_PARSED, {\n frag: frag,\n part: part\n });\n } else {\n this.resetLoadingState();\n }\n };\n\n _proto.resetTransmuxer = function resetTransmuxer() {\n if (this.transmuxer) {\n this.transmuxer.destroy();\n this.transmuxer = null;\n }\n };\n\n _createClass(BaseStreamController, [{\n key: \"state\",\n get: function get() {\n return this._state;\n },\n set: function set(nextState) {\n var previousState = this._state;\n\n if (previousState !== nextState) {\n this._state = nextState;\n this.log(previousState + \"->\" + nextState);\n }\n }\n }]);\n\n return BaseStreamController;\n }(_task_loop__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n /***/\n\n },\n\n /***/\n \"./src/controller/buffer-controller.ts\":\n /*!*********************************************!*\\\n !*** ./src/controller/buffer-controller.ts ***!\n \\*********************************************/\n\n /*! exports provided: default */\n\n /***/\n function srcControllerBufferControllerTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"default\", function () {\n return BufferController;\n });\n /* harmony import */\n\n\n var _home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./src/polyfills/number */\n \"./src/polyfills/number.ts\");\n /* harmony import */\n\n\n var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ../events */\n \"./src/events.ts\");\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ../utils/logger */\n \"./src/utils/logger.ts\");\n /* harmony import */\n\n\n var _errors__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\n /*! ../errors */\n \"./src/errors.ts\");\n /* harmony import */\n\n\n var _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\n /*! ../utils/buffer-helper */\n \"./src/utils/buffer-helper.ts\");\n /* harmony import */\n\n\n var _utils_mediasource_helper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(\n /*! ../utils/mediasource-helper */\n \"./src/utils/mediasource-helper.ts\");\n /* harmony import */\n\n\n var _loader_fragment__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(\n /*! ../loader/fragment */\n \"./src/loader/fragment.ts\");\n /* harmony import */\n\n\n var _buffer_operation_queue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(\n /*! ./buffer-operation-queue */\n \"./src/controller/buffer-operation-queue.ts\");\n\n var MediaSource = Object(_utils_mediasource_helper__WEBPACK_IMPORTED_MODULE_5__[\"getMediaSource\"])();\n var VIDEO_CODEC_PROFILE_REPACE = /([ha]vc.)(?:\\.[^.,]+)+/;\n\n var BufferController = /*#__PURE__*/function () {\n // The level details used to determine duration, target-duration and live\n // cache the self generated object url to detect hijack of video tag\n // A queue of buffer operations which require the SourceBuffer to not be updating upon execution\n // References to event listeners for each SourceBuffer, so that they can be referenced for event removal\n // The number of BUFFER_CODEC events received before any sourceBuffers are created\n // The total number of BUFFER_CODEC events received\n // A reference to the attached media element\n // A reference to the active media source\n // counters\n function BufferController(_hls) {\n var _this = this;\n\n this.details = null;\n this._objectUrl = null;\n this.operationQueue = void 0;\n this.listeners = void 0;\n this.hls = void 0;\n this.bufferCodecEventsExpected = 0;\n this._bufferCodecEventsTotal = 0;\n this.media = null;\n this.mediaSource = null;\n this.appendError = 0;\n this.tracks = {};\n this.pendingTracks = {};\n this.sourceBuffer = void 0;\n\n this._onMediaSourceOpen = function () {\n var hls = _this.hls,\n media = _this.media,\n mediaSource = _this.mediaSource;\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('[buffer-controller]: Media source opened');\n\n if (media) {\n _this.updateMediaElementDuration();\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_ATTACHED, {\n media: media\n });\n }\n\n if (mediaSource) {\n // once received, don't listen anymore to sourceopen event\n mediaSource.removeEventListener('sourceopen', _this._onMediaSourceOpen);\n }\n\n _this.checkPendingTracks();\n };\n\n this._onMediaSourceClose = function () {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('[buffer-controller]: Media source closed');\n };\n\n this._onMediaSourceEnded = function () {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('[buffer-controller]: Media source ended');\n };\n\n this.hls = _hls;\n\n this._initSourceBuffer();\n\n this.registerListeners();\n }\n\n var _proto = BufferController.prototype;\n\n _proto.hasSourceTypes = function hasSourceTypes() {\n return this.getSourceBufferTypes().length > 0 || Object.keys(this.pendingTracks).length > 0;\n };\n\n _proto.destroy = function destroy() {\n this.unregisterListeners();\n this.details = null;\n };\n\n _proto.registerListeners = function registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_ATTACHING, this.onMediaAttaching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_RESET, this.onBufferReset, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_APPENDING, this.onBufferAppending, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_CODECS, this.onBufferCodecs, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_EOS, this.onBufferEos, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_FLUSHING, this.onBufferFlushing, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_UPDATED, this.onLevelUpdated, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_PARSED, this.onFragParsed, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_CHANGED, this.onFragChanged, this);\n };\n\n _proto.unregisterListeners = function unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_ATTACHING, this.onMediaAttaching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_RESET, this.onBufferReset, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_APPENDING, this.onBufferAppending, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_CODECS, this.onBufferCodecs, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_EOS, this.onBufferEos, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_FLUSHING, this.onBufferFlushing, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_UPDATED, this.onLevelUpdated, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_PARSED, this.onFragParsed, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_CHANGED, this.onFragChanged, this);\n };\n\n _proto._initSourceBuffer = function _initSourceBuffer() {\n this.sourceBuffer = {};\n this.operationQueue = new _buffer_operation_queue__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this.sourceBuffer);\n this.listeners = {\n audio: [],\n video: [],\n audiovideo: []\n };\n };\n\n _proto.onManifestParsed = function onManifestParsed(event, data) {\n // in case of alt audio 2 BUFFER_CODECS events will be triggered, one per stream controller\n // sourcebuffers will be created all at once when the expected nb of tracks will be reached\n // in case alt audio is not used, only one BUFFER_CODEC event will be fired from main stream controller\n // it will contain the expected nb of source buffers, no need to compute it\n var codecEvents = 2;\n\n if (data.audio && !data.video || !data.altAudio) {\n codecEvents = 1;\n }\n\n this.bufferCodecEventsExpected = this._bufferCodecEventsTotal = codecEvents;\n this.details = null;\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(this.bufferCodecEventsExpected + \" bufferCodec event(s) expected\");\n };\n\n _proto.onMediaAttaching = function onMediaAttaching(event, data) {\n var media = this.media = data.media;\n\n if (media && MediaSource) {\n var ms = this.mediaSource = new MediaSource(); // MediaSource listeners are arrow functions with a lexical scope, and do not need to be bound\n\n ms.addEventListener('sourceopen', this._onMediaSourceOpen);\n ms.addEventListener('sourceended', this._onMediaSourceEnded);\n ms.addEventListener('sourceclose', this._onMediaSourceClose); // link video and media Source\n\n media.src = self.URL.createObjectURL(ms); // cache the locally generated object url\n\n this._objectUrl = media.src;\n }\n };\n\n _proto.onMediaDetaching = function onMediaDetaching() {\n var media = this.media,\n mediaSource = this.mediaSource,\n _objectUrl = this._objectUrl;\n\n if (mediaSource) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('[buffer-controller]: media source detaching');\n\n if (mediaSource.readyState === 'open') {\n try {\n // endOfStream could trigger exception if any sourcebuffer is in updating state\n // we don't really care about checking sourcebuffer state here,\n // as we are anyway detaching the MediaSource\n // let's just avoid this exception to propagate\n mediaSource.endOfStream();\n } catch (err) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"[buffer-controller]: onMediaDetaching: \" + err.message + \" while calling endOfStream\");\n }\n } // Clean up the SourceBuffers by invoking onBufferReset\n\n\n this.onBufferReset();\n mediaSource.removeEventListener('sourceopen', this._onMediaSourceOpen);\n mediaSource.removeEventListener('sourceended', this._onMediaSourceEnded);\n mediaSource.removeEventListener('sourceclose', this._onMediaSourceClose); // Detach properly the MediaSource from the HTMLMediaElement as\n // suggested in https://github.com/w3c/media-source/issues/53.\n\n if (media) {\n if (_objectUrl) {\n self.URL.revokeObjectURL(_objectUrl);\n } // clean up video tag src only if it's our own url. some external libraries might\n // hijack the video tag and change its 'src' without destroying the Hls instance first\n\n\n if (media.src === _objectUrl) {\n media.removeAttribute('src');\n media.load();\n } else {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn('[buffer-controller]: media.src was changed by a third party - skip cleanup');\n }\n }\n\n this.mediaSource = null;\n this.media = null;\n this._objectUrl = null;\n this.bufferCodecEventsExpected = this._bufferCodecEventsTotal;\n this.pendingTracks = {};\n this.tracks = {};\n }\n\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_DETACHED, undefined);\n };\n\n _proto.onBufferReset = function onBufferReset() {\n var _this2 = this;\n\n this.getSourceBufferTypes().forEach(function (type) {\n var sb = _this2.sourceBuffer[type];\n\n try {\n if (sb) {\n _this2.removeBufferListeners(type);\n\n if (_this2.mediaSource) {\n _this2.mediaSource.removeSourceBuffer(sb);\n } // Synchronously remove the SB from the map before the next call in order to prevent an async function from\n // accessing it\n\n\n _this2.sourceBuffer[type] = undefined;\n }\n } catch (err) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"[buffer-controller]: Failed to reset the \" + type + \" buffer\", err);\n }\n });\n\n this._initSourceBuffer();\n };\n\n _proto.onBufferCodecs = function onBufferCodecs(event, data) {\n var _this3 = this;\n\n var sourceBufferCount = this.getSourceBufferTypes().length;\n Object.keys(data).forEach(function (trackName) {\n if (sourceBufferCount) {\n // check if SourceBuffer codec needs to change\n var track = _this3.tracks[trackName];\n\n if (track && typeof track.buffer.changeType === 'function') {\n var _data$trackName = data[trackName],\n codec = _data$trackName.codec,\n levelCodec = _data$trackName.levelCodec,\n container = _data$trackName.container;\n var currentCodec = (track.levelCodec || track.codec).replace(VIDEO_CODEC_PROFILE_REPACE, '$1');\n var nextCodec = (levelCodec || codec).replace(VIDEO_CODEC_PROFILE_REPACE, '$1');\n\n if (currentCodec !== nextCodec) {\n var mimeType = container + \";codecs=\" + (levelCodec || codec);\n\n _this3.appendChangeType(trackName, mimeType);\n }\n }\n } else {\n // if source buffer(s) not created yet, appended buffer tracks in this.pendingTracks\n _this3.pendingTracks[trackName] = data[trackName];\n }\n }); // if sourcebuffers already created, do nothing ...\n\n if (sourceBufferCount) {\n return;\n }\n\n this.bufferCodecEventsExpected = Math.max(this.bufferCodecEventsExpected - 1, 0);\n\n if (this.mediaSource && this.mediaSource.readyState === 'open') {\n this.checkPendingTracks();\n }\n };\n\n _proto.appendChangeType = function appendChangeType(type, mimeType) {\n var _this4 = this;\n\n var operationQueue = this.operationQueue;\n var operation = {\n execute: function execute() {\n var sb = _this4.sourceBuffer[type];\n\n if (sb) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"[buffer-controller]: changing \" + type + \" sourceBuffer type to \" + mimeType);\n\n sb.changeType(mimeType);\n }\n\n operationQueue.shiftAndExecuteNext(type);\n },\n onStart: function onStart() {},\n onComplete: function onComplete() {},\n onError: function onError(e) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"[buffer-controller]: Failed to change \" + type + \" SourceBuffer type\", e);\n }\n };\n operationQueue.append(operation, type);\n };\n\n _proto.onBufferAppending = function onBufferAppending(event, eventData) {\n var _this5 = this;\n\n var hls = this.hls,\n operationQueue = this.operationQueue,\n tracks = this.tracks;\n var data = eventData.data,\n type = eventData.type,\n frag = eventData.frag,\n part = eventData.part,\n chunkMeta = eventData.chunkMeta;\n var chunkStats = chunkMeta.buffering[type];\n var bufferAppendingStart = self.performance.now();\n chunkStats.start = bufferAppendingStart;\n var fragBuffering = frag.stats.buffering;\n var partBuffering = part ? part.stats.buffering : null;\n\n if (fragBuffering.start === 0) {\n fragBuffering.start = bufferAppendingStart;\n }\n\n if (partBuffering && partBuffering.start === 0) {\n partBuffering.start = bufferAppendingStart;\n } // TODO: Only update timestampOffset when audio/mpeg fragment or part is not contiguous with previously appended\n // Adjusting `SourceBuffer.timestampOffset` (desired point in the timeline where the next frames should be appended)\n // in Chrome browser when we detect MPEG audio container and time delta between level PTS and `SourceBuffer.timestampOffset`\n // is greater than 100ms (this is enough to handle seek for VOD or level change for LIVE videos).\n // More info here: https://github.com/video-dev/hls.js/issues/332#issuecomment-257986486\n\n\n var audioTrack = tracks.audio;\n var checkTimestampOffset = type === 'audio' && chunkMeta.id === 1 && (audioTrack === null || audioTrack === void 0 ? void 0 : audioTrack.container) === 'audio/mpeg';\n var operation = {\n execute: function execute() {\n chunkStats.executeStart = self.performance.now();\n\n if (checkTimestampOffset) {\n var sb = _this5.sourceBuffer[type];\n\n if (sb) {\n var delta = frag.start - sb.timestampOffset;\n\n if (Math.abs(delta) >= 0.1) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"[buffer-controller]: Updating audio SourceBuffer timestampOffset to \" + frag.start + \" (delta: \" + delta + \") sn: \" + frag.sn + \")\");\n\n sb.timestampOffset = frag.start;\n }\n }\n }\n\n _this5.appendExecutor(data, type);\n },\n onStart: function onStart() {// logger.debug(`[buffer-controller]: ${type} SourceBuffer updatestart`);\n },\n onComplete: function onComplete() {\n // logger.debug(`[buffer-controller]: ${type} SourceBuffer updateend`);\n var end = self.performance.now();\n chunkStats.executeEnd = chunkStats.end = end;\n\n if (fragBuffering.first === 0) {\n fragBuffering.first = end;\n }\n\n if (partBuffering && partBuffering.first === 0) {\n partBuffering.first = end;\n }\n\n var sourceBuffer = _this5.sourceBuffer;\n var timeRanges = {};\n\n for (var _type in sourceBuffer) {\n timeRanges[_type] = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_4__[\"BufferHelper\"].getBuffered(sourceBuffer[_type]);\n }\n\n _this5.appendError = 0;\n\n _this5.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_APPENDED, {\n type: type,\n frag: frag,\n part: part,\n chunkMeta: chunkMeta,\n parent: frag.type,\n timeRanges: timeRanges\n });\n },\n onError: function onError(err) {\n // in case any error occured while appending, put back segment in segments table\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error(\"[buffer-controller]: Error encountered while trying to append to the \" + type + \" SourceBuffer\", err);\n\n var event = {\n type: _errors__WEBPACK_IMPORTED_MODULE_3__[\"ErrorTypes\"].MEDIA_ERROR,\n parent: frag.type,\n details: _errors__WEBPACK_IMPORTED_MODULE_3__[\"ErrorDetails\"].BUFFER_APPEND_ERROR,\n err: err,\n fatal: false\n };\n\n if (err.code === DOMException.QUOTA_EXCEEDED_ERR) {\n // QuotaExceededError: http://www.w3.org/TR/html5/infrastructure.html#quotaexceedederror\n // let's stop appending any segments, and report BUFFER_FULL_ERROR error\n event.details = _errors__WEBPACK_IMPORTED_MODULE_3__[\"ErrorDetails\"].BUFFER_FULL_ERROR;\n } else {\n _this5.appendError++;\n event.details = _errors__WEBPACK_IMPORTED_MODULE_3__[\"ErrorDetails\"].BUFFER_APPEND_ERROR;\n /* with UHD content, we could get loop of quota exceeded error until\n browser is able to evict some data from sourcebuffer. Retrying can help recover.\n */\n\n if (_this5.appendError > hls.config.appendErrorMaxRetry) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error(\"[buffer-controller]: Failed \" + hls.config.appendErrorMaxRetry + \" times to append segment in sourceBuffer\");\n\n event.fatal = true;\n }\n }\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, event);\n }\n };\n operationQueue.append(operation, type);\n };\n\n _proto.onBufferFlushing = function onBufferFlushing(event, data) {\n var _this6 = this;\n\n var operationQueue = this.operationQueue;\n\n var flushOperation = function flushOperation(type) {\n return {\n execute: _this6.removeExecutor.bind(_this6, type, data.startOffset, data.endOffset),\n onStart: function onStart() {// logger.debug(`[buffer-controller]: Started flushing ${data.startOffset} -> ${data.endOffset} for ${type} Source Buffer`);\n },\n onComplete: function onComplete() {\n // logger.debug(`[buffer-controller]: Finished flushing ${data.startOffset} -> ${data.endOffset} for ${type} Source Buffer`);\n _this6.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_FLUSHED, {\n type: type\n });\n },\n onError: function onError(e) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"[buffer-controller]: Failed to remove from \" + type + \" SourceBuffer\", e);\n }\n };\n };\n\n if (data.type) {\n operationQueue.append(flushOperation(data.type), data.type);\n } else {\n this.getSourceBufferTypes().forEach(function (type) {\n operationQueue.append(flushOperation(type), type);\n });\n }\n };\n\n _proto.onFragParsed = function onFragParsed(event, data) {\n var _this7 = this;\n\n var frag = data.frag,\n part = data.part;\n var buffersAppendedTo = [];\n var elementaryStreams = part ? part.elementaryStreams : frag.elementaryStreams;\n\n if (elementaryStreams[_loader_fragment__WEBPACK_IMPORTED_MODULE_6__[\"ElementaryStreamTypes\"].AUDIOVIDEO]) {\n buffersAppendedTo.push('audiovideo');\n } else {\n if (elementaryStreams[_loader_fragment__WEBPACK_IMPORTED_MODULE_6__[\"ElementaryStreamTypes\"].AUDIO]) {\n buffersAppendedTo.push('audio');\n }\n\n if (elementaryStreams[_loader_fragment__WEBPACK_IMPORTED_MODULE_6__[\"ElementaryStreamTypes\"].VIDEO]) {\n buffersAppendedTo.push('video');\n }\n }\n\n var onUnblocked = function onUnblocked() {\n var now = self.performance.now();\n frag.stats.buffering.end = now;\n\n if (part) {\n part.stats.buffering.end = now;\n }\n\n var stats = part ? part.stats : frag.stats;\n\n _this7.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_BUFFERED, {\n frag: frag,\n part: part,\n stats: stats,\n id: frag.type\n });\n };\n\n if (buffersAppendedTo.length === 0) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"Fragments must have at least one ElementaryStreamType set. type: \" + frag.type + \" level: \" + frag.level + \" sn: \" + frag.sn);\n }\n\n this.blockBuffers(onUnblocked, buffersAppendedTo);\n };\n\n _proto.onFragChanged = function onFragChanged(event, data) {\n this.flushBackBuffer();\n } // on BUFFER_EOS mark matching sourcebuffer(s) as ended and trigger checkEos()\n // an undefined data.type will mark all buffers as EOS.\n ;\n\n _proto.onBufferEos = function onBufferEos(event, data) {\n var _this8 = this;\n\n var ended = this.getSourceBufferTypes().reduce(function (acc, type) {\n var sb = _this8.sourceBuffer[type];\n\n if (!data.type || data.type === type) {\n if (sb && !sb.ended) {\n sb.ended = true;\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"[buffer-controller]: \" + type + \" sourceBuffer now EOS\");\n }\n }\n\n return acc && !!(!sb || sb.ended);\n }, true);\n\n if (ended) {\n this.blockBuffers(function () {\n var mediaSource = _this8.mediaSource;\n\n if (!mediaSource || mediaSource.readyState !== 'open') {\n return;\n } // Allow this to throw and be caught by the enqueueing function\n\n\n mediaSource.endOfStream();\n });\n }\n };\n\n _proto.onLevelUpdated = function onLevelUpdated(event, _ref) {\n var details = _ref.details;\n\n if (!details.fragments.length) {\n return;\n }\n\n this.details = details;\n\n if (this.getSourceBufferTypes().length) {\n this.blockBuffers(this.updateMediaElementDuration.bind(this));\n } else {\n this.updateMediaElementDuration();\n }\n };\n\n _proto.flushBackBuffer = function flushBackBuffer() {\n var hls = this.hls,\n details = this.details,\n media = this.media,\n sourceBuffer = this.sourceBuffer;\n\n if (!media || details === null) {\n return;\n }\n\n var sourceBufferTypes = this.getSourceBufferTypes();\n\n if (!sourceBufferTypes.length) {\n return;\n } // Support for deprecated liveBackBufferLength\n\n\n var backBufferLength = details.live && hls.config.liveBackBufferLength !== null ? hls.config.liveBackBufferLength : hls.config.backBufferLength;\n\n if (!Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(backBufferLength) || backBufferLength < 0) {\n return;\n }\n\n var currentTime = media.currentTime;\n var targetDuration = details.levelTargetDuration;\n var maxBackBufferLength = Math.max(backBufferLength, targetDuration);\n var targetBackBufferPosition = Math.floor(currentTime / targetDuration) * targetDuration - maxBackBufferLength;\n sourceBufferTypes.forEach(function (type) {\n var sb = sourceBuffer[type];\n\n if (sb) {\n var buffered = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_4__[\"BufferHelper\"].getBuffered(sb); // when target buffer start exceeds actual buffer start\n\n\n if (buffered.length > 0 && targetBackBufferPosition > buffered.start(0)) {\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BACK_BUFFER_REACHED, {\n bufferEnd: targetBackBufferPosition\n }); // Support for deprecated event:\n\n if (details.live) {\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LIVE_BACK_BUFFER_REACHED, {\n bufferEnd: targetBackBufferPosition\n });\n }\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_FLUSHING, {\n startOffset: 0,\n endOffset: targetBackBufferPosition,\n type: type\n });\n }\n }\n });\n }\n /**\n * Update Media Source duration to current level duration or override to Infinity if configuration parameter\n * 'liveDurationInfinity` is set to `true`\n * More details: https://github.com/video-dev/hls.js/issues/355\n */\n ;\n\n _proto.updateMediaElementDuration = function updateMediaElementDuration() {\n if (!this.details || !this.media || !this.mediaSource || this.mediaSource.readyState !== 'open') {\n return;\n }\n\n var details = this.details,\n hls = this.hls,\n media = this.media,\n mediaSource = this.mediaSource;\n var levelDuration = details.fragments[0].start + details.totalduration;\n var mediaDuration = media.duration;\n var msDuration = Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(mediaSource.duration) ? mediaSource.duration : 0;\n\n if (details.live && hls.config.liveDurationInfinity) {\n // Override duration to Infinity\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('[buffer-controller]: Media Source duration is set to Infinity');\n\n mediaSource.duration = Infinity;\n this.updateSeekableRange(details);\n } else if (levelDuration > msDuration && levelDuration > mediaDuration || !Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(mediaDuration)) {\n // levelDuration was the last value we set.\n // not using mediaSource.duration as the browser may tweak this value\n // only update Media Source duration if its value increase, this is to avoid\n // flushing already buffered portion when switching between quality level\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"[buffer-controller]: Updating Media Source duration to \" + levelDuration.toFixed(3));\n\n mediaSource.duration = levelDuration;\n }\n };\n\n _proto.updateSeekableRange = function updateSeekableRange(levelDetails) {\n var mediaSource = this.mediaSource;\n var fragments = levelDetails.fragments;\n var len = fragments.length;\n\n if (len && levelDetails.live && mediaSource !== null && mediaSource !== void 0 && mediaSource.setLiveSeekableRange) {\n var start = Math.max(0, fragments[0].start);\n var end = Math.max(start, start + levelDetails.totalduration);\n mediaSource.setLiveSeekableRange(start, end);\n }\n };\n\n _proto.checkPendingTracks = function checkPendingTracks() {\n var bufferCodecEventsExpected = this.bufferCodecEventsExpected,\n operationQueue = this.operationQueue,\n pendingTracks = this.pendingTracks; // Check if we've received all of the expected bufferCodec events. When none remain, create all the sourceBuffers at once.\n // This is important because the MSE spec allows implementations to throw QuotaExceededErrors if creating new sourceBuffers after\n // data has been appended to existing ones.\n // 2 tracks is the max (one for audio, one for video). If we've reach this max go ahead and create the buffers.\n\n var pendingTracksCount = Object.keys(pendingTracks).length;\n\n if (pendingTracksCount && !bufferCodecEventsExpected || pendingTracksCount === 2) {\n // ok, let's create them now !\n this.createSourceBuffers(pendingTracks);\n this.pendingTracks = {}; // append any pending segments now !\n\n var buffers = this.getSourceBufferTypes();\n\n if (buffers.length === 0) {\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_3__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_3__[\"ErrorDetails\"].BUFFER_INCOMPATIBLE_CODECS_ERROR,\n fatal: true,\n reason: 'could not create source buffer for media codec(s)'\n });\n return;\n }\n\n buffers.forEach(function (type) {\n operationQueue.executeNext(type);\n });\n }\n };\n\n _proto.createSourceBuffers = function createSourceBuffers(tracks) {\n var sourceBuffer = this.sourceBuffer,\n mediaSource = this.mediaSource;\n\n if (!mediaSource) {\n throw Error('createSourceBuffers called when mediaSource was null');\n }\n\n var tracksCreated = 0;\n\n for (var trackName in tracks) {\n if (!sourceBuffer[trackName]) {\n var track = tracks[trackName];\n\n if (!track) {\n throw Error(\"source buffer exists for track \" + trackName + \", however track does not\");\n } // use levelCodec as first priority\n\n\n var codec = track.levelCodec || track.codec;\n var mimeType = track.container + \";codecs=\" + codec;\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"[buffer-controller]: creating sourceBuffer(\" + mimeType + \")\");\n\n try {\n var sb = sourceBuffer[trackName] = mediaSource.addSourceBuffer(mimeType);\n var sbName = trackName;\n this.addBufferListener(sbName, 'updatestart', this._onSBUpdateStart);\n this.addBufferListener(sbName, 'updateend', this._onSBUpdateEnd);\n this.addBufferListener(sbName, 'error', this._onSBUpdateError);\n this.tracks[trackName] = {\n buffer: sb,\n codec: codec,\n container: track.container,\n levelCodec: track.levelCodec,\n id: track.id\n };\n tracksCreated++;\n } catch (err) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error(\"[buffer-controller]: error while trying to add sourceBuffer: \" + err.message);\n\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_3__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_3__[\"ErrorDetails\"].BUFFER_ADD_CODEC_ERROR,\n fatal: false,\n error: err,\n mimeType: mimeType\n });\n }\n }\n }\n\n if (tracksCreated) {\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_CREATED, {\n tracks: this.tracks\n });\n }\n } // Keep as arrow functions so that we can directly reference these functions directly as event listeners\n ;\n\n _proto._onSBUpdateStart = function _onSBUpdateStart(type) {\n var operationQueue = this.operationQueue;\n var operation = operationQueue.current(type);\n operation.onStart();\n };\n\n _proto._onSBUpdateEnd = function _onSBUpdateEnd(type) {\n var operationQueue = this.operationQueue;\n var operation = operationQueue.current(type);\n operation.onComplete();\n operationQueue.shiftAndExecuteNext(type);\n };\n\n _proto._onSBUpdateError = function _onSBUpdateError(type, event) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error(\"[buffer-controller]: \" + type + \" SourceBuffer error\", event); // according to http://www.w3.org/TR/media-source/#sourcebuffer-append-error\n // SourceBuffer errors are not necessarily fatal; if so, the HTMLMediaElement will fire an error event\n\n\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_3__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_3__[\"ErrorDetails\"].BUFFER_APPENDING_ERROR,\n fatal: false\n }); // updateend is always fired after error, so we'll allow that to shift the current operation off of the queue\n\n var operation = this.operationQueue.current(type);\n\n if (operation) {\n operation.onError(event);\n }\n } // This method must result in an updateend event; if remove is not called, _onSBUpdateEnd must be called manually\n ;\n\n _proto.removeExecutor = function removeExecutor(type, startOffset, endOffset) {\n var media = this.media,\n mediaSource = this.mediaSource,\n operationQueue = this.operationQueue,\n sourceBuffer = this.sourceBuffer;\n var sb = sourceBuffer[type];\n\n if (!media || !mediaSource || !sb) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"[buffer-controller]: Attempting to remove from the \" + type + \" SourceBuffer, but it does not exist\");\n\n operationQueue.shiftAndExecuteNext(type);\n return;\n }\n\n var mediaDuration = Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(media.duration) ? media.duration : Infinity;\n var msDuration = Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(mediaSource.duration) ? mediaSource.duration : Infinity;\n var removeStart = Math.max(0, startOffset);\n var removeEnd = Math.min(endOffset, mediaDuration, msDuration);\n\n if (removeEnd > removeStart) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"[buffer-controller]: Removing [\" + removeStart + \",\" + removeEnd + \"] from the \" + type + \" SourceBuffer\");\n\n console.assert(!sb.updating, type + \" sourceBuffer must not be updating\");\n sb.remove(removeStart, removeEnd);\n } else {\n // Cycle the queue\n operationQueue.shiftAndExecuteNext(type);\n }\n } // This method must result in an updateend event; if append is not called, _onSBUpdateEnd must be called manually\n ;\n\n _proto.appendExecutor = function appendExecutor(data, type) {\n var operationQueue = this.operationQueue,\n sourceBuffer = this.sourceBuffer;\n var sb = sourceBuffer[type];\n\n if (!sb) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"[buffer-controller]: Attempting to append to the \" + type + \" SourceBuffer, but it does not exist\");\n\n operationQueue.shiftAndExecuteNext(type);\n return;\n }\n\n sb.ended = false;\n console.assert(!sb.updating, type + \" sourceBuffer must not be updating\");\n sb.appendBuffer(data);\n } // Enqueues an operation to each SourceBuffer queue which, upon execution, resolves a promise. When all promises\n // resolve, the onUnblocked function is executed. Functions calling this method do not need to unblock the queue\n // upon completion, since we already do it here\n ;\n\n _proto.blockBuffers = function blockBuffers(onUnblocked, buffers) {\n var _this9 = this;\n\n if (buffers === void 0) {\n buffers = this.getSourceBufferTypes();\n }\n\n if (!buffers.length) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('[buffer-controller]: Blocking operation requested, but no SourceBuffers exist');\n\n Promise.resolve(onUnblocked);\n return;\n }\n\n var operationQueue = this.operationQueue; // logger.debug(`[buffer-controller]: Blocking ${buffers} SourceBuffer`);\n\n var blockingOperations = buffers.map(function (type) {\n return operationQueue.appendBlocker(type);\n });\n Promise.all(blockingOperations).then(function () {\n // logger.debug(`[buffer-controller]: Blocking operation resolved; unblocking ${buffers} SourceBuffer`);\n onUnblocked();\n buffers.forEach(function (type) {\n var sb = _this9.sourceBuffer[type]; // Only cycle the queue if the SB is not updating. There's a bug in Chrome which sets the SB updating flag to\n // true when changing the MediaSource duration (https://bugs.chromium.org/p/chromium/issues/detail?id=959359&can=2&q=mediasource%20duration)\n // While this is a workaround, it's probably useful to have around\n\n if (!sb || !sb.updating) {\n operationQueue.shiftAndExecuteNext(type);\n }\n });\n });\n };\n\n _proto.getSourceBufferTypes = function getSourceBufferTypes() {\n return Object.keys(this.sourceBuffer);\n };\n\n _proto.addBufferListener = function addBufferListener(type, event, fn) {\n var buffer = this.sourceBuffer[type];\n\n if (!buffer) {\n return;\n }\n\n var listener = fn.bind(this, type);\n this.listeners[type].push({\n event: event,\n listener: listener\n });\n buffer.addEventListener(event, listener);\n };\n\n _proto.removeBufferListeners = function removeBufferListeners(type) {\n var buffer = this.sourceBuffer[type];\n\n if (!buffer) {\n return;\n }\n\n this.listeners[type].forEach(function (l) {\n buffer.removeEventListener(l.event, l.listener);\n });\n };\n\n return BufferController;\n }();\n /***/\n\n },\n\n /***/\n \"./src/controller/buffer-operation-queue.ts\":\n /*!**************************************************!*\\\n !*** ./src/controller/buffer-operation-queue.ts ***!\n \\**************************************************/\n\n /*! exports provided: default */\n\n /***/\n function srcControllerBufferOperationQueueTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"default\", function () {\n return BufferOperationQueue;\n });\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ../utils/logger */\n \"./src/utils/logger.ts\");\n\n var BufferOperationQueue = /*#__PURE__*/function () {\n function BufferOperationQueue(sourceBufferReference) {\n this.buffers = void 0;\n this.queues = {\n video: [],\n audio: [],\n audiovideo: []\n };\n this.buffers = sourceBufferReference;\n }\n\n var _proto = BufferOperationQueue.prototype;\n\n _proto.append = function append(operation, type) {\n var queue = this.queues[type];\n queue.push(operation);\n\n if (queue.length === 1 && this.buffers[type]) {\n this.executeNext(type);\n }\n };\n\n _proto.insertAbort = function insertAbort(operation, type) {\n var queue = this.queues[type];\n queue.unshift(operation);\n this.executeNext(type);\n };\n\n _proto.appendBlocker = function appendBlocker(type) {\n var execute;\n var promise = new Promise(function (resolve) {\n execute = resolve;\n });\n var operation = {\n execute: execute,\n onStart: function onStart() {},\n onComplete: function onComplete() {},\n onError: function onError() {}\n };\n this.append(operation, type);\n return promise;\n };\n\n _proto.executeNext = function executeNext(type) {\n var buffers = this.buffers,\n queues = this.queues;\n var sb = buffers[type];\n var queue = queues[type];\n\n if (queue.length) {\n var operation = queue[0];\n\n try {\n // Operations are expected to result in an 'updateend' event being fired. If not, the queue will lock. Operations\n // which do not end with this event must call _onSBUpdateEnd manually\n operation.execute();\n } catch (e) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_0__[\"logger\"].warn('[buffer-operation-queue]: Unhandled exception executing the current operation');\n\n operation.onError(e); // Only shift the current operation off, otherwise the updateend handler will do this for us\n\n if (!sb || !sb.updating) {\n queue.shift();\n this.executeNext(type);\n }\n }\n }\n };\n\n _proto.shiftAndExecuteNext = function shiftAndExecuteNext(type) {\n this.queues[type].shift();\n this.executeNext(type);\n };\n\n _proto.current = function current(type) {\n return this.queues[type][0];\n };\n\n return BufferOperationQueue;\n }();\n /***/\n\n },\n\n /***/\n \"./src/controller/cap-level-controller.ts\":\n /*!************************************************!*\\\n !*** ./src/controller/cap-level-controller.ts ***!\n \\************************************************/\n\n /*! exports provided: default */\n\n /***/\n function srcControllerCapLevelControllerTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony import */\n\n\n var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ../events */\n \"./src/events.ts\");\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n /*\n * cap stream level to media size dimension controller\n */\n\n\n var CapLevelController = /*#__PURE__*/function () {\n function CapLevelController(hls) {\n this.autoLevelCapping = void 0;\n this.firstLevel = void 0;\n this.media = void 0;\n this.restrictedLevels = void 0;\n this.timer = void 0;\n this.hls = void 0;\n this.streamController = void 0;\n this.clientRect = void 0;\n this.hls = hls;\n this.autoLevelCapping = Number.POSITIVE_INFINITY;\n this.firstLevel = -1;\n this.media = null;\n this.restrictedLevels = [];\n this.timer = undefined;\n this.clientRect = null;\n this.registerListeners();\n }\n\n var _proto = CapLevelController.prototype;\n\n _proto.setStreamController = function setStreamController(streamController) {\n this.streamController = streamController;\n };\n\n _proto.destroy = function destroy() {\n this.unregisterListener();\n\n if (this.hls.config.capLevelToPlayerSize) {\n this.stopCapping();\n }\n\n this.media = null;\n this.clientRect = null; // @ts-ignore\n\n this.hls = this.streamController = null;\n };\n\n _proto.registerListeners = function registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].FPS_DROP_LEVEL_CAPPING, this.onFpsDropLevelCapping, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHING, this.onMediaAttaching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].BUFFER_CODECS, this.onBufferCodecs, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n };\n\n _proto.unregisterListener = function unregisterListener() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].FPS_DROP_LEVEL_CAPPING, this.onFpsDropLevelCapping, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHING, this.onMediaAttaching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].BUFFER_CODECS, this.onBufferCodecs, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n };\n\n _proto.onFpsDropLevelCapping = function onFpsDropLevelCapping(event, data) {\n // Don't add a restricted level more than once\n if (CapLevelController.isLevelAllowed(data.droppedLevel, this.restrictedLevels)) {\n this.restrictedLevels.push(data.droppedLevel);\n }\n };\n\n _proto.onMediaAttaching = function onMediaAttaching(event, data) {\n this.media = data.media instanceof HTMLVideoElement ? data.media : null;\n };\n\n _proto.onManifestParsed = function onManifestParsed(event, data) {\n var hls = this.hls;\n this.restrictedLevels = [];\n this.firstLevel = data.firstLevel;\n\n if (hls.config.capLevelToPlayerSize && data.video) {\n // Start capping immediately if the manifest has signaled video codecs\n this.startCapping();\n }\n } // Only activate capping when playing a video stream; otherwise, multi-bitrate audio-only streams will be restricted\n // to the first level\n ;\n\n _proto.onBufferCodecs = function onBufferCodecs(event, data) {\n var hls = this.hls;\n\n if (hls.config.capLevelToPlayerSize && data.video) {\n // If the manifest did not signal a video codec capping has been deferred until we're certain video is present\n this.startCapping();\n }\n };\n\n _proto.onMediaDetaching = function onMediaDetaching() {\n this.stopCapping();\n };\n\n _proto.detectPlayerSize = function detectPlayerSize() {\n if (this.media && this.mediaHeight > 0 && this.mediaWidth > 0) {\n var levels = this.hls.levels;\n\n if (levels.length) {\n var hls = this.hls;\n hls.autoLevelCapping = this.getMaxLevel(levels.length - 1);\n\n if (hls.autoLevelCapping > this.autoLevelCapping && this.streamController) {\n // if auto level capping has a higher value for the previous one, flush the buffer using nextLevelSwitch\n // usually happen when the user go to the fullscreen mode.\n this.streamController.nextLevelSwitch();\n }\n\n this.autoLevelCapping = hls.autoLevelCapping;\n }\n }\n }\n /*\n * returns level should be the one with the dimensions equal or greater than the media (player) dimensions (so the video will be downscaled)\n */\n ;\n\n _proto.getMaxLevel = function getMaxLevel(capLevelIndex) {\n var _this = this;\n\n var levels = this.hls.levels;\n\n if (!levels.length) {\n return -1;\n }\n\n var validLevels = levels.filter(function (level, index) {\n return CapLevelController.isLevelAllowed(index, _this.restrictedLevels) && index <= capLevelIndex;\n });\n this.clientRect = null;\n return CapLevelController.getMaxLevelByMediaSize(validLevels, this.mediaWidth, this.mediaHeight);\n };\n\n _proto.startCapping = function startCapping() {\n if (this.timer) {\n // Don't reset capping if started twice; this can happen if the manifest signals a video codec\n return;\n }\n\n this.autoLevelCapping = Number.POSITIVE_INFINITY;\n this.hls.firstLevel = this.getMaxLevel(this.firstLevel);\n self.clearInterval(this.timer);\n this.timer = self.setInterval(this.detectPlayerSize.bind(this), 1000);\n this.detectPlayerSize();\n };\n\n _proto.stopCapping = function stopCapping() {\n this.restrictedLevels = [];\n this.firstLevel = -1;\n this.autoLevelCapping = Number.POSITIVE_INFINITY;\n\n if (this.timer) {\n self.clearInterval(this.timer);\n this.timer = undefined;\n }\n };\n\n _proto.getDimensions = function getDimensions() {\n if (this.clientRect) {\n return this.clientRect;\n }\n\n var media = this.media;\n var boundsRect = {\n width: 0,\n height: 0\n };\n\n if (media) {\n var clientRect = media.getBoundingClientRect();\n boundsRect.width = clientRect.width;\n boundsRect.height = clientRect.height;\n\n if (!boundsRect.width && !boundsRect.height) {\n // When the media element has no width or height (equivalent to not being in the DOM),\n // then use its width and height attributes (media.width, media.height)\n boundsRect.width = clientRect.right - clientRect.left || media.width || 0;\n boundsRect.height = clientRect.bottom - clientRect.top || media.height || 0;\n }\n }\n\n this.clientRect = boundsRect;\n return boundsRect;\n };\n\n CapLevelController.isLevelAllowed = function isLevelAllowed(level, restrictedLevels) {\n if (restrictedLevels === void 0) {\n restrictedLevels = [];\n }\n\n return restrictedLevels.indexOf(level) === -1;\n };\n\n CapLevelController.getMaxLevelByMediaSize = function getMaxLevelByMediaSize(levels, width, height) {\n if (!levels || !levels.length) {\n return -1;\n } // Levels can have the same dimensions but differing bandwidths - since levels are ordered, we can look to the next\n // to determine whether we've chosen the greatest bandwidth for the media's dimensions\n\n\n var atGreatestBandiwdth = function atGreatestBandiwdth(curLevel, nextLevel) {\n if (!nextLevel) {\n return true;\n }\n\n return curLevel.width !== nextLevel.width || curLevel.height !== nextLevel.height;\n }; // If we run through the loop without breaking, the media's dimensions are greater than every level, so default to\n // the max level\n\n\n var maxLevelIndex = levels.length - 1;\n\n for (var i = 0; i < levels.length; i += 1) {\n var level = levels[i];\n\n if ((level.width >= width || level.height >= height) && atGreatestBandiwdth(level, levels[i + 1])) {\n maxLevelIndex = i;\n break;\n }\n }\n\n return maxLevelIndex;\n };\n\n _createClass(CapLevelController, [{\n key: \"mediaWidth\",\n get: function get() {\n return this.getDimensions().width * CapLevelController.contentScaleFactor;\n }\n }, {\n key: \"mediaHeight\",\n get: function get() {\n return this.getDimensions().height * CapLevelController.contentScaleFactor;\n }\n }], [{\n key: \"contentScaleFactor\",\n get: function get() {\n var pixelRatio = 1;\n\n try {\n pixelRatio = self.devicePixelRatio;\n } catch (e) {\n /* no-op */\n }\n\n return pixelRatio;\n }\n }]);\n\n return CapLevelController;\n }();\n /* harmony default export */\n\n\n __webpack_exports__[\"default\"] = CapLevelController;\n /***/\n },\n\n /***/\n \"./src/controller/cmcd-controller.ts\":\n /*!*******************************************!*\\\n !*** ./src/controller/cmcd-controller.ts ***!\n \\*******************************************/\n\n /*! exports provided: default */\n\n /***/\n function srcControllerCmcdControllerTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"default\", function () {\n return CMCDController;\n });\n /* harmony import */\n\n\n var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ../events */\n \"./src/events.ts\");\n /* harmony import */\n\n\n var _types_cmcd__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ../types/cmcd */\n \"./src/types/cmcd.ts\");\n /* harmony import */\n\n\n var _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ../utils/buffer-helper */\n \"./src/utils/buffer-helper.ts\");\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\n /*! ../utils/logger */\n \"./src/utils/logger.ts\");\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n /**\n * Controller to deal with Common Media Client Data (CMCD)\n * @see https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf\n */\n\n\n var CMCDController = /*#__PURE__*/function () {\n // eslint-disable-line no-restricted-globals\n // eslint-disable-line no-restricted-globals\n function CMCDController(hls) {\n var _this = this;\n\n this.hls = void 0;\n this.config = void 0;\n this.media = void 0;\n this.sid = void 0;\n this.cid = void 0;\n this.useHeaders = false;\n this.initialized = false;\n this.starved = false;\n this.buffering = true;\n this.audioBuffer = void 0;\n this.videoBuffer = void 0;\n\n this.onWaiting = function () {\n if (_this.initialized) {\n _this.starved = true;\n }\n\n _this.buffering = true;\n };\n\n this.onPlaying = function () {\n if (!_this.initialized) {\n _this.initialized = true;\n }\n\n _this.buffering = false;\n };\n\n this.applyPlaylistData = function (context) {\n try {\n _this.apply(context, {\n ot: _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].MANIFEST,\n su: !_this.initialized\n });\n } catch (error) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn('Could not generate manifest CMCD data.', error);\n }\n };\n\n this.applyFragmentData = function (context) {\n try {\n var fragment = context.frag;\n var level = _this.hls.levels[fragment.level];\n\n var ot = _this.getObjectType(fragment);\n\n var data = {\n d: fragment.duration * 1000,\n ot: ot\n };\n\n if (ot === _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].VIDEO || ot === _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].AUDIO || ot == _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].MUXED) {\n data.br = level.bitrate / 1000;\n data.tb = _this.getTopBandwidth(ot) / 1000;\n data.bl = _this.getBufferLength(ot);\n }\n\n _this.apply(context, data);\n } catch (error) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn('Could not generate segment CMCD data.', error);\n }\n };\n\n this.hls = hls;\n var config = this.config = hls.config;\n var cmcd = config.cmcd;\n\n if (cmcd != null) {\n config.pLoader = this.createPlaylistLoader();\n config.fLoader = this.createFragmentLoader();\n this.sid = cmcd.sessionId || CMCDController.uuid();\n this.cid = cmcd.contentId;\n this.useHeaders = cmcd.useHeaders === true;\n this.registerListeners();\n }\n }\n\n var _proto = CMCDController.prototype;\n\n _proto.registerListeners = function registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHED, this.onMediaDetached, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].BUFFER_CREATED, this.onBufferCreated, this);\n };\n\n _proto.unregisterListeners = function unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHED, this.onMediaDetached, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].BUFFER_CREATED, this.onBufferCreated, this);\n this.onMediaDetached();\n };\n\n _proto.destroy = function destroy() {\n this.unregisterListeners(); // @ts-ignore\n\n this.hls = this.config = this.audioBuffer = this.videoBuffer = null;\n };\n\n _proto.onMediaAttached = function onMediaAttached(event, data) {\n this.media = data.media;\n this.media.addEventListener('waiting', this.onWaiting);\n this.media.addEventListener('playing', this.onPlaying);\n };\n\n _proto.onMediaDetached = function onMediaDetached() {\n if (!this.media) {\n return;\n }\n\n this.media.removeEventListener('waiting', this.onWaiting);\n this.media.removeEventListener('playing', this.onPlaying); // @ts-ignore\n\n this.media = null;\n };\n\n _proto.onBufferCreated = function onBufferCreated(event, data) {\n var _data$tracks$audio, _data$tracks$video;\n\n this.audioBuffer = (_data$tracks$audio = data.tracks.audio) === null || _data$tracks$audio === void 0 ? void 0 : _data$tracks$audio.buffer;\n this.videoBuffer = (_data$tracks$video = data.tracks.video) === null || _data$tracks$video === void 0 ? void 0 : _data$tracks$video.buffer;\n };\n /**\n * Create baseline CMCD data\n */\n\n\n _proto.createData = function createData() {\n var _this$media;\n\n return {\n v: _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDVersion\"],\n sf: _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDStreamingFormat\"].HLS,\n sid: this.sid,\n cid: this.cid,\n pr: (_this$media = this.media) === null || _this$media === void 0 ? void 0 : _this$media.playbackRate,\n mtp: this.hls.bandwidthEstimate / 1000\n };\n }\n /**\n * Apply CMCD data to a request.\n */\n ;\n\n _proto.apply = function apply(context, data) {\n if (data === void 0) {\n data = {};\n } // apply baseline data\n\n\n _extends(data, this.createData());\n\n var isVideo = data.ot === _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].INIT || data.ot === _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].VIDEO || data.ot === _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].MUXED;\n\n if (this.starved && isVideo) {\n data.bs = true;\n data.su = true;\n this.starved = false;\n }\n\n if (data.su == null) {\n data.su = this.buffering;\n } // TODO: Implement rtp, nrr, nor, dl\n\n\n if (this.useHeaders) {\n var headers = CMCDController.toHeaders(data);\n\n if (!Object.keys(headers).length) {\n return;\n }\n\n if (!context.headers) {\n context.headers = {};\n }\n\n _extends(context.headers, headers);\n } else {\n var query = CMCDController.toQuery(data);\n\n if (!query) {\n return;\n }\n\n context.url = CMCDController.appendQueryToUri(context.url, query);\n }\n }\n /**\n * Apply CMCD data to a manifest request.\n */\n ;\n /**\n * The CMCD object type.\n */\n\n\n _proto.getObjectType = function getObjectType(fragment) {\n var type = fragment.type;\n\n if (type === 'subtitle') {\n return _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].TIMED_TEXT;\n }\n\n if (fragment.sn === 'initSegment') {\n return _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].INIT;\n }\n\n if (type === 'audio') {\n return _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].AUDIO;\n }\n\n if (type === 'main') {\n if (!this.hls.audioTracks.length) {\n return _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].MUXED;\n }\n\n return _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].VIDEO;\n }\n\n return undefined;\n }\n /**\n * Get the highest bitrate.\n */\n ;\n\n _proto.getTopBandwidth = function getTopBandwidth(type) {\n var bitrate = 0;\n var levels;\n var hls = this.hls;\n\n if (type === _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].AUDIO) {\n levels = hls.audioTracks;\n } else {\n var max = hls.maxAutoLevel;\n var len = max > -1 ? max + 1 : hls.levels.length;\n levels = hls.levels.slice(0, len);\n }\n\n for (var _iterator = _createForOfIteratorHelperLoose(levels), _step; !(_step = _iterator()).done;) {\n var level = _step.value;\n\n if (level.bitrate > bitrate) {\n bitrate = level.bitrate;\n }\n }\n\n return bitrate > 0 ? bitrate : NaN;\n }\n /**\n * Get the buffer length for a media type in milliseconds\n */\n ;\n\n _proto.getBufferLength = function getBufferLength(type) {\n var media = this.hls.media;\n var buffer = type === _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].AUDIO ? this.audioBuffer : this.videoBuffer;\n\n if (!buffer || !media) {\n return NaN;\n }\n\n var info = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_2__[\"BufferHelper\"].bufferInfo(buffer, media.currentTime, this.config.maxBufferHole);\n\n return info.len * 1000;\n }\n /**\n * Create a playlist loader\n */\n ;\n\n _proto.createPlaylistLoader = function createPlaylistLoader() {\n var pLoader = this.config.pLoader;\n var apply = this.applyPlaylistData;\n var Ctor = pLoader || this.config.loader;\n return /*#__PURE__*/function () {\n function CmcdPlaylistLoader(config) {\n this.loader = void 0;\n this.loader = new Ctor(config);\n }\n\n var _proto2 = CmcdPlaylistLoader.prototype;\n\n _proto2.destroy = function destroy() {\n this.loader.destroy();\n };\n\n _proto2.abort = function abort() {\n this.loader.abort();\n };\n\n _proto2.load = function load(context, config, callbacks) {\n apply(context);\n this.loader.load(context, config, callbacks);\n };\n\n _createClass(CmcdPlaylistLoader, [{\n key: \"stats\",\n get: function get() {\n return this.loader.stats;\n }\n }, {\n key: \"context\",\n get: function get() {\n return this.loader.context;\n }\n }]);\n\n return CmcdPlaylistLoader;\n }();\n }\n /**\n * Create a playlist loader\n */\n ;\n\n _proto.createFragmentLoader = function createFragmentLoader() {\n var fLoader = this.config.fLoader;\n var apply = this.applyFragmentData;\n var Ctor = fLoader || this.config.loader;\n return /*#__PURE__*/function () {\n function CmcdFragmentLoader(config) {\n this.loader = void 0;\n this.loader = new Ctor(config);\n }\n\n var _proto3 = CmcdFragmentLoader.prototype;\n\n _proto3.destroy = function destroy() {\n this.loader.destroy();\n };\n\n _proto3.abort = function abort() {\n this.loader.abort();\n };\n\n _proto3.load = function load(context, config, callbacks) {\n apply(context);\n this.loader.load(context, config, callbacks);\n };\n\n _createClass(CmcdFragmentLoader, [{\n key: \"stats\",\n get: function get() {\n return this.loader.stats;\n }\n }, {\n key: \"context\",\n get: function get() {\n return this.loader.context;\n }\n }]);\n\n return CmcdFragmentLoader;\n }();\n }\n /**\n * Generate a random v4 UUI\n *\n * @returns {string}\n */\n ;\n\n CMCDController.uuid = function uuid() {\n var url = URL.createObjectURL(new Blob());\n var uuid = url.toString();\n URL.revokeObjectURL(url);\n return uuid.substr(uuid.lastIndexOf('/') + 1);\n }\n /**\n * Serialize a CMCD data object according to the rules defined in the\n * section 3.2 of\n * [CTA-5004](https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf).\n */\n ;\n\n CMCDController.serialize = function serialize(data) {\n var results = [];\n\n var isValid = function isValid(value) {\n return !Number.isNaN(value) && value != null && value !== '' && value !== false;\n };\n\n var toRounded = function toRounded(value) {\n return Math.round(value);\n };\n\n var toHundred = function toHundred(value) {\n return toRounded(value / 100) * 100;\n };\n\n var toUrlSafe = function toUrlSafe(value) {\n return encodeURIComponent(value);\n };\n\n var formatters = {\n br: toRounded,\n d: toRounded,\n bl: toHundred,\n dl: toHundred,\n mtp: toHundred,\n nor: toUrlSafe,\n rtp: toHundred,\n tb: toRounded\n };\n var keys = Object.keys(data || {}).sort();\n\n for (var _iterator2 = _createForOfIteratorHelperLoose(keys), _step2; !(_step2 = _iterator2()).done;) {\n var key = _step2.value;\n var value = data[key]; // ignore invalid values\n\n if (!isValid(value)) {\n continue;\n } // Version should only be reported if not equal to 1.\n\n\n if (key === 'v' && value === 1) {\n continue;\n } // Playback rate should only be sent if not equal to 1.\n\n\n if (key == 'pr' && value === 1) {\n continue;\n } // Certain values require special formatting\n\n\n var formatter = formatters[key];\n\n if (formatter) {\n value = formatter(value);\n } // Serialize the key/value pair\n\n\n var type = _typeof(value);\n\n var result = void 0;\n\n if (key === 'ot' || key === 'sf' || key === 'st') {\n result = key + \"=\" + value;\n } else if (type === 'boolean') {\n result = key;\n } else if (type === 'number') {\n result = key + \"=\" + value;\n } else {\n result = key + \"=\" + JSON.stringify(value);\n }\n\n results.push(result);\n }\n\n return results.join(',');\n }\n /**\n * Convert a CMCD data object to request headers according to the rules\n * defined in the section 2.1 and 3.2 of\n * [CTA-5004](https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf).\n */\n ;\n\n CMCDController.toHeaders = function toHeaders(data) {\n var keys = Object.keys(data);\n var headers = {};\n var headerNames = ['Object', 'Request', 'Session', 'Status'];\n var headerGroups = [{}, {}, {}, {}];\n var headerMap = {\n br: 0,\n d: 0,\n ot: 0,\n tb: 0,\n bl: 1,\n dl: 1,\n mtp: 1,\n nor: 1,\n nrr: 1,\n su: 1,\n cid: 2,\n pr: 2,\n sf: 2,\n sid: 2,\n st: 2,\n v: 2,\n bs: 3,\n rtp: 3\n };\n\n for (var _i = 0, _keys = keys; _i < _keys.length; _i++) {\n var key = _keys[_i]; // Unmapped fields are mapped to the Request header\n\n var index = headerMap[key] != null ? headerMap[key] : 1;\n headerGroups[index][key] = data[key];\n }\n\n for (var i = 0; i < headerGroups.length; i++) {\n var value = CMCDController.serialize(headerGroups[i]);\n\n if (value) {\n headers[\"CMCD-\" + headerNames[i]] = value;\n }\n }\n\n return headers;\n }\n /**\n * Convert a CMCD data object to query args according to the rules\n * defined in the section 2.2 and 3.2 of\n * [CTA-5004](https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf).\n */\n ;\n\n CMCDController.toQuery = function toQuery(data) {\n return \"CMCD=\" + encodeURIComponent(CMCDController.serialize(data));\n }\n /**\n * Append query args to a uri.\n */\n ;\n\n CMCDController.appendQueryToUri = function appendQueryToUri(uri, query) {\n if (!query) {\n return uri;\n }\n\n var separator = uri.includes('?') ? '&' : '?';\n return \"\" + uri + separator + query;\n };\n\n return CMCDController;\n }();\n /***/\n\n },\n\n /***/\n \"./src/controller/eme-controller.ts\":\n /*!******************************************!*\\\n !*** ./src/controller/eme-controller.ts ***!\n \\******************************************/\n\n /*! exports provided: default */\n\n /***/\n function srcControllerEmeControllerTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony import */\n\n\n var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ../events */\n \"./src/events.ts\");\n /* harmony import */\n\n\n var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ../errors */\n \"./src/errors.ts\");\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ../utils/logger */\n \"./src/utils/logger.ts\");\n /* harmony import */\n\n\n var _utils_mediakeys_helper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\n /*! ../utils/mediakeys-helper */\n \"./src/utils/mediakeys-helper.ts\");\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n /**\n * @author Stephan Hesse | \n *\n * DRM support for Hls.js\n */\n\n\n var MAX_LICENSE_REQUEST_FAILURES = 3;\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemConfiguration\n * @param {Array} audioCodecs List of required audio codecs to support\n * @param {Array} videoCodecs List of required video codecs to support\n * @param {object} drmSystemOptions Optional parameters/requirements for the key-system\n * @returns {Array} An array of supported configurations\n */\n\n var createWidevineMediaKeySystemConfigurations = function createWidevineMediaKeySystemConfigurations(audioCodecs, videoCodecs, drmSystemOptions) {\n /* jshint ignore:line */\n var baseConfig = {\n // initDataTypes: ['keyids', 'mp4'],\n // label: \"\",\n // persistentState: \"not-allowed\", // or \"required\" ?\n // distinctiveIdentifier: \"not-allowed\", // or \"required\" ?\n // sessionTypes: ['temporary'],\n audioCapabilities: [],\n // { contentType: 'audio/mp4; codecs=\"mp4a.40.2\"' }\n videoCapabilities: [] // { contentType: 'video/mp4; codecs=\"avc1.42E01E\"' }\n\n };\n audioCodecs.forEach(function (codec) {\n baseConfig.audioCapabilities.push({\n contentType: \"audio/mp4; codecs=\\\"\" + codec + \"\\\"\",\n robustness: drmSystemOptions.audioRobustness || ''\n });\n });\n videoCodecs.forEach(function (codec) {\n baseConfig.videoCapabilities.push({\n contentType: \"video/mp4; codecs=\\\"\" + codec + \"\\\"\",\n robustness: drmSystemOptions.videoRobustness || ''\n });\n });\n return [baseConfig];\n };\n /**\n * The idea here is to handle key-system (and their respective platforms) specific configuration differences\n * in order to work with the local requestMediaKeySystemAccess method.\n *\n * We can also rule-out platform-related key-system support at this point by throwing an error.\n *\n * @param {string} keySystem Identifier for the key-system, see `KeySystems` enum\n * @param {Array} audioCodecs List of required audio codecs to support\n * @param {Array} videoCodecs List of required video codecs to support\n * @throws will throw an error if a unknown key system is passed\n * @returns {Array} A non-empty Array of MediaKeySystemConfiguration objects\n */\n\n\n var getSupportedMediaKeySystemConfigurations = function getSupportedMediaKeySystemConfigurations(keySystem, audioCodecs, videoCodecs, drmSystemOptions) {\n switch (keySystem) {\n case _utils_mediakeys_helper__WEBPACK_IMPORTED_MODULE_3__[\"KeySystems\"].WIDEVINE:\n return createWidevineMediaKeySystemConfigurations(audioCodecs, videoCodecs, drmSystemOptions);\n\n default:\n throw new Error(\"Unknown key-system: \" + keySystem);\n }\n };\n /**\n * Controller to deal with encrypted media extensions (EME)\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Encrypted_Media_Extensions_API\n *\n * @class\n * @constructor\n */\n\n\n var EMEController = /*#__PURE__*/function () {\n /**\n * @constructs\n * @param {Hls} hls Our Hls.js instance\n */\n function EMEController(hls) {\n this.hls = void 0;\n this._widevineLicenseUrl = void 0;\n this._licenseXhrSetup = void 0;\n this._licenseResponseCallback = void 0;\n this._emeEnabled = void 0;\n this._requestMediaKeySystemAccess = void 0;\n this._drmSystemOptions = void 0;\n this._config = void 0;\n this._mediaKeysList = [];\n this._media = null;\n this._hasSetMediaKeys = false;\n this._requestLicenseFailureCount = 0;\n this.mediaKeysPromise = null;\n this._onMediaEncrypted = this.onMediaEncrypted.bind(this);\n this.hls = hls;\n this._config = hls.config;\n this._widevineLicenseUrl = this._config.widevineLicenseUrl;\n this._licenseXhrSetup = this._config.licenseXhrSetup;\n this._licenseResponseCallback = this._config.licenseResponseCallback;\n this._emeEnabled = this._config.emeEnabled;\n this._requestMediaKeySystemAccess = this._config.requestMediaKeySystemAccessFunc;\n this._drmSystemOptions = this._config.drmSystemOptions;\n\n this._registerListeners();\n }\n\n var _proto = EMEController.prototype;\n\n _proto.destroy = function destroy() {\n this._unregisterListeners(); // @ts-ignore\n\n\n this.hls = this._onMediaEncrypted = null;\n this._requestMediaKeySystemAccess = null;\n };\n\n _proto._registerListeners = function _registerListeners() {\n this.hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n this.hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHED, this.onMediaDetached, this);\n this.hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n };\n\n _proto._unregisterListeners = function _unregisterListeners() {\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHED, this.onMediaDetached, this);\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n }\n /**\n * @param {string} keySystem Identifier for the key-system, see `KeySystems` enum\n * @returns {string} License server URL for key-system (if any configured, otherwise causes error)\n * @throws if a unsupported keysystem is passed\n */\n ;\n\n _proto.getLicenseServerUrl = function getLicenseServerUrl(keySystem) {\n switch (keySystem) {\n case _utils_mediakeys_helper__WEBPACK_IMPORTED_MODULE_3__[\"KeySystems\"].WIDEVINE:\n if (!this._widevineLicenseUrl) {\n break;\n }\n\n return this._widevineLicenseUrl;\n }\n\n throw new Error(\"no license server URL configured for key-system \\\"\" + keySystem + \"\\\"\");\n }\n /**\n * Requests access object and adds it to our list upon success\n * @private\n * @param {string} keySystem System ID (see `KeySystems`)\n * @param {Array} audioCodecs List of required audio codecs to support\n * @param {Array} videoCodecs List of required video codecs to support\n * @throws When a unsupported KeySystem is passed\n */\n ;\n\n _proto._attemptKeySystemAccess = function _attemptKeySystemAccess(keySystem, audioCodecs, videoCodecs) {\n var _this = this; // This can throw, but is caught in event handler callpath\n\n\n var mediaKeySystemConfigs = getSupportedMediaKeySystemConfigurations(keySystem, audioCodecs, videoCodecs, this._drmSystemOptions);\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('Requesting encrypted media key-system access'); // expecting interface like window.navigator.requestMediaKeySystemAccess\n\n\n var keySystemAccessPromise = this.requestMediaKeySystemAccess(keySystem, mediaKeySystemConfigs);\n this.mediaKeysPromise = keySystemAccessPromise.then(function (mediaKeySystemAccess) {\n return _this._onMediaKeySystemAccessObtained(keySystem, mediaKeySystemAccess);\n });\n keySystemAccessPromise.catch(function (err) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error(\"Failed to obtain key-system \\\"\" + keySystem + \"\\\" access:\", err);\n });\n };\n /**\n * Handles obtaining access to a key-system\n * @private\n * @param {string} keySystem\n * @param {MediaKeySystemAccess} mediaKeySystemAccess https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemAccess\n */\n\n\n _proto._onMediaKeySystemAccessObtained = function _onMediaKeySystemAccessObtained(keySystem, mediaKeySystemAccess) {\n var _this2 = this;\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"Access for key-system \\\"\" + keySystem + \"\\\" obtained\");\n\n var mediaKeysListItem = {\n mediaKeysSessionInitialized: false,\n mediaKeySystemAccess: mediaKeySystemAccess,\n mediaKeySystemDomain: keySystem\n };\n\n this._mediaKeysList.push(mediaKeysListItem);\n\n var mediaKeysPromise = Promise.resolve().then(function () {\n return mediaKeySystemAccess.createMediaKeys();\n }).then(function (mediaKeys) {\n mediaKeysListItem.mediaKeys = mediaKeys;\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"Media-keys created for key-system \\\"\" + keySystem + \"\\\"\");\n\n _this2._onMediaKeysCreated();\n\n return mediaKeys;\n });\n mediaKeysPromise.catch(function (err) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error('Failed to create media-keys:', err);\n });\n return mediaKeysPromise;\n }\n /**\n * Handles key-creation (represents access to CDM). We are going to create key-sessions upon this\n * for all existing keys where no session exists yet.\n *\n * @private\n */\n ;\n\n _proto._onMediaKeysCreated = function _onMediaKeysCreated() {\n var _this3 = this; // check for all key-list items if a session exists, otherwise, create one\n\n\n this._mediaKeysList.forEach(function (mediaKeysListItem) {\n if (!mediaKeysListItem.mediaKeysSession) {\n // mediaKeys is definitely initialized here\n mediaKeysListItem.mediaKeysSession = mediaKeysListItem.mediaKeys.createSession();\n\n _this3._onNewMediaKeySession(mediaKeysListItem.mediaKeysSession);\n }\n });\n }\n /**\n * @private\n * @param {*} keySession\n */\n ;\n\n _proto._onNewMediaKeySession = function _onNewMediaKeySession(keySession) {\n var _this4 = this;\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"New key-system session \" + keySession.sessionId);\n\n keySession.addEventListener('message', function (event) {\n _this4._onKeySessionMessage(keySession, event.message);\n }, false);\n }\n /**\n * @private\n * @param {MediaKeySession} keySession\n * @param {ArrayBuffer} message\n */\n ;\n\n _proto._onKeySessionMessage = function _onKeySessionMessage(keySession, message) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('Got EME message event, creating license request');\n\n this._requestLicense(message, function (data) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"Received license data (length: \" + (data ? data.byteLength : data) + \"), updating key-session\");\n\n keySession.update(data);\n });\n }\n /**\n * @private\n * @param e {MediaEncryptedEvent}\n */\n ;\n\n _proto.onMediaEncrypted = function onMediaEncrypted(e) {\n var _this5 = this;\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"Media is encrypted using \\\"\" + e.initDataType + \"\\\" init data type\");\n\n if (!this.mediaKeysPromise) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error('Fatal: Media is encrypted but no CDM access or no keys have been requested');\n\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].KEY_SYSTEM_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_SYSTEM_NO_KEYS,\n fatal: true\n });\n return;\n }\n\n var finallySetKeyAndStartSession = function finallySetKeyAndStartSession(mediaKeys) {\n if (!_this5._media) {\n return;\n }\n\n _this5._attemptSetMediaKeys(mediaKeys);\n\n _this5._generateRequestWithPreferredKeySession(e.initDataType, e.initData);\n }; // Could use `Promise.finally` but some Promise polyfills are missing it\n\n\n this.mediaKeysPromise.then(finallySetKeyAndStartSession).catch(finallySetKeyAndStartSession);\n }\n /**\n * @private\n */\n ;\n\n _proto._attemptSetMediaKeys = function _attemptSetMediaKeys(mediaKeys) {\n if (!this._media) {\n throw new Error('Attempted to set mediaKeys without first attaching a media element');\n }\n\n if (!this._hasSetMediaKeys) {\n // FIXME: see if we can/want/need-to really to deal with several potential key-sessions?\n var keysListItem = this._mediaKeysList[0];\n\n if (!keysListItem || !keysListItem.mediaKeys) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error('Fatal: Media is encrypted but no CDM access or no keys have been obtained yet');\n\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].KEY_SYSTEM_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_SYSTEM_NO_KEYS,\n fatal: true\n });\n return;\n }\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('Setting keys for encrypted media');\n\n this._media.setMediaKeys(keysListItem.mediaKeys);\n\n this._hasSetMediaKeys = true;\n }\n }\n /**\n * @private\n */\n ;\n\n _proto._generateRequestWithPreferredKeySession = function _generateRequestWithPreferredKeySession(initDataType, initData) {\n var _this6 = this; // FIXME: see if we can/want/need-to really to deal with several potential key-sessions?\n\n\n var keysListItem = this._mediaKeysList[0];\n\n if (!keysListItem) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error('Fatal: Media is encrypted but not any key-system access has been obtained yet');\n\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].KEY_SYSTEM_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_SYSTEM_NO_ACCESS,\n fatal: true\n });\n return;\n }\n\n if (keysListItem.mediaKeysSessionInitialized) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn('Key-Session already initialized but requested again');\n\n return;\n }\n\n var keySession = keysListItem.mediaKeysSession;\n\n if (!keySession) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error('Fatal: Media is encrypted but no key-session existing');\n\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].KEY_SYSTEM_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_SYSTEM_NO_SESSION,\n fatal: true\n });\n return;\n } // initData is null if the media is not CORS-same-origin\n\n\n if (!initData) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn('Fatal: initData required for generating a key session is null');\n\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].KEY_SYSTEM_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_SYSTEM_NO_INIT_DATA,\n fatal: true\n });\n return;\n }\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"Generating key-session request for \\\"\" + initDataType + \"\\\" init data type\");\n\n keysListItem.mediaKeysSessionInitialized = true;\n keySession.generateRequest(initDataType, initData).then(function () {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].debug('Key-session generation succeeded');\n }).catch(function (err) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error('Error generating key-session request:', err);\n\n _this6.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].KEY_SYSTEM_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_SYSTEM_NO_SESSION,\n fatal: false\n });\n });\n }\n /**\n * @private\n * @param {string} url License server URL\n * @param {ArrayBuffer} keyMessage Message data issued by key-system\n * @param {function} callback Called when XHR has succeeded\n * @returns {XMLHttpRequest} Unsent (but opened state) XHR object\n * @throws if XMLHttpRequest construction failed\n */\n ;\n\n _proto._createLicenseXhr = function _createLicenseXhr(url, keyMessage, callback) {\n var xhr = new XMLHttpRequest();\n xhr.responseType = 'arraybuffer';\n xhr.onreadystatechange = this._onLicenseRequestReadyStageChange.bind(this, xhr, url, keyMessage, callback);\n var licenseXhrSetup = this._licenseXhrSetup;\n\n if (licenseXhrSetup) {\n try {\n licenseXhrSetup.call(this.hls, xhr, url);\n licenseXhrSetup = undefined;\n } catch (e) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error(e);\n }\n }\n\n try {\n // if licenseXhrSetup did not yet call open, let's do it now\n if (!xhr.readyState) {\n xhr.open('POST', url, true);\n }\n\n if (licenseXhrSetup) {\n licenseXhrSetup.call(this.hls, xhr, url);\n }\n } catch (e) {\n // IE11 throws an exception on xhr.open if attempting to access an HTTP resource over HTTPS\n throw new Error(\"issue setting up KeySystem license XHR \" + e);\n }\n\n return xhr;\n }\n /**\n * @private\n * @param {XMLHttpRequest} xhr\n * @param {string} url License server URL\n * @param {ArrayBuffer} keyMessage Message data issued by key-system\n * @param {function} callback Called when XHR has succeeded\n */\n ;\n\n _proto._onLicenseRequestReadyStageChange = function _onLicenseRequestReadyStageChange(xhr, url, keyMessage, callback) {\n switch (xhr.readyState) {\n case 4:\n if (xhr.status === 200) {\n this._requestLicenseFailureCount = 0;\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('License request succeeded');\n\n var _data = xhr.response;\n var licenseResponseCallback = this._licenseResponseCallback;\n\n if (licenseResponseCallback) {\n try {\n _data = licenseResponseCallback.call(this.hls, xhr, url);\n } catch (e) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error(e);\n }\n }\n\n callback(_data);\n } else {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error(\"License Request XHR failed (\" + url + \"). Status: \" + xhr.status + \" (\" + xhr.statusText + \")\");\n\n this._requestLicenseFailureCount++;\n\n if (this._requestLicenseFailureCount > MAX_LICENSE_REQUEST_FAILURES) {\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].KEY_SYSTEM_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_SYSTEM_LICENSE_REQUEST_FAILED,\n fatal: true\n });\n return;\n }\n\n var attemptsLeft = MAX_LICENSE_REQUEST_FAILURES - this._requestLicenseFailureCount + 1;\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"Retrying license request, \" + attemptsLeft + \" attempts left\");\n\n this._requestLicense(keyMessage, callback);\n }\n\n break;\n }\n }\n /**\n * @private\n * @param {MediaKeysListItem} keysListItem\n * @param {ArrayBuffer} keyMessage\n * @returns {ArrayBuffer} Challenge data posted to license server\n * @throws if KeySystem is unsupported\n */\n ;\n\n _proto._generateLicenseRequestChallenge = function _generateLicenseRequestChallenge(keysListItem, keyMessage) {\n switch (keysListItem.mediaKeySystemDomain) {\n // case KeySystems.PLAYREADY:\n // from https://github.com/MicrosoftEdge/Demos/blob/master/eme/scripts/demo.js\n\n /*\n if (this.licenseType !== this.LICENSE_TYPE_WIDEVINE) {\n // For PlayReady CDMs, we need to dig the Challenge out of the XML.\n var keyMessageXml = new DOMParser().parseFromString(String.fromCharCode.apply(null, new Uint16Array(keyMessage)), 'application/xml');\n if (keyMessageXml.getElementsByTagName('Challenge')[0]) {\n challenge = atob(keyMessageXml.getElementsByTagName('Challenge')[0].childNodes[0].nodeValue);\n } else {\n throw 'Cannot find in key message';\n }\n var headerNames = keyMessageXml.getElementsByTagName('name');\n var headerValues = keyMessageXml.getElementsByTagName('value');\n if (headerNames.length !== headerValues.length) {\n throw 'Mismatched header / pair in key message';\n }\n for (var i = 0; i < headerNames.length; i++) {\n xhr.setRequestHeader(headerNames[i].childNodes[0].nodeValue, headerValues[i].childNodes[0].nodeValue);\n }\n }\n break;\n */\n case _utils_mediakeys_helper__WEBPACK_IMPORTED_MODULE_3__[\"KeySystems\"].WIDEVINE:\n // For Widevine CDMs, the challenge is the keyMessage.\n return keyMessage;\n }\n\n throw new Error(\"unsupported key-system: \" + keysListItem.mediaKeySystemDomain);\n }\n /**\n * @private\n * @param keyMessage\n * @param callback\n */\n ;\n\n _proto._requestLicense = function _requestLicense(keyMessage, callback) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('Requesting content license for key-system');\n\n var keysListItem = this._mediaKeysList[0];\n\n if (!keysListItem) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error('Fatal error: Media is encrypted but no key-system access has been obtained yet');\n\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].KEY_SYSTEM_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_SYSTEM_NO_ACCESS,\n fatal: true\n });\n return;\n }\n\n try {\n var _url = this.getLicenseServerUrl(keysListItem.mediaKeySystemDomain);\n\n var _xhr = this._createLicenseXhr(_url, keyMessage, callback);\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"Sending license request to URL: \" + _url);\n\n var challenge = this._generateLicenseRequestChallenge(keysListItem, keyMessage);\n\n _xhr.send(challenge);\n } catch (e) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error(\"Failure requesting DRM license: \" + e);\n\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].KEY_SYSTEM_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_SYSTEM_LICENSE_REQUEST_FAILED,\n fatal: true\n });\n }\n };\n\n _proto.onMediaAttached = function onMediaAttached(event, data) {\n if (!this._emeEnabled) {\n return;\n }\n\n var media = data.media; // keep reference of media\n\n this._media = media;\n media.addEventListener('encrypted', this._onMediaEncrypted);\n };\n\n _proto.onMediaDetached = function onMediaDetached() {\n var media = this._media;\n var mediaKeysList = this._mediaKeysList;\n\n if (!media) {\n return;\n }\n\n media.removeEventListener('encrypted', this._onMediaEncrypted);\n this._media = null;\n this._mediaKeysList = []; // Close all sessions and remove media keys from the video element.\n\n Promise.all(mediaKeysList.map(function (mediaKeysListItem) {\n if (mediaKeysListItem.mediaKeysSession) {\n return mediaKeysListItem.mediaKeysSession.close().catch(function () {// Ignore errors when closing the sessions. Closing a session that\n // generated no key requests will throw an error.\n });\n }\n })).then(function () {\n return media.setMediaKeys(null);\n }).catch(function () {// Ignore any failures while removing media keys from the video element.\n });\n };\n\n _proto.onManifestParsed = function onManifestParsed(event, data) {\n if (!this._emeEnabled) {\n return;\n }\n\n var audioCodecs = data.levels.map(function (level) {\n return level.audioCodec;\n }).filter(function (audioCodec) {\n return !!audioCodec;\n });\n var videoCodecs = data.levels.map(function (level) {\n return level.videoCodec;\n }).filter(function (videoCodec) {\n return !!videoCodec;\n });\n\n this._attemptKeySystemAccess(_utils_mediakeys_helper__WEBPACK_IMPORTED_MODULE_3__[\"KeySystems\"].WIDEVINE, audioCodecs, videoCodecs);\n };\n\n _createClass(EMEController, [{\n key: \"requestMediaKeySystemAccess\",\n get: function get() {\n if (!this._requestMediaKeySystemAccess) {\n throw new Error('No requestMediaKeySystemAccess function configured');\n }\n\n return this._requestMediaKeySystemAccess;\n }\n }]);\n\n return EMEController;\n }();\n /* harmony default export */\n\n\n __webpack_exports__[\"default\"] = EMEController;\n /***/\n },\n\n /***/\n \"./src/controller/fps-controller.ts\":\n /*!******************************************!*\\\n !*** ./src/controller/fps-controller.ts ***!\n \\******************************************/\n\n /*! exports provided: default */\n\n /***/\n function srcControllerFpsControllerTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony import */\n\n\n var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ../events */\n \"./src/events.ts\");\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ../utils/logger */\n \"./src/utils/logger.ts\");\n\n var FPSController = /*#__PURE__*/function () {\n // stream controller must be provided as a dependency!\n function FPSController(hls) {\n this.hls = void 0;\n this.isVideoPlaybackQualityAvailable = false;\n this.timer = void 0;\n this.media = null;\n this.lastTime = void 0;\n this.lastDroppedFrames = 0;\n this.lastDecodedFrames = 0;\n this.streamController = void 0;\n this.hls = hls;\n this.registerListeners();\n }\n\n var _proto = FPSController.prototype;\n\n _proto.setStreamController = function setStreamController(streamController) {\n this.streamController = streamController;\n };\n\n _proto.registerListeners = function registerListeners() {\n this.hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHING, this.onMediaAttaching, this);\n };\n\n _proto.unregisterListeners = function unregisterListeners() {\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHING, this.onMediaAttaching);\n };\n\n _proto.destroy = function destroy() {\n if (this.timer) {\n clearInterval(this.timer);\n }\n\n this.unregisterListeners();\n this.isVideoPlaybackQualityAvailable = false;\n this.media = null;\n };\n\n _proto.onMediaAttaching = function onMediaAttaching(event, data) {\n var config = this.hls.config;\n\n if (config.capLevelOnFPSDrop) {\n var media = data.media instanceof self.HTMLVideoElement ? data.media : null;\n this.media = media;\n\n if (media && typeof media.getVideoPlaybackQuality === 'function') {\n this.isVideoPlaybackQualityAvailable = true;\n }\n\n self.clearInterval(this.timer);\n this.timer = self.setInterval(this.checkFPSInterval.bind(this), config.fpsDroppedMonitoringPeriod);\n }\n };\n\n _proto.checkFPS = function checkFPS(video, decodedFrames, droppedFrames) {\n var currentTime = performance.now();\n\n if (decodedFrames) {\n if (this.lastTime) {\n var currentPeriod = currentTime - this.lastTime;\n var currentDropped = droppedFrames - this.lastDroppedFrames;\n var currentDecoded = decodedFrames - this.lastDecodedFrames;\n var droppedFPS = 1000 * currentDropped / currentPeriod;\n var hls = this.hls;\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].FPS_DROP, {\n currentDropped: currentDropped,\n currentDecoded: currentDecoded,\n totalDroppedFrames: droppedFrames\n });\n\n if (droppedFPS > 0) {\n // logger.log('checkFPS : droppedFPS/decodedFPS:' + droppedFPS/(1000 * currentDecoded / currentPeriod));\n if (currentDropped > hls.config.fpsDroppedMonitoringThreshold * currentDecoded) {\n var currentLevel = hls.currentLevel;\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_1__[\"logger\"].warn('drop FPS ratio greater than max allowed value for currentLevel: ' + currentLevel);\n\n if (currentLevel > 0 && (hls.autoLevelCapping === -1 || hls.autoLevelCapping >= currentLevel)) {\n currentLevel = currentLevel - 1;\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].FPS_DROP_LEVEL_CAPPING, {\n level: currentLevel,\n droppedLevel: hls.currentLevel\n });\n hls.autoLevelCapping = currentLevel;\n this.streamController.nextLevelSwitch();\n }\n }\n }\n }\n\n this.lastTime = currentTime;\n this.lastDroppedFrames = droppedFrames;\n this.lastDecodedFrames = decodedFrames;\n }\n };\n\n _proto.checkFPSInterval = function checkFPSInterval() {\n var video = this.media;\n\n if (video) {\n if (this.isVideoPlaybackQualityAvailable) {\n var videoPlaybackQuality = video.getVideoPlaybackQuality();\n this.checkFPS(video, videoPlaybackQuality.totalVideoFrames, videoPlaybackQuality.droppedVideoFrames);\n } else {\n // HTMLVideoElement doesn't include the webkit types\n this.checkFPS(video, video.webkitDecodedFrameCount, video.webkitDroppedFrameCount);\n }\n }\n };\n\n return FPSController;\n }();\n /* harmony default export */\n\n\n __webpack_exports__[\"default\"] = FPSController;\n /***/\n },\n\n /***/\n \"./src/controller/fragment-finders.ts\":\n /*!********************************************!*\\\n !*** ./src/controller/fragment-finders.ts ***!\n \\********************************************/\n\n /*! exports provided: findFragmentByPDT, findFragmentByPTS, fragmentWithinToleranceTest, pdtWithinToleranceTest, findFragWithCC */\n\n /***/\n function srcControllerFragmentFindersTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"findFragmentByPDT\", function () {\n return findFragmentByPDT;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"findFragmentByPTS\", function () {\n return findFragmentByPTS;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"fragmentWithinToleranceTest\", function () {\n return fragmentWithinToleranceTest;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"pdtWithinToleranceTest\", function () {\n return pdtWithinToleranceTest;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"findFragWithCC\", function () {\n return findFragWithCC;\n });\n /* harmony import */\n\n\n var _home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./src/polyfills/number */\n \"./src/polyfills/number.ts\");\n /* harmony import */\n\n\n var _utils_binary_search__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ../utils/binary-search */\n \"./src/utils/binary-search.ts\");\n /**\n * Returns first fragment whose endPdt value exceeds the given PDT.\n * @param {Array} fragments - The array of candidate fragments\n * @param {number|null} [PDTValue = null] - The PDT value which must be exceeded\n * @param {number} [maxFragLookUpTolerance = 0] - The amount of time that a fragment's start/end can be within in order to be considered contiguous\n * @returns {*|null} fragment - The best matching fragment\n */\n\n\n function findFragmentByPDT(fragments, PDTValue, maxFragLookUpTolerance) {\n if (PDTValue === null || !Array.isArray(fragments) || !fragments.length || !Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(PDTValue)) {\n return null;\n } // if less than start\n\n\n var startPDT = fragments[0].programDateTime;\n\n if (PDTValue < (startPDT || 0)) {\n return null;\n }\n\n var endPDT = fragments[fragments.length - 1].endProgramDateTime;\n\n if (PDTValue >= (endPDT || 0)) {\n return null;\n }\n\n maxFragLookUpTolerance = maxFragLookUpTolerance || 0;\n\n for (var seg = 0; seg < fragments.length; ++seg) {\n var frag = fragments[seg];\n\n if (pdtWithinToleranceTest(PDTValue, maxFragLookUpTolerance, frag)) {\n return frag;\n }\n }\n\n return null;\n }\n /**\n * Finds a fragment based on the SN of the previous fragment; or based on the needs of the current buffer.\n * This method compensates for small buffer gaps by applying a tolerance to the start of any candidate fragment, thus\n * breaking any traps which would cause the same fragment to be continuously selected within a small range.\n * @param {*} fragPrevious - The last frag successfully appended\n * @param {Array} fragments - The array of candidate fragments\n * @param {number} [bufferEnd = 0] - The end of the contiguous buffered range the playhead is currently within\n * @param {number} maxFragLookUpTolerance - The amount of time that a fragment's start/end can be within in order to be considered contiguous\n * @returns {*} foundFrag - The best matching fragment\n */\n\n\n function findFragmentByPTS(fragPrevious, fragments, bufferEnd, maxFragLookUpTolerance) {\n if (bufferEnd === void 0) {\n bufferEnd = 0;\n }\n\n if (maxFragLookUpTolerance === void 0) {\n maxFragLookUpTolerance = 0;\n }\n\n var fragNext = null;\n\n if (fragPrevious) {\n fragNext = fragments[fragPrevious.sn - fragments[0].sn + 1] || null;\n } else if (bufferEnd === 0 && fragments[0].start === 0) {\n fragNext = fragments[0];\n } // Prefer the next fragment if it's within tolerance\n\n\n if (fragNext && fragmentWithinToleranceTest(bufferEnd, maxFragLookUpTolerance, fragNext) === 0) {\n return fragNext;\n } // We might be seeking past the tolerance so find the best match\n\n\n var foundFragment = _utils_binary_search__WEBPACK_IMPORTED_MODULE_1__[\"default\"].search(fragments, fragmentWithinToleranceTest.bind(null, bufferEnd, maxFragLookUpTolerance));\n\n if (foundFragment) {\n return foundFragment;\n } // If no match was found return the next fragment after fragPrevious, or null\n\n\n return fragNext;\n }\n /**\n * The test function used by the findFragmentBySn's BinarySearch to look for the best match to the current buffer conditions.\n * @param {*} candidate - The fragment to test\n * @param {number} [bufferEnd = 0] - The end of the current buffered range the playhead is currently within\n * @param {number} [maxFragLookUpTolerance = 0] - The amount of time that a fragment's start can be within in order to be considered contiguous\n * @returns {number} - 0 if it matches, 1 if too low, -1 if too high\n */\n\n\n function fragmentWithinToleranceTest(bufferEnd, maxFragLookUpTolerance, candidate) {\n if (bufferEnd === void 0) {\n bufferEnd = 0;\n }\n\n if (maxFragLookUpTolerance === void 0) {\n maxFragLookUpTolerance = 0;\n } // offset should be within fragment boundary - config.maxFragLookUpTolerance\n // this is to cope with situations like\n // bufferEnd = 9.991\n // frag[Ø] : [0,10]\n // frag[1] : [10,20]\n // bufferEnd is within frag[0] range ... although what we are expecting is to return frag[1] here\n // frag start frag start+duration\n // |-----------------------------|\n // <---> <--->\n // ...--------><-----------------------------><---------....\n // previous frag matching fragment next frag\n // return -1 return 0 return 1\n // logger.log(`level/sn/start/end/bufEnd:${level}/${candidate.sn}/${candidate.start}/${(candidate.start+candidate.duration)}/${bufferEnd}`);\n // Set the lookup tolerance to be small enough to detect the current segment - ensures we don't skip over very small segments\n\n\n var candidateLookupTolerance = Math.min(maxFragLookUpTolerance, candidate.duration + (candidate.deltaPTS ? candidate.deltaPTS : 0));\n\n if (candidate.start + candidate.duration - candidateLookupTolerance <= bufferEnd) {\n return 1;\n } else if (candidate.start - candidateLookupTolerance > bufferEnd && candidate.start) {\n // if maxFragLookUpTolerance will have negative value then don't return -1 for first element\n return -1;\n }\n\n return 0;\n }\n /**\n * The test function used by the findFragmentByPdt's BinarySearch to look for the best match to the current buffer conditions.\n * This function tests the candidate's program date time values, as represented in Unix time\n * @param {*} candidate - The fragment to test\n * @param {number} [pdtBufferEnd = 0] - The Unix time representing the end of the current buffered range\n * @param {number} [maxFragLookUpTolerance = 0] - The amount of time that a fragment's start can be within in order to be considered contiguous\n * @returns {boolean} True if contiguous, false otherwise\n */\n\n\n function pdtWithinToleranceTest(pdtBufferEnd, maxFragLookUpTolerance, candidate) {\n var candidateLookupTolerance = Math.min(maxFragLookUpTolerance, candidate.duration + (candidate.deltaPTS ? candidate.deltaPTS : 0)) * 1000; // endProgramDateTime can be null, default to zero\n\n var endProgramDateTime = candidate.endProgramDateTime || 0;\n return endProgramDateTime - candidateLookupTolerance > pdtBufferEnd;\n }\n\n function findFragWithCC(fragments, cc) {\n return _utils_binary_search__WEBPACK_IMPORTED_MODULE_1__[\"default\"].search(fragments, function (candidate) {\n if (candidate.cc < cc) {\n return 1;\n } else if (candidate.cc > cc) {\n return -1;\n } else {\n return 0;\n }\n });\n }\n /***/\n\n },\n\n /***/\n \"./src/controller/fragment-tracker.ts\":\n /*!********************************************!*\\\n !*** ./src/controller/fragment-tracker.ts ***!\n \\********************************************/\n\n /*! exports provided: FragmentState, FragmentTracker */\n\n /***/\n function srcControllerFragmentTrackerTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"FragmentState\", function () {\n return FragmentState;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"FragmentTracker\", function () {\n return FragmentTracker;\n });\n /* harmony import */\n\n\n var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ../events */\n \"./src/events.ts\");\n /* harmony import */\n\n\n var _types_loader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ../types/loader */\n \"./src/types/loader.ts\");\n\n var FragmentState;\n\n (function (FragmentState) {\n FragmentState[\"NOT_LOADED\"] = \"NOT_LOADED\";\n FragmentState[\"BACKTRACKED\"] = \"BACKTRACKED\";\n FragmentState[\"APPENDING\"] = \"APPENDING\";\n FragmentState[\"PARTIAL\"] = \"PARTIAL\";\n FragmentState[\"OK\"] = \"OK\";\n })(FragmentState || (FragmentState = {}));\n\n var FragmentTracker = /*#__PURE__*/function () {\n function FragmentTracker(hls) {\n this.activeFragment = null;\n this.activeParts = null;\n this.fragments = Object.create(null);\n this.timeRanges = Object.create(null);\n this.bufferPadding = 0.2;\n this.hls = void 0;\n this.hls = hls;\n\n this._registerListeners();\n }\n\n var _proto = FragmentTracker.prototype;\n\n _proto._registerListeners = function _registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].BUFFER_APPENDED, this.onBufferAppended, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].FRAG_BUFFERED, this.onFragBuffered, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].FRAG_LOADED, this.onFragLoaded, this);\n };\n\n _proto._unregisterListeners = function _unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].BUFFER_APPENDED, this.onBufferAppended, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].FRAG_BUFFERED, this.onFragBuffered, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].FRAG_LOADED, this.onFragLoaded, this);\n };\n\n _proto.destroy = function destroy() {\n this._unregisterListeners(); // @ts-ignore\n\n\n this.fragments = this.timeRanges = null;\n }\n /**\n * Return a Fragment with an appended range that matches the position and levelType.\n * If not found any Fragment, return null\n */\n ;\n\n _proto.getAppendedFrag = function getAppendedFrag(position, levelType) {\n if (levelType === _types_loader__WEBPACK_IMPORTED_MODULE_1__[\"PlaylistLevelType\"].MAIN) {\n var activeFragment = this.activeFragment,\n activeParts = this.activeParts;\n\n if (!activeFragment) {\n return null;\n }\n\n if (activeParts) {\n for (var i = activeParts.length; i--;) {\n var activePart = activeParts[i];\n var appendedPTS = activePart ? activePart.end : activeFragment.appendedPTS;\n\n if (activePart.start <= position && appendedPTS !== undefined && position <= appendedPTS) {\n // 9 is a magic number. remove parts from lookup after a match but keep some short seeks back.\n if (i > 9) {\n this.activeParts = activeParts.slice(i - 9);\n }\n\n return activePart;\n }\n }\n } else if (activeFragment.start <= position && activeFragment.appendedPTS !== undefined && position <= activeFragment.appendedPTS) {\n return activeFragment;\n }\n }\n\n return this.getBufferedFrag(position, levelType);\n }\n /**\n * Return a buffered Fragment that matches the position and levelType.\n * A buffered Fragment is one whose loading, parsing and appending is done (completed or \"partial\" meaning aborted).\n * If not found any Fragment, return null\n */\n ;\n\n _proto.getBufferedFrag = function getBufferedFrag(position, levelType) {\n var fragments = this.fragments;\n var keys = Object.keys(fragments);\n\n for (var i = keys.length; i--;) {\n var fragmentEntity = fragments[keys[i]];\n\n if ((fragmentEntity === null || fragmentEntity === void 0 ? void 0 : fragmentEntity.body.type) === levelType && fragmentEntity.buffered) {\n var frag = fragmentEntity.body;\n\n if (frag.start <= position && position <= frag.end) {\n return frag;\n }\n }\n }\n\n return null;\n }\n /**\n * Partial fragments effected by coded frame eviction will be removed\n * The browser will unload parts of the buffer to free up memory for new buffer data\n * Fragments will need to be reloaded when the buffer is freed up, removing partial fragments will allow them to reload(since there might be parts that are still playable)\n */\n ;\n\n _proto.detectEvictedFragments = function detectEvictedFragments(elementaryStream, timeRange, playlistType) {\n var _this = this; // Check if any flagged fragments have been unloaded\n\n\n Object.keys(this.fragments).forEach(function (key) {\n var fragmentEntity = _this.fragments[key];\n\n if (!fragmentEntity) {\n return;\n }\n\n if (!fragmentEntity.buffered) {\n if (fragmentEntity.body.type === playlistType) {\n _this.removeFragment(fragmentEntity.body);\n }\n\n return;\n }\n\n var esData = fragmentEntity.range[elementaryStream];\n\n if (!esData) {\n return;\n }\n\n esData.time.some(function (time) {\n var isNotBuffered = !_this.isTimeBuffered(time.startPTS, time.endPTS, timeRange);\n\n if (isNotBuffered) {\n // Unregister partial fragment as it needs to load again to be reused\n _this.removeFragment(fragmentEntity.body);\n }\n\n return isNotBuffered;\n });\n });\n }\n /**\n * Checks if the fragment passed in is loaded in the buffer properly\n * Partially loaded fragments will be registered as a partial fragment\n */\n ;\n\n _proto.detectPartialFragments = function detectPartialFragments(data) {\n var _this2 = this;\n\n var timeRanges = this.timeRanges;\n var frag = data.frag,\n part = data.part;\n\n if (!timeRanges || frag.sn === 'initSegment') {\n return;\n }\n\n var fragKey = getFragmentKey(frag);\n var fragmentEntity = this.fragments[fragKey];\n\n if (!fragmentEntity) {\n return;\n }\n\n Object.keys(timeRanges).forEach(function (elementaryStream) {\n var streamInfo = frag.elementaryStreams[elementaryStream];\n\n if (!streamInfo) {\n return;\n }\n\n var timeRange = timeRanges[elementaryStream];\n var partial = part !== null || streamInfo.partial === true;\n fragmentEntity.range[elementaryStream] = _this2.getBufferedTimes(frag, part, partial, timeRange);\n });\n fragmentEntity.backtrack = fragmentEntity.loaded = null;\n\n if (Object.keys(fragmentEntity.range).length) {\n fragmentEntity.buffered = true;\n } else {\n // remove fragment if nothing was appended\n this.removeFragment(fragmentEntity.body);\n }\n };\n\n _proto.fragBuffered = function fragBuffered(frag) {\n var fragKey = getFragmentKey(frag);\n var fragmentEntity = this.fragments[fragKey];\n\n if (fragmentEntity) {\n fragmentEntity.backtrack = fragmentEntity.loaded = null;\n fragmentEntity.buffered = true;\n }\n };\n\n _proto.getBufferedTimes = function getBufferedTimes(fragment, part, partial, timeRange) {\n var buffered = {\n time: [],\n partial: partial\n };\n var startPTS = part ? part.start : fragment.start;\n var endPTS = part ? part.end : fragment.end;\n var minEndPTS = fragment.minEndPTS || endPTS;\n var maxStartPTS = fragment.maxStartPTS || startPTS;\n\n for (var i = 0; i < timeRange.length; i++) {\n var startTime = timeRange.start(i) - this.bufferPadding;\n var endTime = timeRange.end(i) + this.bufferPadding;\n\n if (maxStartPTS >= startTime && minEndPTS <= endTime) {\n // Fragment is entirely contained in buffer\n // No need to check the other timeRange times since it's completely playable\n buffered.time.push({\n startPTS: Math.max(startPTS, timeRange.start(i)),\n endPTS: Math.min(endPTS, timeRange.end(i))\n });\n break;\n } else if (startPTS < endTime && endPTS > startTime) {\n buffered.partial = true; // Check for intersection with buffer\n // Get playable sections of the fragment\n\n buffered.time.push({\n startPTS: Math.max(startPTS, timeRange.start(i)),\n endPTS: Math.min(endPTS, timeRange.end(i))\n });\n } else if (endPTS <= startTime) {\n // No need to check the rest of the timeRange as it is in order\n break;\n }\n }\n\n return buffered;\n }\n /**\n * Gets the partial fragment for a certain time\n */\n ;\n\n _proto.getPartialFragment = function getPartialFragment(time) {\n var bestFragment = null;\n var timePadding;\n var startTime;\n var endTime;\n var bestOverlap = 0;\n var bufferPadding = this.bufferPadding,\n fragments = this.fragments;\n Object.keys(fragments).forEach(function (key) {\n var fragmentEntity = fragments[key];\n\n if (!fragmentEntity) {\n return;\n }\n\n if (isPartial(fragmentEntity)) {\n startTime = fragmentEntity.body.start - bufferPadding;\n endTime = fragmentEntity.body.end + bufferPadding;\n\n if (time >= startTime && time <= endTime) {\n // Use the fragment that has the most padding from start and end time\n timePadding = Math.min(time - startTime, endTime - time);\n\n if (bestOverlap <= timePadding) {\n bestFragment = fragmentEntity.body;\n bestOverlap = timePadding;\n }\n }\n }\n });\n return bestFragment;\n };\n\n _proto.getState = function getState(fragment) {\n var fragKey = getFragmentKey(fragment);\n var fragmentEntity = this.fragments[fragKey];\n\n if (fragmentEntity) {\n if (!fragmentEntity.buffered) {\n if (fragmentEntity.backtrack) {\n return FragmentState.BACKTRACKED;\n }\n\n return FragmentState.APPENDING;\n } else if (isPartial(fragmentEntity)) {\n return FragmentState.PARTIAL;\n } else {\n return FragmentState.OK;\n }\n }\n\n return FragmentState.NOT_LOADED;\n };\n\n _proto.backtrack = function backtrack(frag, data) {\n var fragKey = getFragmentKey(frag);\n var fragmentEntity = this.fragments[fragKey];\n\n if (!fragmentEntity || fragmentEntity.backtrack) {\n return null;\n }\n\n var backtrack = fragmentEntity.backtrack = data ? data : fragmentEntity.loaded;\n fragmentEntity.loaded = null;\n return backtrack;\n };\n\n _proto.getBacktrackData = function getBacktrackData(fragment) {\n var fragKey = getFragmentKey(fragment);\n var fragmentEntity = this.fragments[fragKey];\n\n if (fragmentEntity) {\n var _backtrack$payload;\n\n var backtrack = fragmentEntity.backtrack; // If data was already sent to Worker it is detached no longer available\n\n if (backtrack !== null && backtrack !== void 0 && (_backtrack$payload = backtrack.payload) !== null && _backtrack$payload !== void 0 && _backtrack$payload.byteLength) {\n return backtrack;\n } else {\n this.removeFragment(fragment);\n }\n }\n\n return null;\n };\n\n _proto.isTimeBuffered = function isTimeBuffered(startPTS, endPTS, timeRange) {\n var startTime;\n var endTime;\n\n for (var i = 0; i < timeRange.length; i++) {\n startTime = timeRange.start(i) - this.bufferPadding;\n endTime = timeRange.end(i) + this.bufferPadding;\n\n if (startPTS >= startTime && endPTS <= endTime) {\n return true;\n }\n\n if (endPTS <= startTime) {\n // No need to check the rest of the timeRange as it is in order\n return false;\n }\n }\n\n return false;\n };\n\n _proto.onFragLoaded = function onFragLoaded(event, data) {\n var frag = data.frag,\n part = data.part; // don't track initsegment (for which sn is not a number)\n // don't track frags used for bitrateTest, they're irrelevant.\n // don't track parts for memory efficiency\n\n if (frag.sn === 'initSegment' || frag.bitrateTest || part) {\n return;\n }\n\n var fragKey = getFragmentKey(frag);\n this.fragments[fragKey] = {\n body: frag,\n loaded: data,\n backtrack: null,\n buffered: false,\n range: Object.create(null)\n };\n };\n\n _proto.onBufferAppended = function onBufferAppended(event, data) {\n var _this3 = this;\n\n var frag = data.frag,\n part = data.part,\n timeRanges = data.timeRanges;\n\n if (frag.type === _types_loader__WEBPACK_IMPORTED_MODULE_1__[\"PlaylistLevelType\"].MAIN) {\n this.activeFragment = frag;\n\n if (part) {\n var activeParts = this.activeParts;\n\n if (!activeParts) {\n this.activeParts = activeParts = [];\n }\n\n activeParts.push(part);\n } else {\n this.activeParts = null;\n }\n } // Store the latest timeRanges loaded in the buffer\n\n\n this.timeRanges = timeRanges;\n Object.keys(timeRanges).forEach(function (elementaryStream) {\n var timeRange = timeRanges[elementaryStream];\n\n _this3.detectEvictedFragments(elementaryStream, timeRange);\n\n if (!part) {\n for (var i = 0; i < timeRange.length; i++) {\n frag.appendedPTS = Math.max(timeRange.end(i), frag.appendedPTS || 0);\n }\n }\n });\n };\n\n _proto.onFragBuffered = function onFragBuffered(event, data) {\n this.detectPartialFragments(data);\n };\n\n _proto.hasFragment = function hasFragment(fragment) {\n var fragKey = getFragmentKey(fragment);\n return !!this.fragments[fragKey];\n };\n\n _proto.removeFragmentsInRange = function removeFragmentsInRange(start, end, playlistType) {\n var _this4 = this;\n\n Object.keys(this.fragments).forEach(function (key) {\n var fragmentEntity = _this4.fragments[key];\n\n if (!fragmentEntity) {\n return;\n }\n\n if (fragmentEntity.buffered) {\n var frag = fragmentEntity.body;\n\n if (frag.type === playlistType && frag.start < end && frag.end > start) {\n _this4.removeFragment(frag);\n }\n }\n });\n };\n\n _proto.removeFragment = function removeFragment(fragment) {\n var fragKey = getFragmentKey(fragment);\n fragment.stats.loaded = 0;\n fragment.clearElementaryStreamInfo();\n delete this.fragments[fragKey];\n };\n\n _proto.removeAllFragments = function removeAllFragments() {\n this.fragments = Object.create(null);\n this.activeFragment = null;\n this.activeParts = null;\n };\n\n return FragmentTracker;\n }();\n\n function isPartial(fragmentEntity) {\n var _fragmentEntity$range, _fragmentEntity$range2;\n\n return fragmentEntity.buffered && (((_fragmentEntity$range = fragmentEntity.range.video) === null || _fragmentEntity$range === void 0 ? void 0 : _fragmentEntity$range.partial) || ((_fragmentEntity$range2 = fragmentEntity.range.audio) === null || _fragmentEntity$range2 === void 0 ? void 0 : _fragmentEntity$range2.partial));\n }\n\n function getFragmentKey(fragment) {\n return fragment.type + \"_\" + fragment.level + \"_\" + fragment.urlId + \"_\" + fragment.sn;\n }\n /***/\n\n },\n\n /***/\n \"./src/controller/gap-controller.ts\":\n /*!******************************************!*\\\n !*** ./src/controller/gap-controller.ts ***!\n \\******************************************/\n\n /*! exports provided: STALL_MINIMUM_DURATION_MS, MAX_START_GAP_JUMP, SKIP_BUFFER_HOLE_STEP_SECONDS, SKIP_BUFFER_RANGE_START, default */\n\n /***/\n function srcControllerGapControllerTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"STALL_MINIMUM_DURATION_MS\", function () {\n return STALL_MINIMUM_DURATION_MS;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"MAX_START_GAP_JUMP\", function () {\n return MAX_START_GAP_JUMP;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"SKIP_BUFFER_HOLE_STEP_SECONDS\", function () {\n return SKIP_BUFFER_HOLE_STEP_SECONDS;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"SKIP_BUFFER_RANGE_START\", function () {\n return SKIP_BUFFER_RANGE_START;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"default\", function () {\n return GapController;\n });\n /* harmony import */\n\n\n var _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ../utils/buffer-helper */\n \"./src/utils/buffer-helper.ts\");\n /* harmony import */\n\n\n var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ../errors */\n \"./src/errors.ts\");\n /* harmony import */\n\n\n var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ../events */\n \"./src/events.ts\");\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\n /*! ../utils/logger */\n \"./src/utils/logger.ts\");\n\n var STALL_MINIMUM_DURATION_MS = 250;\n var MAX_START_GAP_JUMP = 2.0;\n var SKIP_BUFFER_HOLE_STEP_SECONDS = 0.1;\n var SKIP_BUFFER_RANGE_START = 0.05;\n\n var GapController = /*#__PURE__*/function () {\n function GapController(config, media, fragmentTracker, hls) {\n this.config = void 0;\n this.media = void 0;\n this.fragmentTracker = void 0;\n this.hls = void 0;\n this.nudgeRetry = 0;\n this.stallReported = false;\n this.stalled = null;\n this.moved = false;\n this.seeking = false;\n this.config = config;\n this.media = media;\n this.fragmentTracker = fragmentTracker;\n this.hls = hls;\n }\n\n var _proto = GapController.prototype;\n\n _proto.destroy = function destroy() {\n // @ts-ignore\n this.hls = this.fragmentTracker = this.media = null;\n }\n /**\n * Checks if the playhead is stuck within a gap, and if so, attempts to free it.\n * A gap is an unbuffered range between two buffered ranges (or the start and the first buffered range).\n *\n * @param {number} lastCurrentTime Previously read playhead position\n */\n ;\n\n _proto.poll = function poll(lastCurrentTime) {\n var config = this.config,\n media = this.media,\n stalled = this.stalled;\n var currentTime = media.currentTime,\n seeking = media.seeking;\n var seeked = this.seeking && !seeking;\n var beginSeek = !this.seeking && seeking;\n this.seeking = seeking; // The playhead is moving, no-op\n\n if (currentTime !== lastCurrentTime) {\n this.moved = true;\n\n if (stalled !== null) {\n // The playhead is now moving, but was previously stalled\n if (this.stallReported) {\n var _stalledDuration = self.performance.now() - stalled;\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn(\"playback not stuck anymore @\" + currentTime + \", after \" + Math.round(_stalledDuration) + \"ms\");\n\n this.stallReported = false;\n }\n\n this.stalled = null;\n this.nudgeRetry = 0;\n }\n\n return;\n } // Clear stalled state when beginning or finishing seeking so that we don't report stalls coming out of a seek\n\n\n if (beginSeek || seeked) {\n this.stalled = null;\n } // The playhead should not be moving\n\n\n if (media.paused || media.ended || media.playbackRate === 0 || !_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_0__[\"BufferHelper\"].getBuffered(media).length) {\n return;\n }\n\n var bufferInfo = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_0__[\"BufferHelper\"].bufferInfo(media, currentTime, 0);\n\n var isBuffered = bufferInfo.len > 0;\n var nextStart = bufferInfo.nextStart || 0; // There is no playable buffer (seeked, waiting for buffer)\n\n if (!isBuffered && !nextStart) {\n return;\n }\n\n if (seeking) {\n // Waiting for seeking in a buffered range to complete\n var hasEnoughBuffer = bufferInfo.len > MAX_START_GAP_JUMP; // Next buffered range is too far ahead to jump to while still seeking\n\n var noBufferGap = !nextStart || nextStart - currentTime > MAX_START_GAP_JUMP && !this.fragmentTracker.getPartialFragment(currentTime);\n\n if (hasEnoughBuffer || noBufferGap) {\n return;\n } // Reset moved state when seeking to a point in or before a gap\n\n\n this.moved = false;\n } // Skip start gaps if we haven't played, but the last poll detected the start of a stall\n // The addition poll gives the browser a chance to jump the gap for us\n\n\n if (!this.moved && this.stalled !== null) {\n var _level$details; // Jump start gaps within jump threshold\n\n\n var startJump = Math.max(nextStart, bufferInfo.start || 0) - currentTime; // When joining a live stream with audio tracks, account for live playlist window sliding by allowing\n // a larger jump over start gaps caused by the audio-stream-controller buffering a start fragment\n // that begins over 1 target duration after the video start position.\n\n var level = this.hls.levels ? this.hls.levels[this.hls.currentLevel] : null;\n var isLive = level === null || level === void 0 ? void 0 : (_level$details = level.details) === null || _level$details === void 0 ? void 0 : _level$details.live;\n var maxStartGapJump = isLive ? level.details.targetduration * 2 : MAX_START_GAP_JUMP;\n\n if (startJump > 0 && startJump <= maxStartGapJump) {\n this._trySkipBufferHole(null);\n\n return;\n }\n } // Start tracking stall time\n\n\n var tnow = self.performance.now();\n\n if (stalled === null) {\n this.stalled = tnow;\n return;\n }\n\n var stalledDuration = tnow - stalled;\n\n if (!seeking && stalledDuration >= STALL_MINIMUM_DURATION_MS) {\n // Report stalling after trying to fix\n this._reportStall(bufferInfo.len);\n }\n\n var bufferedWithHoles = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_0__[\"BufferHelper\"].bufferInfo(media, currentTime, config.maxBufferHole);\n\n this._tryFixBufferStall(bufferedWithHoles, stalledDuration);\n }\n /**\n * Detects and attempts to fix known buffer stalling issues.\n * @param bufferInfo - The properties of the current buffer.\n * @param stalledDurationMs - The amount of time Hls.js has been stalling for.\n * @private\n */\n ;\n\n _proto._tryFixBufferStall = function _tryFixBufferStall(bufferInfo, stalledDurationMs) {\n var config = this.config,\n fragmentTracker = this.fragmentTracker,\n media = this.media;\n var currentTime = media.currentTime;\n var partial = fragmentTracker.getPartialFragment(currentTime);\n\n if (partial) {\n // Try to skip over the buffer hole caused by a partial fragment\n // This method isn't limited by the size of the gap between buffered ranges\n var targetTime = this._trySkipBufferHole(partial); // we return here in this case, meaning\n // the branch below only executes when we don't handle a partial fragment\n\n\n if (targetTime) {\n return;\n }\n } // if we haven't had to skip over a buffer hole of a partial fragment\n // we may just have to \"nudge\" the playlist as the browser decoding/rendering engine\n // needs to cross some sort of threshold covering all source-buffers content\n // to start playing properly.\n\n\n if (bufferInfo.len > config.maxBufferHole && stalledDurationMs > config.highBufferWatchdogPeriod * 1000) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn('Trying to nudge playhead over buffer-hole'); // Try to nudge currentTime over a buffer hole if we've been stalling for the configured amount of seconds\n // We only try to jump the hole if it's under the configured size\n // Reset stalled so to rearm watchdog timer\n\n\n this.stalled = null;\n\n this._tryNudgeBuffer();\n }\n }\n /**\n * Triggers a BUFFER_STALLED_ERROR event, but only once per stall period.\n * @param bufferLen - The playhead distance from the end of the current buffer segment.\n * @private\n */\n ;\n\n _proto._reportStall = function _reportStall(bufferLen) {\n var hls = this.hls,\n media = this.media,\n stallReported = this.stallReported;\n\n if (!stallReported) {\n // Report stalled error once\n this.stallReported = true;\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn(\"Playback stalling at @\" + media.currentTime + \" due to low buffer (buffer=\" + bufferLen + \")\");\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].BUFFER_STALLED_ERROR,\n fatal: false,\n buffer: bufferLen\n });\n }\n }\n /**\n * Attempts to fix buffer stalls by jumping over known gaps caused by partial fragments\n * @param partial - The partial fragment found at the current time (where playback is stalling).\n * @private\n */\n ;\n\n _proto._trySkipBufferHole = function _trySkipBufferHole(partial) {\n var config = this.config,\n hls = this.hls,\n media = this.media;\n var currentTime = media.currentTime;\n var lastEndTime = 0; // Check if currentTime is between unbuffered regions of partial fragments\n\n var buffered = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_0__[\"BufferHelper\"].getBuffered(media);\n\n for (var i = 0; i < buffered.length; i++) {\n var startTime = buffered.start(i);\n\n if (currentTime + config.maxBufferHole >= lastEndTime && currentTime < startTime) {\n var targetTime = Math.max(startTime + SKIP_BUFFER_RANGE_START, media.currentTime + SKIP_BUFFER_HOLE_STEP_SECONDS);\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn(\"skipping hole, adjusting currentTime from \" + currentTime + \" to \" + targetTime);\n\n this.moved = true;\n this.stalled = null;\n media.currentTime = targetTime;\n\n if (partial) {\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].BUFFER_SEEK_OVER_HOLE,\n fatal: false,\n reason: \"fragment loaded with buffer holes, seeking from \" + currentTime + \" to \" + targetTime,\n frag: partial\n });\n }\n\n return targetTime;\n }\n\n lastEndTime = buffered.end(i);\n }\n\n return 0;\n }\n /**\n * Attempts to fix buffer stalls by advancing the mediaElement's current time by a small amount.\n * @private\n */\n ;\n\n _proto._tryNudgeBuffer = function _tryNudgeBuffer() {\n var config = this.config,\n hls = this.hls,\n media = this.media;\n var currentTime = media.currentTime;\n var nudgeRetry = (this.nudgeRetry || 0) + 1;\n this.nudgeRetry = nudgeRetry;\n\n if (nudgeRetry < config.nudgeMaxRetry) {\n var targetTime = currentTime + nudgeRetry * config.nudgeOffset; // playback stalled in buffered area ... let's nudge currentTime to try to overcome this\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn(\"Nudging 'currentTime' from \" + currentTime + \" to \" + targetTime);\n\n media.currentTime = targetTime;\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].BUFFER_NUDGE_ON_STALL,\n fatal: false\n });\n } else {\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].error(\"Playhead still not moving while enough data buffered @\" + currentTime + \" after \" + config.nudgeMaxRetry + \" nudges\");\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].BUFFER_STALLED_ERROR,\n fatal: true\n });\n }\n };\n\n return GapController;\n }();\n /***/\n\n },\n\n /***/\n \"./src/controller/id3-track-controller.ts\":\n /*!************************************************!*\\\n !*** ./src/controller/id3-track-controller.ts ***!\n \\************************************************/\n\n /*! exports provided: default */\n\n /***/\n function srcControllerId3TrackControllerTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony import */\n\n\n var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ../events */\n \"./src/events.ts\");\n /* harmony import */\n\n\n var _utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ../utils/texttrack-utils */\n \"./src/utils/texttrack-utils.ts\");\n /* harmony import */\n\n\n var _demux_id3__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ../demux/id3 */\n \"./src/demux/id3.ts\");\n\n var MIN_CUE_DURATION = 0.25;\n\n var ID3TrackController = /*#__PURE__*/function () {\n function ID3TrackController(hls) {\n this.hls = void 0;\n this.id3Track = null;\n this.media = null;\n this.hls = hls;\n\n this._registerListeners();\n }\n\n var _proto = ID3TrackController.prototype;\n\n _proto.destroy = function destroy() {\n this._unregisterListeners();\n };\n\n _proto._registerListeners = function _registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].FRAG_PARSING_METADATA, this.onFragParsingMetadata, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].BUFFER_FLUSHING, this.onBufferFlushing, this);\n };\n\n _proto._unregisterListeners = function _unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].FRAG_PARSING_METADATA, this.onFragParsingMetadata, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].BUFFER_FLUSHING, this.onBufferFlushing, this);\n } // Add ID3 metatadata text track.\n ;\n\n _proto.onMediaAttached = function onMediaAttached(event, data) {\n this.media = data.media;\n };\n\n _proto.onMediaDetaching = function onMediaDetaching() {\n if (!this.id3Track) {\n return;\n }\n\n Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_1__[\"clearCurrentCues\"])(this.id3Track);\n this.id3Track = null;\n this.media = null;\n };\n\n _proto.getID3Track = function getID3Track(textTracks) {\n if (!this.media) {\n return;\n }\n\n for (var i = 0; i < textTracks.length; i++) {\n var textTrack = textTracks[i];\n\n if (textTrack.kind === 'metadata' && textTrack.label === 'id3') {\n // send 'addtrack' when reusing the textTrack for metadata,\n // same as what we do for captions\n Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_1__[\"sendAddTrackEvent\"])(textTrack, this.media);\n return textTrack;\n }\n }\n\n return this.media.addTextTrack('metadata', 'id3');\n };\n\n _proto.onFragParsingMetadata = function onFragParsingMetadata(event, data) {\n if (!this.media) {\n return;\n }\n\n var fragment = data.frag;\n var samples = data.samples; // create track dynamically\n\n if (!this.id3Track) {\n this.id3Track = this.getID3Track(this.media.textTracks);\n this.id3Track.mode = 'hidden';\n } // Attempt to recreate Safari functionality by creating\n // WebKitDataCue objects when available and store the decoded\n // ID3 data in the value property of the cue\n\n\n var Cue = self.WebKitDataCue || self.VTTCue || self.TextTrackCue;\n\n for (var i = 0; i < samples.length; i++) {\n var frames = _demux_id3__WEBPACK_IMPORTED_MODULE_2__[\"getID3Frames\"](samples[i].data);\n\n if (frames) {\n var startTime = samples[i].pts;\n var endTime = i < samples.length - 1 ? samples[i + 1].pts : fragment.end;\n var timeDiff = endTime - startTime;\n\n if (timeDiff <= 0) {\n endTime = startTime + MIN_CUE_DURATION;\n }\n\n for (var j = 0; j < frames.length; j++) {\n var frame = frames[j]; // Safari doesn't put the timestamp frame in the TextTrack\n\n if (!_demux_id3__WEBPACK_IMPORTED_MODULE_2__[\"isTimeStampFrame\"](frame)) {\n var cue = new Cue(startTime, endTime, '');\n cue.value = frame;\n this.id3Track.addCue(cue);\n }\n }\n }\n }\n };\n\n _proto.onBufferFlushing = function onBufferFlushing(event, _ref) {\n var startOffset = _ref.startOffset,\n endOffset = _ref.endOffset,\n type = _ref.type;\n\n if (!type || type === 'audio') {\n // id3 cues come from parsed audio only remove cues when audio buffer is cleared\n var id3Track = this.id3Track;\n\n if (id3Track) {\n Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_1__[\"removeCuesInRange\"])(id3Track, startOffset, endOffset);\n }\n }\n };\n\n return ID3TrackController;\n }();\n /* harmony default export */\n\n\n __webpack_exports__[\"default\"] = ID3TrackController;\n /***/\n },\n\n /***/\n \"./src/controller/latency-controller.ts\":\n /*!**********************************************!*\\\n !*** ./src/controller/latency-controller.ts ***!\n \\**********************************************/\n\n /*! exports provided: default */\n\n /***/\n function srcControllerLatencyControllerTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"default\", function () {\n return LatencyController;\n });\n /* harmony import */\n\n\n var _errors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ../errors */\n \"./src/errors.ts\");\n /* harmony import */\n\n\n var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ../events */\n \"./src/events.ts\");\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ../utils/logger */\n \"./src/utils/logger.ts\");\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n var LatencyController = /*#__PURE__*/function () {\n function LatencyController(hls) {\n var _this = this;\n\n this.hls = void 0;\n this.config = void 0;\n this.media = null;\n this.levelDetails = null;\n this.currentTime = 0;\n this.stallCount = 0;\n this._latency = null;\n\n this.timeupdateHandler = function () {\n return _this.timeupdate();\n };\n\n this.hls = hls;\n this.config = hls.config;\n this.registerListeners();\n }\n\n var _proto = LatencyController.prototype;\n\n _proto.destroy = function destroy() {\n this.unregisterListeners();\n this.onMediaDetaching();\n this.levelDetails = null; // @ts-ignore\n\n this.hls = this.timeupdateHandler = null;\n };\n\n _proto.registerListeners = function registerListeners() {\n this.hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n this.hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n this.hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n this.hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_UPDATED, this.onLevelUpdated, this);\n this.hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, this.onError, this);\n };\n\n _proto.unregisterListeners = function unregisterListeners() {\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached);\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching);\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading);\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_UPDATED, this.onLevelUpdated);\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, this.onError);\n };\n\n _proto.onMediaAttached = function onMediaAttached(event, data) {\n this.media = data.media;\n this.media.addEventListener('timeupdate', this.timeupdateHandler);\n };\n\n _proto.onMediaDetaching = function onMediaDetaching() {\n if (this.media) {\n this.media.removeEventListener('timeupdate', this.timeupdateHandler);\n this.media = null;\n }\n };\n\n _proto.onManifestLoading = function onManifestLoading() {\n this.levelDetails = null;\n this._latency = null;\n this.stallCount = 0;\n };\n\n _proto.onLevelUpdated = function onLevelUpdated(event, _ref) {\n var details = _ref.details;\n this.levelDetails = details;\n\n if (details.advanced) {\n this.timeupdate();\n }\n\n if (!details.live && this.media) {\n this.media.removeEventListener('timeupdate', this.timeupdateHandler);\n }\n };\n\n _proto.onError = function onError(event, data) {\n if (data.details !== _errors__WEBPACK_IMPORTED_MODULE_0__[\"ErrorDetails\"].BUFFER_STALLED_ERROR) {\n return;\n }\n\n this.stallCount++;\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn('[playback-rate-controller]: Stall detected, adjusting target latency');\n };\n\n _proto.timeupdate = function timeupdate() {\n var media = this.media,\n levelDetails = this.levelDetails;\n\n if (!media || !levelDetails) {\n return;\n }\n\n this.currentTime = media.currentTime;\n var latency = this.computeLatency();\n\n if (latency === null) {\n return;\n }\n\n this._latency = latency; // Adapt playbackRate to meet target latency in low-latency mode\n\n var _this$config = this.config,\n lowLatencyMode = _this$config.lowLatencyMode,\n maxLiveSyncPlaybackRate = _this$config.maxLiveSyncPlaybackRate;\n\n if (!lowLatencyMode || maxLiveSyncPlaybackRate === 1) {\n return;\n }\n\n var targetLatency = this.targetLatency;\n\n if (targetLatency === null) {\n return;\n }\n\n var distanceFromTarget = latency - targetLatency; // Only adjust playbackRate when within one target duration of targetLatency\n // and more than one second from under-buffering.\n // Playback further than one target duration from target can be considered DVR playback.\n\n var liveMinLatencyDuration = Math.min(this.maxLatency, targetLatency + levelDetails.targetduration);\n var inLiveRange = distanceFromTarget < liveMinLatencyDuration;\n\n if (levelDetails.live && inLiveRange && distanceFromTarget > 0.05 && this.forwardBufferLength > 1) {\n var max = Math.min(2, Math.max(1.0, maxLiveSyncPlaybackRate));\n var rate = Math.round(2 / (1 + Math.exp(-0.75 * distanceFromTarget - this.edgeStalled)) * 20) / 20;\n media.playbackRate = Math.min(max, Math.max(1, rate));\n } else if (media.playbackRate !== 1 && media.playbackRate !== 0) {\n media.playbackRate = 1;\n }\n };\n\n _proto.estimateLiveEdge = function estimateLiveEdge() {\n var levelDetails = this.levelDetails;\n\n if (levelDetails === null) {\n return null;\n }\n\n return levelDetails.edge + levelDetails.age;\n };\n\n _proto.computeLatency = function computeLatency() {\n var liveEdge = this.estimateLiveEdge();\n\n if (liveEdge === null) {\n return null;\n }\n\n return liveEdge - this.currentTime;\n };\n\n _createClass(LatencyController, [{\n key: \"latency\",\n get: function get() {\n return this._latency || 0;\n }\n }, {\n key: \"maxLatency\",\n get: function get() {\n var config = this.config,\n levelDetails = this.levelDetails;\n\n if (config.liveMaxLatencyDuration !== undefined) {\n return config.liveMaxLatencyDuration;\n }\n\n return levelDetails ? config.liveMaxLatencyDurationCount * levelDetails.targetduration : 0;\n }\n }, {\n key: \"targetLatency\",\n get: function get() {\n var levelDetails = this.levelDetails;\n\n if (levelDetails === null) {\n return null;\n }\n\n var holdBack = levelDetails.holdBack,\n partHoldBack = levelDetails.partHoldBack,\n targetduration = levelDetails.targetduration;\n var _this$config2 = this.config,\n liveSyncDuration = _this$config2.liveSyncDuration,\n liveSyncDurationCount = _this$config2.liveSyncDurationCount,\n lowLatencyMode = _this$config2.lowLatencyMode;\n var userConfig = this.hls.userConfig;\n var targetLatency = lowLatencyMode ? partHoldBack || holdBack : holdBack;\n\n if (userConfig.liveSyncDuration || userConfig.liveSyncDurationCount || targetLatency === 0) {\n targetLatency = liveSyncDuration !== undefined ? liveSyncDuration : liveSyncDurationCount * targetduration;\n }\n\n var maxLiveSyncOnStallIncrease = targetduration;\n var liveSyncOnStallIncrease = 1.0;\n return targetLatency + Math.min(this.stallCount * liveSyncOnStallIncrease, maxLiveSyncOnStallIncrease);\n }\n }, {\n key: \"liveSyncPosition\",\n get: function get() {\n var liveEdge = this.estimateLiveEdge();\n var targetLatency = this.targetLatency;\n var levelDetails = this.levelDetails;\n\n if (liveEdge === null || targetLatency === null || levelDetails === null) {\n return null;\n }\n\n var edge = levelDetails.edge;\n var syncPosition = liveEdge - targetLatency - this.edgeStalled;\n var min = edge - levelDetails.totalduration;\n var max = edge - (this.config.lowLatencyMode && levelDetails.partTarget || levelDetails.targetduration);\n return Math.min(Math.max(min, syncPosition), max);\n }\n }, {\n key: \"drift\",\n get: function get() {\n var levelDetails = this.levelDetails;\n\n if (levelDetails === null) {\n return 1;\n }\n\n return levelDetails.drift;\n }\n }, {\n key: \"edgeStalled\",\n get: function get() {\n var levelDetails = this.levelDetails;\n\n if (levelDetails === null) {\n return 0;\n }\n\n var maxLevelUpdateAge = (this.config.lowLatencyMode && levelDetails.partTarget || levelDetails.targetduration) * 3;\n return Math.max(levelDetails.age - maxLevelUpdateAge, 0);\n }\n }, {\n key: \"forwardBufferLength\",\n get: function get() {\n var media = this.media,\n levelDetails = this.levelDetails;\n\n if (!media || !levelDetails) {\n return 0;\n }\n\n var bufferedRanges = media.buffered.length;\n return bufferedRanges ? media.buffered.end(bufferedRanges - 1) : levelDetails.edge - this.currentTime;\n }\n }]);\n\n return LatencyController;\n }();\n /***/\n\n },\n\n /***/\n \"./src/controller/level-controller.ts\":\n /*!********************************************!*\\\n !*** ./src/controller/level-controller.ts ***!\n \\********************************************/\n\n /*! exports provided: default */\n\n /***/\n function srcControllerLevelControllerTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"default\", function () {\n return LevelController;\n });\n /* harmony import */\n\n\n var _types_level__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ../types/level */\n \"./src/types/level.ts\");\n /* harmony import */\n\n\n var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ../events */\n \"./src/events.ts\");\n /* harmony import */\n\n\n var _errors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ../errors */\n \"./src/errors.ts\");\n /* harmony import */\n\n\n var _utils_codecs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\n /*! ../utils/codecs */\n \"./src/utils/codecs.ts\");\n /* harmony import */\n\n\n var _level_helper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\n /*! ./level-helper */\n \"./src/controller/level-helper.ts\");\n /* harmony import */\n\n\n var _base_playlist_controller__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(\n /*! ./base-playlist-controller */\n \"./src/controller/base-playlist-controller.ts\");\n /* harmony import */\n\n\n var _types_loader__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(\n /*! ../types/loader */\n \"./src/types/loader.ts\");\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n }\n /*\n * Level Controller\n */\n\n\n var chromeOrFirefox = /chrome|firefox/.test(navigator.userAgent.toLowerCase());\n\n var LevelController = /*#__PURE__*/function (_BasePlaylistControll) {\n _inheritsLoose(LevelController, _BasePlaylistControll);\n\n function LevelController(hls) {\n var _this;\n\n _this = _BasePlaylistControll.call(this, hls, '[level-controller]') || this;\n _this._levels = [];\n _this._firstLevel = -1;\n _this._startLevel = void 0;\n _this.currentLevelIndex = -1;\n _this.manualLevelIndex = -1;\n _this.onParsedComplete = void 0;\n\n _this._registerListeners();\n\n return _this;\n }\n\n var _proto = LevelController.prototype;\n\n _proto._registerListeners = function _registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADED, this.onManifestLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_LOADED, this.onLevelLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_LOADED, this.onFragLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, this.onError, this);\n };\n\n _proto._unregisterListeners = function _unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADED, this.onManifestLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_LOADED, this.onLevelLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_LOADED, this.onFragLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, this.onError, this);\n };\n\n _proto.destroy = function destroy() {\n this._unregisterListeners();\n\n this.manualLevelIndex = -1;\n this._levels.length = 0;\n\n _BasePlaylistControll.prototype.destroy.call(this);\n };\n\n _proto.startLoad = function startLoad() {\n var levels = this._levels; // clean up live level details to force reload them, and reset load errors\n\n levels.forEach(function (level) {\n level.loadError = 0;\n });\n\n _BasePlaylistControll.prototype.startLoad.call(this);\n };\n\n _proto.onManifestLoaded = function onManifestLoaded(event, data) {\n var levels = [];\n var audioTracks = [];\n var subtitleTracks = [];\n var bitrateStart;\n var levelSet = {};\n var levelFromSet;\n var resolutionFound = false;\n var videoCodecFound = false;\n var audioCodecFound = false; // regroup redundant levels together\n\n data.levels.forEach(function (levelParsed) {\n var attributes = levelParsed.attrs;\n resolutionFound = resolutionFound || !!(levelParsed.width && levelParsed.height);\n videoCodecFound = videoCodecFound || !!levelParsed.videoCodec;\n audioCodecFound = audioCodecFound || !!levelParsed.audioCodec; // erase audio codec info if browser does not support mp4a.40.34.\n // demuxer will autodetect codec and fallback to mpeg/audio\n\n if (chromeOrFirefox && levelParsed.audioCodec && levelParsed.audioCodec.indexOf('mp4a.40.34') !== -1) {\n levelParsed.audioCodec = undefined;\n }\n\n var levelKey = levelParsed.bitrate + \"-\" + levelParsed.attrs.RESOLUTION + \"-\" + levelParsed.attrs.CODECS;\n levelFromSet = levelSet[levelKey];\n\n if (!levelFromSet) {\n levelFromSet = new _types_level__WEBPACK_IMPORTED_MODULE_0__[\"Level\"](levelParsed);\n levelSet[levelKey] = levelFromSet;\n levels.push(levelFromSet);\n } else {\n levelFromSet.url.push(levelParsed.url);\n }\n\n if (attributes) {\n if (attributes.AUDIO) {\n Object(_level_helper__WEBPACK_IMPORTED_MODULE_4__[\"addGroupId\"])(levelFromSet, 'audio', attributes.AUDIO);\n }\n\n if (attributes.SUBTITLES) {\n Object(_level_helper__WEBPACK_IMPORTED_MODULE_4__[\"addGroupId\"])(levelFromSet, 'text', attributes.SUBTITLES);\n }\n }\n }); // remove audio-only level if we also have levels with video codecs or RESOLUTION signalled\n\n if ((resolutionFound || videoCodecFound) && audioCodecFound) {\n levels = levels.filter(function (_ref) {\n var videoCodec = _ref.videoCodec,\n width = _ref.width,\n height = _ref.height;\n return !!videoCodec || !!(width && height);\n });\n } // only keep levels with supported audio/video codecs\n\n\n levels = levels.filter(function (_ref2) {\n var audioCodec = _ref2.audioCodec,\n videoCodec = _ref2.videoCodec;\n return (!audioCodec || Object(_utils_codecs__WEBPACK_IMPORTED_MODULE_3__[\"isCodecSupportedInMp4\"])(audioCodec, 'audio')) && (!videoCodec || Object(_utils_codecs__WEBPACK_IMPORTED_MODULE_3__[\"isCodecSupportedInMp4\"])(videoCodec, 'video'));\n });\n\n if (data.audioTracks) {\n audioTracks = data.audioTracks.filter(function (track) {\n return !track.audioCodec || Object(_utils_codecs__WEBPACK_IMPORTED_MODULE_3__[\"isCodecSupportedInMp4\"])(track.audioCodec, 'audio');\n }); // Assign ids after filtering as array indices by group-id\n\n Object(_level_helper__WEBPACK_IMPORTED_MODULE_4__[\"assignTrackIdsByGroup\"])(audioTracks);\n }\n\n if (data.subtitles) {\n subtitleTracks = data.subtitles;\n Object(_level_helper__WEBPACK_IMPORTED_MODULE_4__[\"assignTrackIdsByGroup\"])(subtitleTracks);\n }\n\n if (levels.length > 0) {\n // start bitrate is the first bitrate of the manifest\n bitrateStart = levels[0].bitrate; // sort level on bitrate\n\n levels.sort(function (a, b) {\n return a.bitrate - b.bitrate;\n });\n this._levels = levels; // find index of first level in sorted levels\n\n for (var i = 0; i < levels.length; i++) {\n if (levels[i].bitrate === bitrateStart) {\n this._firstLevel = i;\n this.log(\"manifest loaded, \" + levels.length + \" level(s) found, first bitrate: \" + bitrateStart);\n break;\n }\n } // Audio is only alternate if manifest include a URI along with the audio group tag,\n // and this is not an audio-only stream where levels contain audio-only\n\n\n var audioOnly = audioCodecFound && !videoCodecFound;\n var edata = {\n levels: levels,\n audioTracks: audioTracks,\n subtitleTracks: subtitleTracks,\n firstLevel: this._firstLevel,\n stats: data.stats,\n audio: audioCodecFound,\n video: videoCodecFound,\n altAudio: !audioOnly && audioTracks.some(function (t) {\n return !!t.url;\n })\n };\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_PARSED, edata); // Initiate loading after all controllers have received MANIFEST_PARSED\n\n if (this.hls.config.autoStartLoad || this.hls.forceStartLoad) {\n this.hls.startLoad(this.hls.config.startPosition);\n }\n } else {\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].MANIFEST_INCOMPATIBLE_CODECS_ERROR,\n fatal: true,\n url: data.url,\n reason: 'no level with compatible codecs found in manifest'\n });\n }\n };\n\n _proto.onError = function onError(event, data) {\n _BasePlaylistControll.prototype.onError.call(this, event, data);\n\n if (data.fatal) {\n return;\n } // Switch to redundant level when track fails to load\n\n\n var context = data.context;\n var level = this._levels[this.currentLevelIndex];\n\n if (context && (context.type === _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].AUDIO_TRACK && level.audioGroupIds && context.groupId === level.audioGroupIds[level.urlId] || context.type === _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].SUBTITLE_TRACK && level.textGroupIds && context.groupId === level.textGroupIds[level.urlId])) {\n this.redundantFailover(this.currentLevelIndex);\n return;\n }\n\n var levelError = false;\n var levelSwitch = true;\n var levelIndex; // try to recover not fatal errors\n\n switch (data.details) {\n case _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].FRAG_LOAD_ERROR:\n case _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].FRAG_LOAD_TIMEOUT:\n case _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].KEY_LOAD_ERROR:\n case _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].KEY_LOAD_TIMEOUT:\n if (data.frag) {\n var _level = this._levels[data.frag.level]; // Set levelIndex when we're out of fragment retries\n\n if (_level) {\n _level.fragmentError++;\n\n if (_level.fragmentError > this.hls.config.fragLoadingMaxRetry) {\n levelIndex = data.frag.level;\n }\n } else {\n levelIndex = data.frag.level;\n }\n }\n\n break;\n\n case _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].LEVEL_LOAD_ERROR:\n case _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].LEVEL_LOAD_TIMEOUT:\n // Do not perform level switch if an error occurred using delivery directives\n // Attempt to reload level without directives first\n if (context) {\n if (context.deliveryDirectives) {\n levelSwitch = false;\n }\n\n levelIndex = context.level;\n }\n\n levelError = true;\n break;\n\n case _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].REMUX_ALLOC_ERROR:\n levelIndex = data.level;\n levelError = true;\n break;\n }\n\n if (levelIndex !== undefined) {\n this.recoverLevel(data, levelIndex, levelError, levelSwitch);\n }\n }\n /**\n * Switch to a redundant stream if any available.\n * If redundant stream is not available, emergency switch down if ABR mode is enabled.\n */\n ;\n\n _proto.recoverLevel = function recoverLevel(errorEvent, levelIndex, levelError, levelSwitch) {\n var errorDetails = errorEvent.details;\n var level = this._levels[levelIndex];\n level.loadError++;\n\n if (levelError) {\n var retrying = this.retryLoadingOrFail(errorEvent);\n\n if (retrying) {\n // boolean used to inform stream controller not to switch back to IDLE on non fatal error\n errorEvent.levelRetry = true;\n } else {\n this.currentLevelIndex = -1;\n return;\n }\n }\n\n if (levelSwitch) {\n var redundantLevels = level.url.length; // Try redundant fail-over until level.loadError reaches redundantLevels\n\n if (redundantLevels > 1 && level.loadError < redundantLevels) {\n errorEvent.levelRetry = true;\n this.redundantFailover(levelIndex);\n } else if (this.manualLevelIndex === -1) {\n // Search for available level in auto level selection mode, cycling from highest to lowest bitrate\n var nextLevel = levelIndex === 0 ? this._levels.length - 1 : levelIndex - 1;\n\n if (this.currentLevelIndex !== nextLevel && this._levels[nextLevel].loadError === 0) {\n this.warn(errorDetails + \": switch to \" + nextLevel);\n errorEvent.levelRetry = true;\n this.hls.nextAutoLevel = nextLevel;\n }\n }\n }\n };\n\n _proto.redundantFailover = function redundantFailover(levelIndex) {\n var level = this._levels[levelIndex];\n var redundantLevels = level.url.length;\n\n if (redundantLevels > 1) {\n // Update the url id of all levels so that we stay on the same set of variants when level switching\n var newUrlId = (level.urlId + 1) % redundantLevels;\n this.warn(\"Switching to redundant URL-id \" + newUrlId);\n\n this._levels.forEach(function (level) {\n level.urlId = newUrlId;\n });\n\n this.level = levelIndex;\n }\n } // reset errors on the successful load of a fragment\n ;\n\n _proto.onFragLoaded = function onFragLoaded(event, _ref3) {\n var frag = _ref3.frag;\n\n if (frag !== undefined && frag.type === _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN) {\n var level = this._levels[frag.level];\n\n if (level !== undefined) {\n level.fragmentError = 0;\n level.loadError = 0;\n }\n }\n };\n\n _proto.onLevelLoaded = function onLevelLoaded(event, data) {\n var _data$deliveryDirecti2;\n\n var level = data.level,\n details = data.details;\n var curLevel = this._levels[level];\n\n if (!curLevel) {\n var _data$deliveryDirecti;\n\n this.warn(\"Invalid level index \" + level);\n\n if ((_data$deliveryDirecti = data.deliveryDirectives) !== null && _data$deliveryDirecti !== void 0 && _data$deliveryDirecti.skip) {\n details.deltaUpdateFailed = true;\n }\n\n return;\n } // only process level loaded events matching with expected level\n\n\n if (level === this.currentLevelIndex) {\n // reset level load error counter on successful level loaded only if there is no issues with fragments\n if (curLevel.fragmentError === 0) {\n curLevel.loadError = 0;\n this.retryCount = 0;\n }\n\n this.playlistLoaded(level, data, curLevel.details);\n } else if ((_data$deliveryDirecti2 = data.deliveryDirectives) !== null && _data$deliveryDirecti2 !== void 0 && _data$deliveryDirecti2.skip) {\n // received a delta playlist update that cannot be merged\n details.deltaUpdateFailed = true;\n }\n };\n\n _proto.onAudioTrackSwitched = function onAudioTrackSwitched(event, data) {\n var currentLevel = this.hls.levels[this.currentLevelIndex];\n\n if (!currentLevel) {\n return;\n }\n\n if (currentLevel.audioGroupIds) {\n var urlId = -1;\n var audioGroupId = this.hls.audioTracks[data.id].groupId;\n\n for (var i = 0; i < currentLevel.audioGroupIds.length; i++) {\n if (currentLevel.audioGroupIds[i] === audioGroupId) {\n urlId = i;\n break;\n }\n }\n\n if (urlId !== currentLevel.urlId) {\n currentLevel.urlId = urlId;\n this.startLoad();\n }\n }\n };\n\n _proto.loadPlaylist = function loadPlaylist(hlsUrlParameters) {\n var level = this.currentLevelIndex;\n var currentLevel = this._levels[level];\n\n if (this.canLoad && currentLevel && currentLevel.url.length > 0) {\n var id = currentLevel.urlId;\n var url = currentLevel.url[id];\n\n if (hlsUrlParameters) {\n try {\n url = hlsUrlParameters.addDirectives(url);\n } catch (error) {\n this.warn(\"Could not construct new URL with HLS Delivery Directives: \" + error);\n }\n }\n\n this.log(\"Attempt loading level index \" + level + (hlsUrlParameters ? ' at sn ' + hlsUrlParameters.msn + ' part ' + hlsUrlParameters.part : '') + \" with URL-id \" + id + \" \" + url); // console.log('Current audio track group ID:', this.hls.audioTracks[this.hls.audioTrack].groupId);\n // console.log('New video quality level audio group id:', levelObject.attrs.AUDIO, level);\n\n this.clearTimer();\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_LOADING, {\n url: url,\n level: level,\n id: id,\n deliveryDirectives: hlsUrlParameters || null\n });\n }\n };\n\n _proto.removeLevel = function removeLevel(levelIndex, urlId) {\n var filterLevelAndGroupByIdIndex = function filterLevelAndGroupByIdIndex(url, id) {\n return id !== urlId;\n };\n\n var levels = this._levels.filter(function (level, index) {\n if (index !== levelIndex) {\n return true;\n }\n\n if (level.url.length > 1 && urlId !== undefined) {\n level.url = level.url.filter(filterLevelAndGroupByIdIndex);\n\n if (level.audioGroupIds) {\n level.audioGroupIds = level.audioGroupIds.filter(filterLevelAndGroupByIdIndex);\n }\n\n if (level.textGroupIds) {\n level.textGroupIds = level.textGroupIds.filter(filterLevelAndGroupByIdIndex);\n }\n\n level.urlId = 0;\n return true;\n }\n\n return false;\n }).map(function (level, index) {\n var details = level.details;\n\n if (details !== null && details !== void 0 && details.fragments) {\n details.fragments.forEach(function (fragment) {\n fragment.level = index;\n });\n }\n\n return level;\n });\n\n this._levels = levels;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVELS_UPDATED, {\n levels: levels\n });\n };\n\n _createClass(LevelController, [{\n key: \"levels\",\n get: function get() {\n if (this._levels.length === 0) {\n return null;\n }\n\n return this._levels;\n }\n }, {\n key: \"level\",\n get: function get() {\n return this.currentLevelIndex;\n },\n set: function set(newLevel) {\n var _levels$newLevel;\n\n var levels = this._levels;\n\n if (levels.length === 0) {\n return;\n }\n\n if (this.currentLevelIndex === newLevel && (_levels$newLevel = levels[newLevel]) !== null && _levels$newLevel !== void 0 && _levels$newLevel.details) {\n return;\n } // check if level idx is valid\n\n\n if (newLevel < 0 || newLevel >= levels.length) {\n // invalid level id given, trigger error\n var fatal = newLevel < 0;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorTypes\"].OTHER_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].LEVEL_SWITCH_ERROR,\n level: newLevel,\n fatal: fatal,\n reason: 'invalid level idx'\n });\n\n if (fatal) {\n return;\n }\n\n newLevel = Math.min(newLevel, levels.length - 1);\n } // stopping live reloading timer if any\n\n\n this.clearTimer();\n var lastLevelIndex = this.currentLevelIndex;\n var lastLevel = levels[lastLevelIndex];\n var level = levels[newLevel];\n this.log(\"switching to level \" + newLevel + \" from \" + lastLevelIndex);\n this.currentLevelIndex = newLevel;\n\n var levelSwitchingData = _extends({}, level, {\n level: newLevel,\n maxBitrate: level.maxBitrate,\n uri: level.uri,\n urlId: level.urlId\n }); // @ts-ignore\n\n\n delete levelSwitchingData._urlId;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_SWITCHING, levelSwitchingData); // check if we need to load playlist for this level\n\n var levelDetails = level.details;\n\n if (!levelDetails || levelDetails.live) {\n // level not retrieved yet, or live playlist we need to (re)load it\n var hlsUrlParameters = this.switchParams(level.uri, lastLevel === null || lastLevel === void 0 ? void 0 : lastLevel.details);\n this.loadPlaylist(hlsUrlParameters);\n }\n }\n }, {\n key: \"manualLevel\",\n get: function get() {\n return this.manualLevelIndex;\n },\n set: function set(newLevel) {\n this.manualLevelIndex = newLevel;\n\n if (this._startLevel === undefined) {\n this._startLevel = newLevel;\n }\n\n if (newLevel !== -1) {\n this.level = newLevel;\n }\n }\n }, {\n key: \"firstLevel\",\n get: function get() {\n return this._firstLevel;\n },\n set: function set(newLevel) {\n this._firstLevel = newLevel;\n }\n }, {\n key: \"startLevel\",\n get: function get() {\n // hls.startLevel takes precedence over config.startLevel\n // if none of these values are defined, fallback on this._firstLevel (first quality level appearing in variant manifest)\n if (this._startLevel === undefined) {\n var configStartLevel = this.hls.config.startLevel;\n\n if (configStartLevel !== undefined) {\n return configStartLevel;\n } else {\n return this._firstLevel;\n }\n } else {\n return this._startLevel;\n }\n },\n set: function set(newLevel) {\n this._startLevel = newLevel;\n }\n }, {\n key: \"nextLoadLevel\",\n get: function get() {\n if (this.manualLevelIndex !== -1) {\n return this.manualLevelIndex;\n } else {\n return this.hls.nextAutoLevel;\n }\n },\n set: function set(nextLevel) {\n this.level = nextLevel;\n\n if (this.manualLevelIndex === -1) {\n this.hls.nextAutoLevel = nextLevel;\n }\n }\n }]);\n\n return LevelController;\n }(_base_playlist_controller__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\n /***/\n\n },\n\n /***/\n \"./src/controller/level-helper.ts\":\n /*!****************************************!*\\\n !*** ./src/controller/level-helper.ts ***!\n \\****************************************/\n\n /*! exports provided: addGroupId, assignTrackIdsByGroup, updatePTS, updateFragPTSDTS, mergeDetails, mapPartIntersection, mapFragmentIntersection, adjustSliding, addSliding, computeReloadInterval, getFragmentWithSN, getPartWith */\n\n /***/\n function srcControllerLevelHelperTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"addGroupId\", function () {\n return addGroupId;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"assignTrackIdsByGroup\", function () {\n return assignTrackIdsByGroup;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"updatePTS\", function () {\n return updatePTS;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"updateFragPTSDTS\", function () {\n return updateFragPTSDTS;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"mergeDetails\", function () {\n return mergeDetails;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"mapPartIntersection\", function () {\n return mapPartIntersection;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"mapFragmentIntersection\", function () {\n return mapFragmentIntersection;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"adjustSliding\", function () {\n return adjustSliding;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"addSliding\", function () {\n return addSliding;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"computeReloadInterval\", function () {\n return computeReloadInterval;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"getFragmentWithSN\", function () {\n return getFragmentWithSN;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"getPartWith\", function () {\n return getPartWith;\n });\n /* harmony import */\n\n\n var _home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./src/polyfills/number */\n \"./src/polyfills/number.ts\");\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ../utils/logger */\n \"./src/utils/logger.ts\");\n /**\n * @module LevelHelper\n * Providing methods dealing with playlist sliding and drift\n * */\n\n\n function addGroupId(level, type, id) {\n switch (type) {\n case 'audio':\n if (!level.audioGroupIds) {\n level.audioGroupIds = [];\n }\n\n level.audioGroupIds.push(id);\n break;\n\n case 'text':\n if (!level.textGroupIds) {\n level.textGroupIds = [];\n }\n\n level.textGroupIds.push(id);\n break;\n }\n }\n\n function assignTrackIdsByGroup(tracks) {\n var groups = {};\n tracks.forEach(function (track) {\n var groupId = track.groupId || '';\n track.id = groups[groupId] = groups[groupId] || 0;\n groups[groupId]++;\n });\n }\n\n function updatePTS(fragments, fromIdx, toIdx) {\n var fragFrom = fragments[fromIdx];\n var fragTo = fragments[toIdx];\n updateFromToPTS(fragFrom, fragTo);\n }\n\n function updateFromToPTS(fragFrom, fragTo) {\n var fragToPTS = fragTo.startPTS; // if we know startPTS[toIdx]\n\n if (Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(fragToPTS)) {\n // update fragment duration.\n // it helps to fix drifts between playlist reported duration and fragment real duration\n var duration = 0;\n var frag;\n\n if (fragTo.sn > fragFrom.sn) {\n duration = fragToPTS - fragFrom.start;\n frag = fragFrom;\n } else {\n duration = fragFrom.start - fragToPTS;\n frag = fragTo;\n } // TODO? Drift can go either way, or the playlist could be completely accurate\n // console.assert(duration > 0,\n // `duration of ${duration} computed for frag ${frag.sn}, level ${frag.level}, there should be some duration drift between playlist and fragment!`);\n\n\n if (frag.duration !== duration) {\n frag.duration = duration;\n } // we dont know startPTS[toIdx]\n\n } else if (fragTo.sn > fragFrom.sn) {\n var contiguous = fragFrom.cc === fragTo.cc; // TODO: With part-loading end/durations we need to confirm the whole fragment is loaded before using (or setting) minEndPTS\n\n if (contiguous && fragFrom.minEndPTS) {\n fragTo.start = fragFrom.start + (fragFrom.minEndPTS - fragFrom.start);\n } else {\n fragTo.start = fragFrom.start + fragFrom.duration;\n }\n } else {\n fragTo.start = Math.max(fragFrom.start - fragTo.duration, 0);\n }\n }\n\n function updateFragPTSDTS(details, frag, startPTS, endPTS, startDTS, endDTS) {\n var parsedMediaDuration = endPTS - startPTS;\n\n if (parsedMediaDuration <= 0) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_1__[\"logger\"].warn('Fragment should have a positive duration', frag);\n\n endPTS = startPTS + frag.duration;\n endDTS = startDTS + frag.duration;\n }\n\n var maxStartPTS = startPTS;\n var minEndPTS = endPTS;\n var fragStartPts = frag.startPTS;\n var fragEndPts = frag.endPTS;\n\n if (Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(fragStartPts)) {\n // delta PTS between audio and video\n var deltaPTS = Math.abs(fragStartPts - startPTS);\n\n if (!Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(frag.deltaPTS)) {\n frag.deltaPTS = deltaPTS;\n } else {\n frag.deltaPTS = Math.max(deltaPTS, frag.deltaPTS);\n }\n\n maxStartPTS = Math.max(startPTS, fragStartPts);\n startPTS = Math.min(startPTS, fragStartPts);\n startDTS = Math.min(startDTS, frag.startDTS);\n minEndPTS = Math.min(endPTS, fragEndPts);\n endPTS = Math.max(endPTS, fragEndPts);\n endDTS = Math.max(endDTS, frag.endDTS);\n }\n\n frag.duration = endPTS - startPTS;\n var drift = startPTS - frag.start;\n frag.appendedPTS = endPTS;\n frag.start = frag.startPTS = startPTS;\n frag.maxStartPTS = maxStartPTS;\n frag.startDTS = startDTS;\n frag.endPTS = endPTS;\n frag.minEndPTS = minEndPTS;\n frag.endDTS = endDTS;\n var sn = frag.sn; // 'initSegment'\n // exit if sn out of range\n\n if (!details || sn < details.startSN || sn > details.endSN) {\n return 0;\n }\n\n var i;\n var fragIdx = sn - details.startSN;\n var fragments = details.fragments; // update frag reference in fragments array\n // rationale is that fragments array might not contain this frag object.\n // this will happen if playlist has been refreshed between frag loading and call to updateFragPTSDTS()\n // if we don't update frag, we won't be able to propagate PTS info on the playlist\n // resulting in invalid sliding computation\n\n fragments[fragIdx] = frag; // adjust fragment PTS/duration from seqnum-1 to frag 0\n\n for (i = fragIdx; i > 0; i--) {\n updateFromToPTS(fragments[i], fragments[i - 1]);\n } // adjust fragment PTS/duration from seqnum to last frag\n\n\n for (i = fragIdx; i < fragments.length - 1; i++) {\n updateFromToPTS(fragments[i], fragments[i + 1]);\n }\n\n if (details.fragmentHint) {\n updateFromToPTS(fragments[fragments.length - 1], details.fragmentHint);\n }\n\n details.PTSKnown = details.alignedSliding = true;\n return drift;\n }\n\n function mergeDetails(oldDetails, newDetails) {\n // Track the last initSegment processed. Initialize it to the last one on the timeline.\n var currentInitSegment = null;\n var oldFragments = oldDetails.fragments;\n\n for (var i = oldFragments.length - 1; i >= 0; i--) {\n var oldInit = oldFragments[i].initSegment;\n\n if (oldInit) {\n currentInitSegment = oldInit;\n break;\n }\n }\n\n if (oldDetails.fragmentHint) {\n // prevent PTS and duration from being adjusted on the next hint\n delete oldDetails.fragmentHint.endPTS;\n } // check if old/new playlists have fragments in common\n // loop through overlapping SN and update startPTS , cc, and duration if any found\n\n\n var ccOffset = 0;\n var PTSFrag;\n mapFragmentIntersection(oldDetails, newDetails, function (oldFrag, newFrag) {\n if (oldFrag.relurl) {\n // Do not compare CC if the old fragment has no url. This is a level.fragmentHint used by LL-HLS parts.\n // It maybe be off by 1 if it was created before any parts or discontinuity tags were appended to the end\n // of the playlist.\n ccOffset = oldFrag.cc - newFrag.cc;\n }\n\n if (Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(oldFrag.startPTS) && Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(oldFrag.endPTS)) {\n newFrag.start = newFrag.startPTS = oldFrag.startPTS;\n newFrag.startDTS = oldFrag.startDTS;\n newFrag.appendedPTS = oldFrag.appendedPTS;\n newFrag.maxStartPTS = oldFrag.maxStartPTS;\n newFrag.endPTS = oldFrag.endPTS;\n newFrag.endDTS = oldFrag.endDTS;\n newFrag.minEndPTS = oldFrag.minEndPTS;\n newFrag.duration = oldFrag.endPTS - oldFrag.startPTS;\n\n if (newFrag.duration) {\n PTSFrag = newFrag;\n } // PTS is known when any segment has startPTS and endPTS\n\n\n newDetails.PTSKnown = newDetails.alignedSliding = true;\n }\n\n newFrag.elementaryStreams = oldFrag.elementaryStreams;\n newFrag.loader = oldFrag.loader;\n newFrag.stats = oldFrag.stats;\n newFrag.urlId = oldFrag.urlId;\n\n if (oldFrag.initSegment) {\n newFrag.initSegment = oldFrag.initSegment;\n currentInitSegment = oldFrag.initSegment;\n }\n });\n\n if (currentInitSegment) {\n var fragmentsToCheck = newDetails.fragmentHint ? newDetails.fragments.concat(newDetails.fragmentHint) : newDetails.fragments;\n fragmentsToCheck.forEach(function (frag) {\n var _currentInitSegment;\n\n if (!frag.initSegment || frag.initSegment.relurl === ((_currentInitSegment = currentInitSegment) === null || _currentInitSegment === void 0 ? void 0 : _currentInitSegment.relurl)) {\n frag.initSegment = currentInitSegment;\n }\n });\n }\n\n if (newDetails.skippedSegments) {\n newDetails.deltaUpdateFailed = newDetails.fragments.some(function (frag) {\n return !frag;\n });\n\n if (newDetails.deltaUpdateFailed) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_1__[\"logger\"].warn('[level-helper] Previous playlist missing segments skipped in delta playlist');\n\n for (var _i = newDetails.skippedSegments; _i--;) {\n newDetails.fragments.shift();\n }\n\n newDetails.startSN = newDetails.fragments[0].sn;\n newDetails.startCC = newDetails.fragments[0].cc;\n }\n }\n\n var newFragments = newDetails.fragments;\n\n if (ccOffset) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_1__[\"logger\"].warn('discontinuity sliding from playlist, take drift into account');\n\n for (var _i2 = 0; _i2 < newFragments.length; _i2++) {\n newFragments[_i2].cc += ccOffset;\n }\n }\n\n if (newDetails.skippedSegments) {\n newDetails.startCC = newDetails.fragments[0].cc;\n } // Merge parts\n\n\n mapPartIntersection(oldDetails.partList, newDetails.partList, function (oldPart, newPart) {\n newPart.elementaryStreams = oldPart.elementaryStreams;\n newPart.stats = oldPart.stats;\n }); // if at least one fragment contains PTS info, recompute PTS information for all fragments\n\n if (PTSFrag) {\n updateFragPTSDTS(newDetails, PTSFrag, PTSFrag.startPTS, PTSFrag.endPTS, PTSFrag.startDTS, PTSFrag.endDTS);\n } else {\n // ensure that delta is within oldFragments range\n // also adjust sliding in case delta is 0 (we could have old=[50-60] and new=old=[50-61])\n // in that case we also need to adjust start offset of all fragments\n adjustSliding(oldDetails, newDetails);\n }\n\n if (newFragments.length) {\n newDetails.totalduration = newDetails.edge - newFragments[0].start;\n }\n\n newDetails.driftStartTime = oldDetails.driftStartTime;\n newDetails.driftStart = oldDetails.driftStart;\n var advancedDateTime = newDetails.advancedDateTime;\n\n if (newDetails.advanced && advancedDateTime) {\n var edge = newDetails.edge;\n\n if (!newDetails.driftStart) {\n newDetails.driftStartTime = advancedDateTime;\n newDetails.driftStart = edge;\n }\n\n newDetails.driftEndTime = advancedDateTime;\n newDetails.driftEnd = edge;\n } else {\n newDetails.driftEndTime = oldDetails.driftEndTime;\n newDetails.driftEnd = oldDetails.driftEnd;\n newDetails.advancedDateTime = oldDetails.advancedDateTime;\n }\n }\n\n function mapPartIntersection(oldParts, newParts, intersectionFn) {\n if (oldParts && newParts) {\n var delta = 0;\n\n for (var i = 0, len = oldParts.length; i <= len; i++) {\n var _oldPart = oldParts[i];\n var _newPart = newParts[i + delta];\n\n if (_oldPart && _newPart && _oldPart.index === _newPart.index && _oldPart.fragment.sn === _newPart.fragment.sn) {\n intersectionFn(_oldPart, _newPart);\n } else {\n delta--;\n }\n }\n }\n }\n\n function mapFragmentIntersection(oldDetails, newDetails, intersectionFn) {\n var skippedSegments = newDetails.skippedSegments;\n var start = Math.max(oldDetails.startSN, newDetails.startSN) - newDetails.startSN;\n var end = (oldDetails.fragmentHint ? 1 : 0) + (skippedSegments ? newDetails.endSN : Math.min(oldDetails.endSN, newDetails.endSN)) - newDetails.startSN;\n var delta = newDetails.startSN - oldDetails.startSN;\n var newFrags = newDetails.fragmentHint ? newDetails.fragments.concat(newDetails.fragmentHint) : newDetails.fragments;\n var oldFrags = oldDetails.fragmentHint ? oldDetails.fragments.concat(oldDetails.fragmentHint) : oldDetails.fragments;\n\n for (var i = start; i <= end; i++) {\n var _oldFrag = oldFrags[delta + i];\n var _newFrag = newFrags[i];\n\n if (skippedSegments && !_newFrag && i < skippedSegments) {\n // Fill in skipped segments in delta playlist\n _newFrag = newDetails.fragments[i] = _oldFrag;\n }\n\n if (_oldFrag && _newFrag) {\n intersectionFn(_oldFrag, _newFrag);\n }\n }\n }\n\n function adjustSliding(oldDetails, newDetails) {\n var delta = newDetails.startSN + newDetails.skippedSegments - oldDetails.startSN;\n var oldFragments = oldDetails.fragments;\n\n if (delta < 0 || delta >= oldFragments.length) {\n return;\n }\n\n addSliding(newDetails, oldFragments[delta].start);\n }\n\n function addSliding(details, start) {\n if (start) {\n var fragments = details.fragments;\n\n for (var i = details.skippedSegments; i < fragments.length; i++) {\n fragments[i].start += start;\n }\n\n if (details.fragmentHint) {\n details.fragmentHint.start += start;\n }\n }\n }\n\n function computeReloadInterval(newDetails, stats) {\n var reloadInterval = 1000 * newDetails.levelTargetDuration;\n var reloadIntervalAfterMiss = reloadInterval / 2;\n var timeSinceLastModified = newDetails.age;\n var useLastModified = timeSinceLastModified > 0 && timeSinceLastModified < reloadInterval * 3;\n var roundTrip = stats.loading.end - stats.loading.start;\n var estimatedTimeUntilUpdate;\n var availabilityDelay = newDetails.availabilityDelay; // let estimate = 'average';\n\n if (newDetails.updated === false) {\n if (useLastModified) {\n // estimate = 'miss round trip';\n // We should have had a hit so try again in the time it takes to get a response,\n // but no less than 1/3 second.\n var minRetry = 333 * newDetails.misses;\n estimatedTimeUntilUpdate = Math.max(Math.min(reloadIntervalAfterMiss, roundTrip * 2), minRetry);\n newDetails.availabilityDelay = (newDetails.availabilityDelay || 0) + estimatedTimeUntilUpdate;\n } else {\n // estimate = 'miss half average';\n // follow HLS Spec, If the client reloads a Playlist file and finds that it has not\n // changed then it MUST wait for a period of one-half the target\n // duration before retrying.\n estimatedTimeUntilUpdate = reloadIntervalAfterMiss;\n }\n } else if (useLastModified) {\n // estimate = 'next modified date';\n // Get the closest we've been to timeSinceLastModified on update\n availabilityDelay = Math.min(availabilityDelay || reloadInterval / 2, timeSinceLastModified);\n newDetails.availabilityDelay = availabilityDelay;\n estimatedTimeUntilUpdate = availabilityDelay + reloadInterval - timeSinceLastModified;\n } else {\n estimatedTimeUntilUpdate = reloadInterval - roundTrip;\n } // console.log(`[computeReloadInterval] live reload ${newDetails.updated ? 'REFRESHED' : 'MISSED'}`,\n // '\\n method', estimate,\n // '\\n estimated time until update =>', estimatedTimeUntilUpdate,\n // '\\n average target duration', reloadInterval,\n // '\\n time since modified', timeSinceLastModified,\n // '\\n time round trip', roundTrip,\n // '\\n availability delay', availabilityDelay);\n\n\n return Math.round(estimatedTimeUntilUpdate);\n }\n\n function getFragmentWithSN(level, sn, fragCurrent) {\n if (!level || !level.details) {\n return null;\n }\n\n var levelDetails = level.details;\n var fragment = levelDetails.fragments[sn - levelDetails.startSN];\n\n if (fragment) {\n return fragment;\n }\n\n fragment = levelDetails.fragmentHint;\n\n if (fragment && fragment.sn === sn) {\n return fragment;\n }\n\n if (sn < levelDetails.startSN && fragCurrent && fragCurrent.sn === sn) {\n return fragCurrent;\n }\n\n return null;\n }\n\n function getPartWith(level, sn, partIndex) {\n if (!level || !level.details) {\n return null;\n }\n\n var partList = level.details.partList;\n\n if (partList) {\n for (var i = partList.length; i--;) {\n var part = partList[i];\n\n if (part.index === partIndex && part.fragment.sn === sn) {\n return part;\n }\n }\n }\n\n return null;\n }\n /***/\n\n },\n\n /***/\n \"./src/controller/stream-controller.ts\":\n /*!*********************************************!*\\\n !*** ./src/controller/stream-controller.ts ***!\n \\*********************************************/\n\n /*! exports provided: default */\n\n /***/\n function srcControllerStreamControllerTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"default\", function () {\n return StreamController;\n });\n /* harmony import */\n\n\n var _home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./src/polyfills/number */\n \"./src/polyfills/number.ts\");\n /* harmony import */\n\n\n var _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ./base-stream-controller */\n \"./src/controller/base-stream-controller.ts\");\n /* harmony import */\n\n\n var _is_supported__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ../is-supported */\n \"./src/is-supported.ts\");\n /* harmony import */\n\n\n var _events__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\n /*! ../events */\n \"./src/events.ts\");\n /* harmony import */\n\n\n var _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\n /*! ../utils/buffer-helper */\n \"./src/utils/buffer-helper.ts\");\n /* harmony import */\n\n\n var _fragment_tracker__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(\n /*! ./fragment-tracker */\n \"./src/controller/fragment-tracker.ts\");\n /* harmony import */\n\n\n var _types_loader__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(\n /*! ../types/loader */\n \"./src/types/loader.ts\");\n /* harmony import */\n\n\n var _loader_fragment__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(\n /*! ../loader/fragment */\n \"./src/loader/fragment.ts\");\n /* harmony import */\n\n\n var _demux_transmuxer_interface__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(\n /*! ../demux/transmuxer-interface */\n \"./src/demux/transmuxer-interface.ts\");\n /* harmony import */\n\n\n var _types_transmuxer__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(\n /*! ../types/transmuxer */\n \"./src/types/transmuxer.ts\");\n /* harmony import */\n\n\n var _gap_controller__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(\n /*! ./gap-controller */\n \"./src/controller/gap-controller.ts\");\n /* harmony import */\n\n\n var _errors__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(\n /*! ../errors */\n \"./src/errors.ts\");\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(\n /*! ../utils/logger */\n \"./src/utils/logger.ts\");\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n }\n\n var TICK_INTERVAL = 100; // how often to tick in ms\n\n var StreamController = /*#__PURE__*/function (_BaseStreamController) {\n _inheritsLoose(StreamController, _BaseStreamController);\n\n function StreamController(hls, fragmentTracker) {\n var _this;\n\n _this = _BaseStreamController.call(this, hls, fragmentTracker, '[stream-controller]') || this;\n _this.audioCodecSwap = false;\n _this.gapController = null;\n _this.level = -1;\n _this._forceStartLoad = false;\n _this.altAudio = false;\n _this.audioOnly = false;\n _this.fragPlaying = null;\n _this.onvplaying = null;\n _this.onvseeked = null;\n _this.fragLastKbps = 0;\n _this.stalled = false;\n _this.couldBacktrack = false;\n _this.audioCodecSwitch = false;\n _this.videoBuffer = null;\n\n _this._registerListeners();\n\n return _this;\n }\n\n var _proto = StreamController.prototype;\n\n _proto._registerListeners = function _registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].LEVEL_LOADING, this.onLevelLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].LEVEL_LOADED, this.onLevelLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].FRAG_LOAD_EMERGENCY_ABORTED, this.onFragLoadEmergencyAborted, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].ERROR, this.onError, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].BUFFER_CREATED, this.onBufferCreated, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].BUFFER_FLUSHED, this.onBufferFlushed, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].LEVELS_UPDATED, this.onLevelsUpdated, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].FRAG_BUFFERED, this.onFragBuffered, this);\n };\n\n _proto._unregisterListeners = function _unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].LEVEL_LOADED, this.onLevelLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].FRAG_LOAD_EMERGENCY_ABORTED, this.onFragLoadEmergencyAborted, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].ERROR, this.onError, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].BUFFER_CREATED, this.onBufferCreated, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].BUFFER_FLUSHED, this.onBufferFlushed, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].LEVELS_UPDATED, this.onLevelsUpdated, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].FRAG_BUFFERED, this.onFragBuffered, this);\n };\n\n _proto.onHandlerDestroying = function onHandlerDestroying() {\n this._unregisterListeners();\n\n this.onMediaDetaching();\n };\n\n _proto.startLoad = function startLoad(startPosition) {\n if (this.levels) {\n var lastCurrentTime = this.lastCurrentTime,\n hls = this.hls;\n this.stopLoad();\n this.setInterval(TICK_INTERVAL);\n this.level = -1;\n this.fragLoadError = 0;\n\n if (!this.startFragRequested) {\n // determine load level\n var startLevel = hls.startLevel;\n\n if (startLevel === -1) {\n if (hls.config.testBandwidth) {\n // -1 : guess start Level by doing a bitrate test by loading first fragment of lowest quality level\n startLevel = 0;\n this.bitrateTest = true;\n } else {\n startLevel = hls.nextAutoLevel;\n }\n } // set new level to playlist loader : this will trigger start level load\n // hls.nextLoadLevel remains until it is set to a new value or until a new frag is successfully loaded\n\n\n this.level = hls.nextLoadLevel = startLevel;\n this.loadedmetadata = false;\n } // if startPosition undefined but lastCurrentTime set, set startPosition to last currentTime\n\n\n if (lastCurrentTime > 0 && startPosition === -1) {\n this.log(\"Override startPosition with lastCurrentTime @\" + lastCurrentTime.toFixed(3));\n startPosition = lastCurrentTime;\n }\n\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n this.nextLoadPosition = this.startPosition = this.lastCurrentTime = startPosition;\n this.tick();\n } else {\n this._forceStartLoad = true;\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].STOPPED;\n }\n };\n\n _proto.stopLoad = function stopLoad() {\n this._forceStartLoad = false;\n\n _BaseStreamController.prototype.stopLoad.call(this);\n };\n\n _proto.doTick = function doTick() {\n switch (this.state) {\n case _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE:\n this.doTickIdle();\n break;\n\n case _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_LEVEL:\n {\n var _levels$level;\n\n var levels = this.levels,\n level = this.level;\n var details = levels === null || levels === void 0 ? void 0 : (_levels$level = levels[level]) === null || _levels$level === void 0 ? void 0 : _levels$level.details;\n\n if (details && (!details.live || this.levelLastLoaded === this.level)) {\n if (this.waitForCdnTuneIn(details)) {\n break;\n }\n\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n break;\n }\n\n break;\n }\n\n case _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].FRAG_LOADING_WAITING_RETRY:\n {\n var _this$media;\n\n var now = self.performance.now();\n var retryDate = this.retryDate; // if current time is gt than retryDate, or if media seeking let's switch to IDLE state to retry loading\n\n if (!retryDate || now >= retryDate || (_this$media = this.media) !== null && _this$media !== void 0 && _this$media.seeking) {\n this.log('retryDate reached, switch back to IDLE state');\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n }\n }\n break;\n\n default:\n break;\n } // check buffer\n // check/update current fragment\n\n\n this.onTickEnd();\n };\n\n _proto.onTickEnd = function onTickEnd() {\n _BaseStreamController.prototype.onTickEnd.call(this);\n\n this.checkBuffer();\n this.checkFragmentChanged();\n };\n\n _proto.doTickIdle = function doTickIdle() {\n var _frag$decryptdata, _frag$decryptdata2;\n\n var hls = this.hls,\n levelLastLoaded = this.levelLastLoaded,\n levels = this.levels,\n media = this.media;\n var config = hls.config,\n level = hls.nextLoadLevel; // if start level not parsed yet OR\n // if video not attached AND start fragment already requested OR start frag prefetch not enabled\n // exit loop, as we either need more info (level not parsed) or we need media to be attached to load new fragment\n\n if (levelLastLoaded === null || !media && (this.startFragRequested || !config.startFragPrefetch)) {\n return;\n } // If the \"main\" level is audio-only but we are loading an alternate track in the same group, do not load anything\n\n\n if (this.altAudio && this.audioOnly) {\n return;\n }\n\n if (!levels || !levels[level]) {\n return;\n }\n\n var levelInfo = levels[level]; // if buffer length is less than maxBufLen try to load a new fragment\n // set next load level : this will trigger a playlist load if needed\n\n this.level = hls.nextLoadLevel = level;\n var levelDetails = levelInfo.details; // if level info not retrieved yet, switch state and wait for level retrieval\n // if live playlist, ensure that new playlist has been refreshed to avoid loading/try to load\n // a useless and outdated fragment (that might even introduce load error if it is already out of the live playlist)\n\n if (!levelDetails || this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_LEVEL || levelDetails.live && this.levelLastLoaded !== level) {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_LEVEL;\n return;\n }\n\n var bufferInfo = this.getFwdBufferInfo(this.mediaBuffer ? this.mediaBuffer : media, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN);\n\n if (bufferInfo === null) {\n return;\n }\n\n var bufferLen = bufferInfo.len; // compute max Buffer Length that we could get from this load level, based on level bitrate. don't buffer more than 60 MB and more than 30s\n\n var maxBufLen = this.getMaxBufferLength(levelInfo.maxBitrate); // Stay idle if we are still with buffer margins\n\n if (bufferLen >= maxBufLen) {\n return;\n }\n\n if (this._streamEnded(bufferInfo, levelDetails)) {\n var data = {};\n\n if (this.altAudio) {\n data.type = 'video';\n }\n\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].BUFFER_EOS, data);\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].ENDED;\n return;\n }\n\n var targetBufferTime = bufferInfo.end;\n var frag = this.getNextFragment(targetBufferTime, levelDetails); // Avoid backtracking after seeking or switching by loading an earlier segment in streams that could backtrack\n\n if (this.couldBacktrack && !this.fragPrevious && frag && frag.sn !== 'initSegment') {\n var fragIdx = frag.sn - levelDetails.startSN;\n\n if (fragIdx > 1) {\n frag = levelDetails.fragments[fragIdx - 1];\n this.fragmentTracker.removeFragment(frag);\n }\n } // Avoid loop loading by using nextLoadPosition set for backtracking\n\n\n if (frag && this.fragmentTracker.getState(frag) === _fragment_tracker__WEBPACK_IMPORTED_MODULE_5__[\"FragmentState\"].OK && this.nextLoadPosition > targetBufferTime) {\n // Cleanup the fragment tracker before trying to find the next unbuffered fragment\n var type = this.audioOnly && !this.altAudio ? _loader_fragment__WEBPACK_IMPORTED_MODULE_7__[\"ElementaryStreamTypes\"].AUDIO : _loader_fragment__WEBPACK_IMPORTED_MODULE_7__[\"ElementaryStreamTypes\"].VIDEO;\n this.afterBufferFlushed(media, type, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN);\n frag = this.getNextFragment(this.nextLoadPosition, levelDetails);\n }\n\n if (!frag) {\n return;\n }\n\n if (frag.initSegment && !frag.initSegment.data && !this.bitrateTest) {\n frag = frag.initSegment;\n } // We want to load the key if we're dealing with an identity key, because we will decrypt\n // this content using the key we fetch. Other keys will be handled by the DRM CDM via EME.\n\n\n if (((_frag$decryptdata = frag.decryptdata) === null || _frag$decryptdata === void 0 ? void 0 : _frag$decryptdata.keyFormat) === 'identity' && !((_frag$decryptdata2 = frag.decryptdata) !== null && _frag$decryptdata2 !== void 0 && _frag$decryptdata2.key)) {\n this.loadKey(frag, levelDetails);\n } else {\n this.loadFragment(frag, levelDetails, targetBufferTime);\n }\n };\n\n _proto.loadFragment = function loadFragment(frag, levelDetails, targetBufferTime) {\n var _this$media2; // Check if fragment is not loaded\n\n\n var fragState = this.fragmentTracker.getState(frag);\n this.fragCurrent = frag; // Use data from loaded backtracked fragment if available\n\n if (fragState === _fragment_tracker__WEBPACK_IMPORTED_MODULE_5__[\"FragmentState\"].BACKTRACKED) {\n var data = this.fragmentTracker.getBacktrackData(frag);\n\n if (data) {\n this._handleFragmentLoadProgress(data);\n\n this._handleFragmentLoadComplete(data);\n\n return;\n } else {\n fragState = _fragment_tracker__WEBPACK_IMPORTED_MODULE_5__[\"FragmentState\"].NOT_LOADED;\n }\n }\n\n if (fragState === _fragment_tracker__WEBPACK_IMPORTED_MODULE_5__[\"FragmentState\"].NOT_LOADED || fragState === _fragment_tracker__WEBPACK_IMPORTED_MODULE_5__[\"FragmentState\"].PARTIAL) {\n if (frag.sn === 'initSegment') {\n this._loadInitSegment(frag);\n } else if (this.bitrateTest) {\n frag.bitrateTest = true;\n this.log(\"Fragment \" + frag.sn + \" of level \" + frag.level + \" is being downloaded to test bitrate and will not be buffered\");\n\n this._loadBitrateTestFrag(frag);\n } else {\n this.startFragRequested = true;\n\n _BaseStreamController.prototype.loadFragment.call(this, frag, levelDetails, targetBufferTime);\n }\n } else if (fragState === _fragment_tracker__WEBPACK_IMPORTED_MODULE_5__[\"FragmentState\"].APPENDING) {\n // Lower the buffer size and try again\n if (this.reduceMaxBufferLength(frag.duration)) {\n this.fragmentTracker.removeFragment(frag);\n }\n } else if (((_this$media2 = this.media) === null || _this$media2 === void 0 ? void 0 : _this$media2.buffered.length) === 0) {\n // Stop gap for bad tracker / buffer flush behavior\n this.fragmentTracker.removeAllFragments();\n }\n };\n\n _proto.getAppendedFrag = function getAppendedFrag(position) {\n var fragOrPart = this.fragmentTracker.getAppendedFrag(position, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN);\n\n if (fragOrPart && 'fragment' in fragOrPart) {\n return fragOrPart.fragment;\n }\n\n return fragOrPart;\n };\n\n _proto.getBufferedFrag = function getBufferedFrag(position) {\n return this.fragmentTracker.getBufferedFrag(position, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN);\n };\n\n _proto.followingBufferedFrag = function followingBufferedFrag(frag) {\n if (frag) {\n // try to get range of next fragment (500ms after this range)\n return this.getBufferedFrag(frag.end + 0.5);\n }\n\n return null;\n }\n /*\n on immediate level switch :\n - pause playback if playing\n - cancel any pending load request\n - and trigger a buffer flush\n */\n ;\n\n _proto.immediateLevelSwitch = function immediateLevelSwitch() {\n this.abortCurrentFrag();\n this.flushMainBuffer(0, Number.POSITIVE_INFINITY);\n }\n /**\n * try to switch ASAP without breaking video playback:\n * in order to ensure smooth but quick level switching,\n * we need to find the next flushable buffer range\n * we should take into account new segment fetch time\n */\n ;\n\n _proto.nextLevelSwitch = function nextLevelSwitch() {\n var levels = this.levels,\n media = this.media; // ensure that media is defined and that metadata are available (to retrieve currentTime)\n\n if (media !== null && media !== void 0 && media.readyState) {\n var fetchdelay;\n var fragPlayingCurrent = this.getAppendedFrag(media.currentTime);\n\n if (fragPlayingCurrent && fragPlayingCurrent.start > 1) {\n // flush buffer preceding current fragment (flush until current fragment start offset)\n // minus 1s to avoid video freezing, that could happen if we flush keyframe of current video ...\n this.flushMainBuffer(0, fragPlayingCurrent.start - 1);\n }\n\n if (!media.paused && levels) {\n // add a safety delay of 1s\n var nextLevelId = this.hls.nextLoadLevel;\n var nextLevel = levels[nextLevelId];\n var fragLastKbps = this.fragLastKbps;\n\n if (fragLastKbps && this.fragCurrent) {\n fetchdelay = this.fragCurrent.duration * nextLevel.maxBitrate / (1000 * fragLastKbps) + 1;\n } else {\n fetchdelay = 0;\n }\n } else {\n fetchdelay = 0;\n } // this.log('fetchdelay:'+fetchdelay);\n // find buffer range that will be reached once new fragment will be fetched\n\n\n var bufferedFrag = this.getBufferedFrag(media.currentTime + fetchdelay);\n\n if (bufferedFrag) {\n // we can flush buffer range following this one without stalling playback\n var nextBufferedFrag = this.followingBufferedFrag(bufferedFrag);\n\n if (nextBufferedFrag) {\n // if we are here, we can also cancel any loading/demuxing in progress, as they are useless\n this.abortCurrentFrag(); // start flush position is in next buffered frag. Leave some padding for non-independent segments and smoother playback.\n\n var maxStart = nextBufferedFrag.maxStartPTS ? nextBufferedFrag.maxStartPTS : nextBufferedFrag.start;\n var fragDuration = nextBufferedFrag.duration;\n var startPts = Math.max(bufferedFrag.end, maxStart + Math.min(Math.max(fragDuration - this.config.maxFragLookUpTolerance, fragDuration * 0.5), fragDuration * 0.75));\n this.flushMainBuffer(startPts, Number.POSITIVE_INFINITY);\n }\n }\n }\n };\n\n _proto.abortCurrentFrag = function abortCurrentFrag() {\n var fragCurrent = this.fragCurrent;\n this.fragCurrent = null;\n\n if (fragCurrent !== null && fragCurrent !== void 0 && fragCurrent.loader) {\n fragCurrent.loader.abort();\n }\n\n if (this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].KEY_LOADING) {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n }\n\n this.nextLoadPosition = this.getLoadPosition();\n };\n\n _proto.flushMainBuffer = function flushMainBuffer(startOffset, endOffset) {\n _BaseStreamController.prototype.flushMainBuffer.call(this, startOffset, endOffset, this.altAudio ? 'video' : null);\n };\n\n _proto.onMediaAttached = function onMediaAttached(event, data) {\n _BaseStreamController.prototype.onMediaAttached.call(this, event, data);\n\n var media = data.media;\n this.onvplaying = this.onMediaPlaying.bind(this);\n this.onvseeked = this.onMediaSeeked.bind(this);\n media.addEventListener('playing', this.onvplaying);\n media.addEventListener('seeked', this.onvseeked);\n this.gapController = new _gap_controller__WEBPACK_IMPORTED_MODULE_10__[\"default\"](this.config, media, this.fragmentTracker, this.hls);\n };\n\n _proto.onMediaDetaching = function onMediaDetaching() {\n var media = this.media;\n\n if (media) {\n media.removeEventListener('playing', this.onvplaying);\n media.removeEventListener('seeked', this.onvseeked);\n this.onvplaying = this.onvseeked = null;\n this.videoBuffer = null;\n }\n\n this.fragPlaying = null;\n\n if (this.gapController) {\n this.gapController.destroy();\n this.gapController = null;\n }\n\n _BaseStreamController.prototype.onMediaDetaching.call(this);\n };\n\n _proto.onMediaPlaying = function onMediaPlaying() {\n // tick to speed up FRAG_CHANGED triggering\n this.tick();\n };\n\n _proto.onMediaSeeked = function onMediaSeeked() {\n var media = this.media;\n var currentTime = media ? media.currentTime : null;\n\n if (Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(currentTime)) {\n this.log(\"Media seeked to \" + currentTime.toFixed(3));\n } // tick to speed up FRAG_CHANGED triggering\n\n\n this.tick();\n };\n\n _proto.onManifestLoading = function onManifestLoading() {\n // reset buffer on manifest loading\n this.log('Trigger BUFFER_RESET');\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].BUFFER_RESET, undefined);\n this.fragmentTracker.removeAllFragments();\n this.couldBacktrack = this.stalled = false;\n this.startPosition = this.lastCurrentTime = 0;\n this.fragPlaying = null;\n };\n\n _proto.onManifestParsed = function onManifestParsed(event, data) {\n var aac = false;\n var heaac = false;\n var codec;\n data.levels.forEach(function (level) {\n // detect if we have different kind of audio codecs used amongst playlists\n codec = level.audioCodec;\n\n if (codec) {\n if (codec.indexOf('mp4a.40.2') !== -1) {\n aac = true;\n }\n\n if (codec.indexOf('mp4a.40.5') !== -1) {\n heaac = true;\n }\n }\n });\n this.audioCodecSwitch = aac && heaac && !Object(_is_supported__WEBPACK_IMPORTED_MODULE_2__[\"changeTypeSupported\"])();\n\n if (this.audioCodecSwitch) {\n this.log('Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC');\n }\n\n this.levels = data.levels;\n this.startFragRequested = false;\n };\n\n _proto.onLevelLoading = function onLevelLoading(event, data) {\n var levels = this.levels;\n\n if (!levels || this.state !== _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE) {\n return;\n }\n\n var level = levels[data.level];\n\n if (!level.details || level.details.live && this.levelLastLoaded !== data.level || this.waitForCdnTuneIn(level.details)) {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_LEVEL;\n }\n };\n\n _proto.onLevelLoaded = function onLevelLoaded(event, data) {\n var _curLevel$details;\n\n var levels = this.levels;\n var newLevelId = data.level;\n var newDetails = data.details;\n var duration = newDetails.totalduration;\n\n if (!levels) {\n this.warn(\"Levels were reset while loading level \" + newLevelId);\n return;\n }\n\n this.log(\"Level \" + newLevelId + \" loaded [\" + newDetails.startSN + \",\" + newDetails.endSN + \"], cc [\" + newDetails.startCC + \", \" + newDetails.endCC + \"] duration:\" + duration);\n var fragCurrent = this.fragCurrent;\n\n if (fragCurrent && (this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].FRAG_LOADING || this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].FRAG_LOADING_WAITING_RETRY)) {\n if (fragCurrent.level !== data.level && fragCurrent.loader) {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n fragCurrent.loader.abort();\n }\n }\n\n var curLevel = levels[newLevelId];\n var sliding = 0;\n\n if (newDetails.live || (_curLevel$details = curLevel.details) !== null && _curLevel$details !== void 0 && _curLevel$details.live) {\n if (!newDetails.fragments[0]) {\n newDetails.deltaUpdateFailed = true;\n }\n\n if (newDetails.deltaUpdateFailed) {\n return;\n }\n\n sliding = this.alignPlaylists(newDetails, curLevel.details);\n } // override level info\n\n\n curLevel.details = newDetails;\n this.levelLastLoaded = newLevelId;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].LEVEL_UPDATED, {\n details: newDetails,\n level: newLevelId\n }); // only switch back to IDLE state if we were waiting for level to start downloading a new fragment\n\n if (this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_LEVEL) {\n if (this.waitForCdnTuneIn(newDetails)) {\n // Wait for Low-Latency CDN Tune-in\n return;\n }\n\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n }\n\n if (!this.startFragRequested) {\n this.setStartPosition(newDetails, sliding);\n } else if (newDetails.live) {\n this.synchronizeToLiveEdge(newDetails);\n } // trigger handler right now\n\n\n this.tick();\n };\n\n _proto._handleFragmentLoadProgress = function _handleFragmentLoadProgress(data) {\n var _frag$initSegment;\n\n var frag = data.frag,\n part = data.part,\n payload = data.payload;\n var levels = this.levels;\n\n if (!levels) {\n this.warn(\"Levels were reset while fragment load was in progress. Fragment \" + frag.sn + \" of level \" + frag.level + \" will not be buffered\");\n return;\n }\n\n var currentLevel = levels[frag.level];\n var details = currentLevel.details;\n\n if (!details) {\n this.warn(\"Dropping fragment \" + frag.sn + \" of level \" + frag.level + \" after level details were reset\");\n return;\n }\n\n var videoCodec = currentLevel.videoCodec; // time Offset is accurate if level PTS is known, or if playlist is not sliding (not live)\n\n var accurateTimeOffset = details.PTSKnown || !details.live;\n var initSegmentData = (_frag$initSegment = frag.initSegment) === null || _frag$initSegment === void 0 ? void 0 : _frag$initSegment.data;\n\n var audioCodec = this._getAudioCodec(currentLevel); // transmux the MPEG-TS data to ISO-BMFF segments\n // this.log(`Transmuxing ${frag.sn} of [${details.startSN} ,${details.endSN}],level ${frag.level}, cc ${frag.cc}`);\n\n\n var transmuxer = this.transmuxer = this.transmuxer || new _demux_transmuxer_interface__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this.hls, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN, this._handleTransmuxComplete.bind(this), this._handleTransmuxerFlush.bind(this));\n var partIndex = part ? part.index : -1;\n var partial = partIndex !== -1;\n var chunkMeta = new _types_transmuxer__WEBPACK_IMPORTED_MODULE_9__[\"ChunkMetadata\"](frag.level, frag.sn, frag.stats.chunkCount, payload.byteLength, partIndex, partial);\n var initPTS = this.initPTS[frag.cc];\n transmuxer.push(payload, initSegmentData, audioCodec, videoCodec, frag, part, details.totalduration, accurateTimeOffset, chunkMeta, initPTS);\n };\n\n _proto.onAudioTrackSwitching = function onAudioTrackSwitching(event, data) {\n // if any URL found on new audio track, it is an alternate audio track\n var fromAltAudio = this.altAudio;\n var altAudio = !!data.url;\n var trackId = data.id; // if we switch on main audio, ensure that main fragment scheduling is synced with media.buffered\n // don't do anything if we switch to alt audio: audio stream controller is handling it.\n // we will just have to change buffer scheduling on audioTrackSwitched\n\n if (!altAudio) {\n if (this.mediaBuffer !== this.media) {\n this.log('Switching on main audio, use media.buffered to schedule main fragment loading');\n this.mediaBuffer = this.media;\n var fragCurrent = this.fragCurrent; // we need to refill audio buffer from main: cancel any frag loading to speed up audio switch\n\n if (fragCurrent !== null && fragCurrent !== void 0 && fragCurrent.loader) {\n this.log('Switching to main audio track, cancel main fragment load');\n fragCurrent.loader.abort();\n } // destroy transmuxer to force init segment generation (following audio switch)\n\n\n this.resetTransmuxer(); // switch to IDLE state to load new fragment\n\n this.resetLoadingState();\n } else if (this.audioOnly) {\n // Reset audio transmuxer so when switching back to main audio we're not still appending where we left off\n this.resetTransmuxer();\n }\n\n var hls = this.hls; // If switching from alt to main audio, flush all audio and trigger track switched\n\n if (fromAltAudio) {\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].BUFFER_FLUSHING, {\n startOffset: 0,\n endOffset: Number.POSITIVE_INFINITY,\n type: 'audio'\n });\n }\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].AUDIO_TRACK_SWITCHED, {\n id: trackId\n });\n }\n };\n\n _proto.onAudioTrackSwitched = function onAudioTrackSwitched(event, data) {\n var trackId = data.id;\n var altAudio = !!this.hls.audioTracks[trackId].url;\n\n if (altAudio) {\n var videoBuffer = this.videoBuffer; // if we switched on alternate audio, ensure that main fragment scheduling is synced with video sourcebuffer buffered\n\n if (videoBuffer && this.mediaBuffer !== videoBuffer) {\n this.log('Switching on alternate audio, use video.buffered to schedule main fragment loading');\n this.mediaBuffer = videoBuffer;\n }\n }\n\n this.altAudio = altAudio;\n this.tick();\n };\n\n _proto.onBufferCreated = function onBufferCreated(event, data) {\n var tracks = data.tracks;\n var mediaTrack;\n var name;\n var alternate = false;\n\n for (var type in tracks) {\n var track = tracks[type];\n\n if (track.id === 'main') {\n name = type;\n mediaTrack = track; // keep video source buffer reference\n\n if (type === 'video') {\n var videoTrack = tracks[type];\n\n if (videoTrack) {\n this.videoBuffer = videoTrack.buffer;\n }\n }\n } else {\n alternate = true;\n }\n }\n\n if (alternate && mediaTrack) {\n this.log(\"Alternate track found, use \" + name + \".buffered to schedule main fragment loading\");\n this.mediaBuffer = mediaTrack.buffer;\n } else {\n this.mediaBuffer = this.media;\n }\n };\n\n _proto.onFragBuffered = function onFragBuffered(event, data) {\n var frag = data.frag,\n part = data.part;\n\n if (frag && frag.type !== _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN) {\n return;\n }\n\n if (this.fragContextChanged(frag)) {\n // If a level switch was requested while a fragment was buffering, it will emit the FRAG_BUFFERED event upon completion\n // Avoid setting state back to IDLE, since that will interfere with a level switch\n this.warn(\"Fragment \" + frag.sn + (part ? ' p: ' + part.index : '') + \" of level \" + frag.level + \" finished buffering, but was aborted. state: \" + this.state);\n\n if (this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].PARSED) {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n }\n\n return;\n }\n\n var stats = part ? part.stats : frag.stats;\n this.fragLastKbps = Math.round(8 * stats.total / (stats.buffering.end - stats.loading.first));\n\n if (frag.sn !== 'initSegment') {\n this.fragPrevious = frag;\n }\n\n this.fragBufferedComplete(frag, part);\n };\n\n _proto.onError = function onError(event, data) {\n switch (data.details) {\n case _errors__WEBPACK_IMPORTED_MODULE_11__[\"ErrorDetails\"].FRAG_LOAD_ERROR:\n case _errors__WEBPACK_IMPORTED_MODULE_11__[\"ErrorDetails\"].FRAG_LOAD_TIMEOUT:\n case _errors__WEBPACK_IMPORTED_MODULE_11__[\"ErrorDetails\"].KEY_LOAD_ERROR:\n case _errors__WEBPACK_IMPORTED_MODULE_11__[\"ErrorDetails\"].KEY_LOAD_TIMEOUT:\n this.onFragmentOrKeyLoadError(_types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN, data);\n break;\n\n case _errors__WEBPACK_IMPORTED_MODULE_11__[\"ErrorDetails\"].LEVEL_LOAD_ERROR:\n case _errors__WEBPACK_IMPORTED_MODULE_11__[\"ErrorDetails\"].LEVEL_LOAD_TIMEOUT:\n if (this.state !== _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].ERROR) {\n if (data.fatal) {\n // if fatal error, stop processing\n this.warn(\"\" + data.details);\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].ERROR;\n } else {\n // in case of non fatal error while loading level, if level controller is not retrying to load level , switch back to IDLE\n if (!data.levelRetry && this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_LEVEL) {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n }\n }\n }\n\n break;\n\n case _errors__WEBPACK_IMPORTED_MODULE_11__[\"ErrorDetails\"].BUFFER_FULL_ERROR:\n // if in appending state\n if (data.parent === 'main' && (this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].PARSING || this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].PARSED)) {\n var flushBuffer = true;\n var bufferedInfo = this.getFwdBufferInfo(this.media, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN); // 0.5 : tolerance needed as some browsers stalls playback before reaching buffered end\n // reduce max buf len if current position is buffered\n\n if (bufferedInfo && bufferedInfo.len > 0.5) {\n flushBuffer = !this.reduceMaxBufferLength(bufferedInfo.len);\n }\n\n if (flushBuffer) {\n // current position is not buffered, but browser is still complaining about buffer full error\n // this happens on IE/Edge, refer to https://github.com/video-dev/hls.js/pull/708\n // in that case flush the whole buffer to recover\n this.warn('buffer full error also media.currentTime is not buffered, flush main'); // flush main buffer\n\n this.immediateLevelSwitch();\n }\n\n this.resetLoadingState();\n }\n\n break;\n\n default:\n break;\n }\n } // Checks the health of the buffer and attempts to resolve playback stalls.\n ;\n\n _proto.checkBuffer = function checkBuffer() {\n var media = this.media,\n gapController = this.gapController;\n\n if (!media || !gapController || !media.readyState) {\n // Exit early if we don't have media or if the media hasn't buffered anything yet (readyState 0)\n return;\n } // Check combined buffer\n\n\n var buffered = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_4__[\"BufferHelper\"].getBuffered(media);\n\n if (!this.loadedmetadata && buffered.length) {\n this.loadedmetadata = true;\n this.seekToStartPos();\n } else {\n // Resolve gaps using the main buffer, whose ranges are the intersections of the A/V sourcebuffers\n gapController.poll(this.lastCurrentTime);\n }\n\n this.lastCurrentTime = media.currentTime;\n };\n\n _proto.onFragLoadEmergencyAborted = function onFragLoadEmergencyAborted() {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE; // if loadedmetadata is not set, it means that we are emergency switch down on first frag\n // in that case, reset startFragRequested flag\n\n if (!this.loadedmetadata) {\n this.startFragRequested = false;\n this.nextLoadPosition = this.startPosition;\n }\n\n this.tickImmediate();\n };\n\n _proto.onBufferFlushed = function onBufferFlushed(event, _ref) {\n var type = _ref.type;\n\n if (type !== _loader_fragment__WEBPACK_IMPORTED_MODULE_7__[\"ElementaryStreamTypes\"].AUDIO || this.audioOnly && !this.altAudio) {\n var media = (type === _loader_fragment__WEBPACK_IMPORTED_MODULE_7__[\"ElementaryStreamTypes\"].VIDEO ? this.videoBuffer : this.mediaBuffer) || this.media;\n this.afterBufferFlushed(media, type, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN);\n }\n };\n\n _proto.onLevelsUpdated = function onLevelsUpdated(event, data) {\n this.levels = data.levels;\n };\n\n _proto.swapAudioCodec = function swapAudioCodec() {\n this.audioCodecSwap = !this.audioCodecSwap;\n }\n /**\n * Seeks to the set startPosition if not equal to the mediaElement's current time.\n * @private\n */\n ;\n\n _proto.seekToStartPos = function seekToStartPos() {\n var media = this.media;\n var currentTime = media.currentTime;\n var startPosition = this.startPosition; // only adjust currentTime if different from startPosition or if startPosition not buffered\n // at that stage, there should be only one buffered range, as we reach that code after first fragment has been buffered\n\n if (startPosition >= 0 && currentTime < startPosition) {\n if (media.seeking) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_12__[\"logger\"].log(\"could not seek to \" + startPosition + \", already seeking at \" + currentTime);\n\n return;\n }\n\n var buffered = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_4__[\"BufferHelper\"].getBuffered(media);\n\n var bufferStart = buffered.length ? buffered.start(0) : 0;\n var delta = bufferStart - startPosition;\n\n if (delta > 0 && (delta < this.config.maxBufferHole || delta < this.config.maxFragLookUpTolerance)) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_12__[\"logger\"].log(\"adjusting start position by \" + delta + \" to match buffer start\");\n\n startPosition += delta;\n this.startPosition = startPosition;\n }\n\n this.log(\"seek to target start position \" + startPosition + \" from current time \" + currentTime);\n media.currentTime = startPosition;\n }\n };\n\n _proto._getAudioCodec = function _getAudioCodec(currentLevel) {\n var audioCodec = this.config.defaultAudioCodec || currentLevel.audioCodec;\n\n if (this.audioCodecSwap && audioCodec) {\n this.log('Swapping audio codec');\n\n if (audioCodec.indexOf('mp4a.40.5') !== -1) {\n audioCodec = 'mp4a.40.2';\n } else {\n audioCodec = 'mp4a.40.5';\n }\n }\n\n return audioCodec;\n };\n\n _proto._loadBitrateTestFrag = function _loadBitrateTestFrag(frag) {\n var _this2 = this;\n\n this._doFragLoad(frag).then(function (data) {\n var hls = _this2.hls;\n\n if (!data || hls.nextLoadLevel || _this2.fragContextChanged(frag)) {\n return;\n }\n\n _this2.fragLoadError = 0;\n _this2.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n _this2.startFragRequested = false;\n _this2.bitrateTest = false;\n var stats = frag.stats; // Bitrate tests fragments are neither parsed nor buffered\n\n stats.parsing.start = stats.parsing.end = stats.buffering.start = stats.buffering.end = self.performance.now();\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].FRAG_LOADED, data);\n });\n };\n\n _proto._handleTransmuxComplete = function _handleTransmuxComplete(transmuxResult) {\n var _id3$samples;\n\n var id = 'main';\n var hls = this.hls;\n var remuxResult = transmuxResult.remuxResult,\n chunkMeta = transmuxResult.chunkMeta;\n var context = this.getCurrentContext(chunkMeta);\n\n if (!context) {\n this.warn(\"The loading context changed while buffering fragment \" + chunkMeta.sn + \" of level \" + chunkMeta.level + \". This chunk will not be buffered.\");\n this.resetLiveStartWhenNotLoaded(chunkMeta.level);\n return;\n }\n\n var frag = context.frag,\n part = context.part,\n level = context.level;\n var video = remuxResult.video,\n text = remuxResult.text,\n id3 = remuxResult.id3,\n initSegment = remuxResult.initSegment; // The audio-stream-controller handles audio buffering if Hls.js is playing an alternate audio track\n\n var audio = this.altAudio ? undefined : remuxResult.audio; // Check if the current fragment has been aborted. We check this by first seeing if we're still playing the current level.\n // If we are, subsequently check if the currently loading fragment (fragCurrent) has changed.\n\n if (this.fragContextChanged(frag)) {\n return;\n }\n\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].PARSING;\n\n if (initSegment) {\n if (initSegment.tracks) {\n this._bufferInitSegment(level, initSegment.tracks, frag, chunkMeta);\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].FRAG_PARSING_INIT_SEGMENT, {\n frag: frag,\n id: id,\n tracks: initSegment.tracks\n });\n } // This would be nice if Number.isFinite acted as a typeguard, but it doesn't. See: https://github.com/Microsoft/TypeScript/issues/10038\n\n\n var initPTS = initSegment.initPTS;\n var timescale = initSegment.timescale;\n\n if (Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(initPTS)) {\n this.initPTS[frag.cc] = initPTS;\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].INIT_PTS_FOUND, {\n frag: frag,\n id: id,\n initPTS: initPTS,\n timescale: timescale\n });\n }\n } // Avoid buffering if backtracking this fragment\n\n\n if (video && remuxResult.independent !== false) {\n if (level.details) {\n var startPTS = video.startPTS,\n endPTS = video.endPTS,\n startDTS = video.startDTS,\n endDTS = video.endDTS;\n\n if (part) {\n part.elementaryStreams[video.type] = {\n startPTS: startPTS,\n endPTS: endPTS,\n startDTS: startDTS,\n endDTS: endDTS\n };\n } else {\n if (video.firstKeyFrame && video.independent) {\n this.couldBacktrack = true;\n }\n\n if (video.dropped && video.independent) {\n // Backtrack if dropped frames create a gap after currentTime\n var pos = this.getLoadPosition() + this.config.maxBufferHole;\n\n if (pos < startPTS) {\n this.backtrack(frag);\n return;\n } // Set video stream start to fragment start so that truncated samples do not distort the timeline, and mark it partial\n\n\n frag.setElementaryStreamInfo(video.type, frag.start, endPTS, frag.start, endDTS, true);\n }\n }\n\n frag.setElementaryStreamInfo(video.type, startPTS, endPTS, startDTS, endDTS);\n this.bufferFragmentData(video, frag, part, chunkMeta);\n }\n } else if (remuxResult.independent === false) {\n this.backtrack(frag);\n return;\n }\n\n if (audio) {\n var _startPTS = audio.startPTS,\n _endPTS = audio.endPTS,\n _startDTS = audio.startDTS,\n _endDTS = audio.endDTS;\n\n if (part) {\n part.elementaryStreams[_loader_fragment__WEBPACK_IMPORTED_MODULE_7__[\"ElementaryStreamTypes\"].AUDIO] = {\n startPTS: _startPTS,\n endPTS: _endPTS,\n startDTS: _startDTS,\n endDTS: _endDTS\n };\n }\n\n frag.setElementaryStreamInfo(_loader_fragment__WEBPACK_IMPORTED_MODULE_7__[\"ElementaryStreamTypes\"].AUDIO, _startPTS, _endPTS, _startDTS, _endDTS);\n this.bufferFragmentData(audio, frag, part, chunkMeta);\n }\n\n if (id3 !== null && id3 !== void 0 && (_id3$samples = id3.samples) !== null && _id3$samples !== void 0 && _id3$samples.length) {\n var emittedID3 = {\n frag: frag,\n id: id,\n samples: id3.samples\n };\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].FRAG_PARSING_METADATA, emittedID3);\n }\n\n if (text) {\n var emittedText = {\n frag: frag,\n id: id,\n samples: text.samples\n };\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].FRAG_PARSING_USERDATA, emittedText);\n }\n };\n\n _proto._bufferInitSegment = function _bufferInitSegment(currentLevel, tracks, frag, chunkMeta) {\n var _this3 = this;\n\n if (this.state !== _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].PARSING) {\n return;\n }\n\n this.audioOnly = !!tracks.audio && !tracks.video; // if audio track is expected to come from audio stream controller, discard any coming from main\n\n if (this.altAudio && !this.audioOnly) {\n delete tracks.audio;\n } // include levelCodec in audio and video tracks\n\n\n var audio = tracks.audio,\n video = tracks.video,\n audiovideo = tracks.audiovideo;\n\n if (audio) {\n var audioCodec = currentLevel.audioCodec;\n var ua = navigator.userAgent.toLowerCase();\n\n if (this.audioCodecSwitch) {\n if (audioCodec) {\n if (audioCodec.indexOf('mp4a.40.5') !== -1) {\n audioCodec = 'mp4a.40.2';\n } else {\n audioCodec = 'mp4a.40.5';\n }\n } // In the case that AAC and HE-AAC audio codecs are signalled in manifest,\n // force HE-AAC, as it seems that most browsers prefers it.\n // don't force HE-AAC if mono stream, or in Firefox\n\n\n if (audio.metadata.channelCount !== 1 && ua.indexOf('firefox') === -1) {\n audioCodec = 'mp4a.40.5';\n }\n } // HE-AAC is broken on Android, always signal audio codec as AAC even if variant manifest states otherwise\n\n\n if (ua.indexOf('android') !== -1 && audio.container !== 'audio/mpeg') {\n // Exclude mpeg audio\n audioCodec = 'mp4a.40.2';\n this.log(\"Android: force audio codec to \" + audioCodec);\n }\n\n if (currentLevel.audioCodec && currentLevel.audioCodec !== audioCodec) {\n this.log(\"Swapping manifest audio codec \\\"\" + currentLevel.audioCodec + \"\\\" for \\\"\" + audioCodec + \"\\\"\");\n }\n\n audio.levelCodec = audioCodec;\n audio.id = 'main';\n this.log(\"Init audio buffer, container:\" + audio.container + \", codecs[selected/level/parsed]=[\" + (audioCodec || '') + \"/\" + (currentLevel.audioCodec || '') + \"/\" + audio.codec + \"]\");\n }\n\n if (video) {\n video.levelCodec = currentLevel.videoCodec;\n video.id = 'main';\n this.log(\"Init video buffer, container:\" + video.container + \", codecs[level/parsed]=[\" + (currentLevel.videoCodec || '') + \"/\" + video.codec + \"]\");\n }\n\n if (audiovideo) {\n this.log(\"Init audiovideo buffer, container:\" + audiovideo.container + \", codecs[level/parsed]=[\" + (currentLevel.attrs.CODECS || '') + \"/\" + audiovideo.codec + \"]\");\n }\n\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].BUFFER_CODECS, tracks); // loop through tracks that are going to be provided to bufferController\n\n Object.keys(tracks).forEach(function (trackName) {\n var track = tracks[trackName];\n var initSegment = track.initSegment;\n\n if (initSegment !== null && initSegment !== void 0 && initSegment.byteLength) {\n _this3.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].BUFFER_APPENDING, {\n type: trackName,\n data: initSegment,\n frag: frag,\n part: null,\n chunkMeta: chunkMeta,\n parent: frag.type\n });\n }\n }); // trigger handler right now\n\n this.tick();\n };\n\n _proto.backtrack = function backtrack(frag) {\n this.couldBacktrack = true; // Causes findFragments to backtrack through fragments to find the keyframe\n\n this.resetTransmuxer();\n this.flushBufferGap(frag);\n var data = this.fragmentTracker.backtrack(frag);\n this.fragPrevious = null;\n this.nextLoadPosition = frag.start;\n\n if (data) {\n this.resetFragmentLoading(frag);\n } else {\n // Change state to BACKTRACKING so that fragmentEntity.backtrack data can be added after _doFragLoad\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].BACKTRACKING;\n }\n };\n\n _proto.checkFragmentChanged = function checkFragmentChanged() {\n var video = this.media;\n var fragPlayingCurrent = null;\n\n if (video && video.readyState > 1 && video.seeking === false) {\n var currentTime = video.currentTime;\n /* if video element is in seeked state, currentTime can only increase.\n (assuming that playback rate is positive ...)\n As sometimes currentTime jumps back to zero after a\n media decode error, check this, to avoid seeking back to\n wrong position after a media decode error\n */\n\n if (_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_4__[\"BufferHelper\"].isBuffered(video, currentTime)) {\n fragPlayingCurrent = this.getAppendedFrag(currentTime);\n } else if (_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_4__[\"BufferHelper\"].isBuffered(video, currentTime + 0.1)) {\n /* ensure that FRAG_CHANGED event is triggered at startup,\n when first video frame is displayed and playback is paused.\n add a tolerance of 100ms, in case current position is not buffered,\n check if current pos+100ms is buffered and use that buffer range\n for FRAG_CHANGED event reporting */\n fragPlayingCurrent = this.getAppendedFrag(currentTime + 0.1);\n }\n\n if (fragPlayingCurrent) {\n var fragPlaying = this.fragPlaying;\n var fragCurrentLevel = fragPlayingCurrent.level;\n\n if (!fragPlaying || fragPlayingCurrent.sn !== fragPlaying.sn || fragPlaying.level !== fragCurrentLevel || fragPlayingCurrent.urlId !== fragPlaying.urlId) {\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].FRAG_CHANGED, {\n frag: fragPlayingCurrent\n });\n\n if (!fragPlaying || fragPlaying.level !== fragCurrentLevel) {\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].LEVEL_SWITCHED, {\n level: fragCurrentLevel\n });\n }\n\n this.fragPlaying = fragPlayingCurrent;\n }\n }\n }\n };\n\n _createClass(StreamController, [{\n key: \"nextLevel\",\n get: function get() {\n var frag = this.nextBufferedFrag;\n\n if (frag) {\n return frag.level;\n } else {\n return -1;\n }\n }\n }, {\n key: \"currentLevel\",\n get: function get() {\n var media = this.media;\n\n if (media) {\n var fragPlayingCurrent = this.getAppendedFrag(media.currentTime);\n\n if (fragPlayingCurrent) {\n return fragPlayingCurrent.level;\n }\n }\n\n return -1;\n }\n }, {\n key: \"nextBufferedFrag\",\n get: function get() {\n var media = this.media;\n\n if (media) {\n // first get end range of current fragment\n var fragPlayingCurrent = this.getAppendedFrag(media.currentTime);\n return this.followingBufferedFrag(fragPlayingCurrent);\n } else {\n return null;\n }\n }\n }, {\n key: \"forceStartLoad\",\n get: function get() {\n return this._forceStartLoad;\n }\n }]);\n\n return StreamController;\n }(_base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n /***/\n\n },\n\n /***/\n \"./src/controller/subtitle-stream-controller.ts\":\n /*!******************************************************!*\\\n !*** ./src/controller/subtitle-stream-controller.ts ***!\n \\******************************************************/\n\n /*! exports provided: SubtitleStreamController */\n\n /***/\n function srcControllerSubtitleStreamControllerTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"SubtitleStreamController\", function () {\n return SubtitleStreamController;\n });\n /* harmony import */\n\n\n var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ../events */\n \"./src/events.ts\");\n /* harmony import */\n\n\n var _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ../utils/buffer-helper */\n \"./src/utils/buffer-helper.ts\");\n /* harmony import */\n\n\n var _fragment_finders__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ./fragment-finders */\n \"./src/controller/fragment-finders.ts\");\n /* harmony import */\n\n\n var _utils_discontinuities__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\n /*! ../utils/discontinuities */\n \"./src/utils/discontinuities.ts\");\n /* harmony import */\n\n\n var _level_helper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\n /*! ./level-helper */\n \"./src/controller/level-helper.ts\");\n /* harmony import */\n\n\n var _fragment_tracker__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(\n /*! ./fragment-tracker */\n \"./src/controller/fragment-tracker.ts\");\n /* harmony import */\n\n\n var _base_stream_controller__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(\n /*! ./base-stream-controller */\n \"./src/controller/base-stream-controller.ts\");\n /* harmony import */\n\n\n var _types_loader__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(\n /*! ../types/loader */\n \"./src/types/loader.ts\");\n /* harmony import */\n\n\n var _types_level__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(\n /*! ../types/level */\n \"./src/types/level.ts\");\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n }\n\n var TICK_INTERVAL = 500; // how often to tick in ms\n\n var SubtitleStreamController = /*#__PURE__*/function (_BaseStreamController) {\n _inheritsLoose(SubtitleStreamController, _BaseStreamController);\n\n function SubtitleStreamController(hls, fragmentTracker) {\n var _this;\n\n _this = _BaseStreamController.call(this, hls, fragmentTracker, '[subtitle-stream-controller]') || this;\n _this.levels = [];\n _this.currentTrackId = -1;\n _this.tracksBuffered = [];\n _this.mainDetails = null;\n\n _this._registerListeners();\n\n return _this;\n }\n\n var _proto = SubtitleStreamController.prototype;\n\n _proto.onHandlerDestroying = function onHandlerDestroying() {\n this._unregisterListeners();\n\n this.mainDetails = null;\n };\n\n _proto._registerListeners = function _registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].LEVEL_LOADED, this.onLevelLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, this.onError, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_FRAG_PROCESSED, this.onSubtitleFragProcessed, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].BUFFER_FLUSHING, this.onBufferFlushing, this);\n };\n\n _proto._unregisterListeners = function _unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].LEVEL_LOADED, this.onLevelLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, this.onError, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_FRAG_PROCESSED, this.onSubtitleFragProcessed, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].BUFFER_FLUSHING, this.onBufferFlushing, this);\n };\n\n _proto.startLoad = function startLoad() {\n this.stopLoad();\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_6__[\"State\"].IDLE;\n this.setInterval(TICK_INTERVAL);\n this.tick();\n };\n\n _proto.onManifestLoading = function onManifestLoading() {\n this.mainDetails = null;\n this.fragmentTracker.removeAllFragments();\n };\n\n _proto.onLevelLoaded = function onLevelLoaded(event, data) {\n this.mainDetails = data.details;\n };\n\n _proto.onSubtitleFragProcessed = function onSubtitleFragProcessed(event, data) {\n var frag = data.frag,\n success = data.success;\n this.fragPrevious = frag;\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_6__[\"State\"].IDLE;\n\n if (!success) {\n return;\n }\n\n var buffered = this.tracksBuffered[this.currentTrackId];\n\n if (!buffered) {\n return;\n } // Create/update a buffered array matching the interface used by BufferHelper.bufferedInfo\n // so we can re-use the logic used to detect how much has been buffered\n\n\n var timeRange;\n var fragStart = frag.start;\n\n for (var i = 0; i < buffered.length; i++) {\n if (fragStart >= buffered[i].start && fragStart <= buffered[i].end) {\n timeRange = buffered[i];\n break;\n }\n }\n\n var fragEnd = frag.start + frag.duration;\n\n if (timeRange) {\n timeRange.end = fragEnd;\n } else {\n timeRange = {\n start: fragStart,\n end: fragEnd\n };\n buffered.push(timeRange);\n }\n\n this.fragmentTracker.fragBuffered(frag);\n };\n\n _proto.onBufferFlushing = function onBufferFlushing(event, data) {\n var startOffset = data.startOffset,\n endOffset = data.endOffset;\n\n if (startOffset === 0 && endOffset !== Number.POSITIVE_INFINITY) {\n var currentTrackId = this.currentTrackId,\n levels = this.levels;\n\n if (!levels.length || !levels[currentTrackId] || !levels[currentTrackId].details) {\n return;\n }\n\n var trackDetails = levels[currentTrackId].details;\n var targetDuration = trackDetails.targetduration;\n var endOffsetSubtitles = endOffset - targetDuration;\n\n if (endOffsetSubtitles <= 0) {\n return;\n }\n\n data.endOffsetSubtitles = Math.max(0, endOffsetSubtitles);\n this.tracksBuffered.forEach(function (buffered) {\n for (var i = 0; i < buffered.length;) {\n if (buffered[i].end <= endOffsetSubtitles) {\n buffered.shift();\n continue;\n } else if (buffered[i].start < endOffsetSubtitles) {\n buffered[i].start = endOffsetSubtitles;\n } else {\n break;\n }\n\n i++;\n }\n });\n this.fragmentTracker.removeFragmentsInRange(startOffset, endOffsetSubtitles, _types_loader__WEBPACK_IMPORTED_MODULE_7__[\"PlaylistLevelType\"].SUBTITLE);\n }\n } // If something goes wrong, proceed to next frag, if we were processing one.\n ;\n\n _proto.onError = function onError(event, data) {\n var _this$fragCurrent;\n\n var frag = data.frag; // don't handle error not related to subtitle fragment\n\n if (!frag || frag.type !== _types_loader__WEBPACK_IMPORTED_MODULE_7__[\"PlaylistLevelType\"].SUBTITLE) {\n return;\n }\n\n if ((_this$fragCurrent = this.fragCurrent) !== null && _this$fragCurrent !== void 0 && _this$fragCurrent.loader) {\n this.fragCurrent.loader.abort();\n }\n\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_6__[\"State\"].IDLE;\n } // Got all new subtitle levels.\n ;\n\n _proto.onSubtitleTracksUpdated = function onSubtitleTracksUpdated(event, _ref) {\n var _this2 = this;\n\n var subtitleTracks = _ref.subtitleTracks;\n this.tracksBuffered = [];\n this.levels = subtitleTracks.map(function (mediaPlaylist) {\n return new _types_level__WEBPACK_IMPORTED_MODULE_8__[\"Level\"](mediaPlaylist);\n });\n this.fragmentTracker.removeAllFragments();\n this.fragPrevious = null;\n this.levels.forEach(function (level) {\n _this2.tracksBuffered[level.id] = [];\n });\n this.mediaBuffer = null;\n };\n\n _proto.onSubtitleTrackSwitch = function onSubtitleTrackSwitch(event, data) {\n this.currentTrackId = data.id;\n\n if (!this.levels.length || this.currentTrackId === -1) {\n this.clearInterval();\n return;\n } // Check if track has the necessary details to load fragments\n\n\n var currentTrack = this.levels[this.currentTrackId];\n\n if (currentTrack !== null && currentTrack !== void 0 && currentTrack.details) {\n this.mediaBuffer = this.mediaBufferTimeRanges;\n } else {\n this.mediaBuffer = null;\n }\n\n if (currentTrack) {\n this.setInterval(TICK_INTERVAL);\n }\n } // Got a new set of subtitle fragments.\n ;\n\n _proto.onSubtitleTrackLoaded = function onSubtitleTrackLoaded(event, data) {\n var _track$details;\n\n var newDetails = data.details,\n trackId = data.id;\n var currentTrackId = this.currentTrackId,\n levels = this.levels;\n\n if (!levels.length) {\n return;\n }\n\n var track = levels[currentTrackId];\n\n if (trackId >= levels.length || trackId !== currentTrackId || !track) {\n return;\n }\n\n this.mediaBuffer = this.mediaBufferTimeRanges;\n\n if (newDetails.live || (_track$details = track.details) !== null && _track$details !== void 0 && _track$details.live) {\n var mainDetails = this.mainDetails;\n\n if (newDetails.deltaUpdateFailed || !mainDetails) {\n return;\n }\n\n var mainSlidingStartFragment = mainDetails.fragments[0];\n\n if (!track.details) {\n if (newDetails.hasProgramDateTime && mainDetails.hasProgramDateTime) {\n Object(_utils_discontinuities__WEBPACK_IMPORTED_MODULE_3__[\"alignMediaPlaylistByPDT\"])(newDetails, mainDetails);\n } else if (mainSlidingStartFragment) {\n // line up live playlist with main so that fragments in range are loaded\n Object(_level_helper__WEBPACK_IMPORTED_MODULE_4__[\"addSliding\"])(newDetails, mainSlidingStartFragment.start);\n }\n } else {\n var sliding = this.alignPlaylists(newDetails, track.details);\n\n if (sliding === 0 && mainSlidingStartFragment) {\n // realign with main when there is no overlap with last refresh\n Object(_level_helper__WEBPACK_IMPORTED_MODULE_4__[\"addSliding\"])(newDetails, mainSlidingStartFragment.start);\n }\n }\n }\n\n track.details = newDetails;\n this.levelLastLoaded = trackId; // trigger handler right now\n\n this.tick(); // If playlist is misaligned because of bad PDT or drift, delete details to resync with main on reload\n\n if (newDetails.live && !this.fragCurrent && this.media && this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_6__[\"State\"].IDLE) {\n var foundFrag = Object(_fragment_finders__WEBPACK_IMPORTED_MODULE_2__[\"findFragmentByPTS\"])(null, newDetails.fragments, this.media.currentTime, 0);\n\n if (!foundFrag) {\n this.warn('Subtitle playlist not aligned with playback');\n track.details = undefined;\n }\n }\n };\n\n _proto._handleFragmentLoadComplete = function _handleFragmentLoadComplete(fragLoadedData) {\n var frag = fragLoadedData.frag,\n payload = fragLoadedData.payload;\n var decryptData = frag.decryptdata;\n var hls = this.hls;\n\n if (this.fragContextChanged(frag)) {\n return;\n } // check to see if the payload needs to be decrypted\n\n\n if (payload && payload.byteLength > 0 && decryptData && decryptData.key && decryptData.iv && decryptData.method === 'AES-128') {\n var startTime = performance.now(); // decrypt the subtitles\n\n this.decrypter.webCryptoDecrypt(new Uint8Array(payload), decryptData.key.buffer, decryptData.iv.buffer).then(function (decryptedData) {\n var endTime = performance.now();\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].FRAG_DECRYPTED, {\n frag: frag,\n payload: decryptedData,\n stats: {\n tstart: startTime,\n tdecrypt: endTime\n }\n });\n });\n }\n };\n\n _proto.doTick = function doTick() {\n if (!this.media) {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_6__[\"State\"].IDLE;\n return;\n }\n\n if (this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_6__[\"State\"].IDLE) {\n var _foundFrag;\n\n var currentTrackId = this.currentTrackId,\n levels = this.levels;\n\n if (!levels.length || !levels[currentTrackId] || !levels[currentTrackId].details) {\n return;\n } // Expand range of subs loaded by one target-duration in either direction to make up for misaligned playlists\n\n\n var trackDetails = levels[currentTrackId].details;\n var targetDuration = trackDetails.targetduration;\n var config = this.config,\n media = this.media;\n\n var bufferedInfo = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_1__[\"BufferHelper\"].bufferedInfo(this.mediaBufferTimeRanges, media.currentTime - targetDuration, config.maxBufferHole);\n\n var targetBufferTime = bufferedInfo.end,\n bufferLen = bufferedInfo.len;\n var maxBufLen = this.getMaxBufferLength() + targetDuration;\n\n if (bufferLen > maxBufLen) {\n return;\n }\n\n console.assert(trackDetails, 'Subtitle track details are defined on idle subtitle stream controller tick');\n var fragments = trackDetails.fragments;\n var fragLen = fragments.length;\n var end = trackDetails.edge;\n var foundFrag;\n var fragPrevious = this.fragPrevious;\n\n if (targetBufferTime < end) {\n var maxFragLookUpTolerance = config.maxFragLookUpTolerance;\n foundFrag = Object(_fragment_finders__WEBPACK_IMPORTED_MODULE_2__[\"findFragmentByPTS\"])(fragPrevious, fragments, targetBufferTime, maxFragLookUpTolerance);\n\n if (!foundFrag && fragPrevious && fragPrevious.start < fragments[0].start) {\n foundFrag = fragments[0];\n }\n } else {\n foundFrag = fragments[fragLen - 1];\n }\n\n if ((_foundFrag = foundFrag) !== null && _foundFrag !== void 0 && _foundFrag.encrypted) {\n this.loadKey(foundFrag, trackDetails);\n } else if (foundFrag && this.fragmentTracker.getState(foundFrag) === _fragment_tracker__WEBPACK_IMPORTED_MODULE_5__[\"FragmentState\"].NOT_LOADED) {\n // only load if fragment is not loaded\n this.loadFragment(foundFrag, trackDetails, targetBufferTime);\n }\n }\n };\n\n _proto.loadFragment = function loadFragment(frag, levelDetails, targetBufferTime) {\n this.fragCurrent = frag;\n\n _BaseStreamController.prototype.loadFragment.call(this, frag, levelDetails, targetBufferTime);\n };\n\n _createClass(SubtitleStreamController, [{\n key: \"mediaBufferTimeRanges\",\n get: function get() {\n return this.tracksBuffered[this.currentTrackId] || [];\n }\n }]);\n\n return SubtitleStreamController;\n }(_base_stream_controller__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n /***/\n\n },\n\n /***/\n \"./src/controller/subtitle-track-controller.ts\":\n /*!*****************************************************!*\\\n !*** ./src/controller/subtitle-track-controller.ts ***!\n \\*****************************************************/\n\n /*! exports provided: default */\n\n /***/\n function srcControllerSubtitleTrackControllerTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony import */\n\n\n var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ../events */\n \"./src/events.ts\");\n /* harmony import */\n\n\n var _utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ../utils/texttrack-utils */\n \"./src/utils/texttrack-utils.ts\");\n /* harmony import */\n\n\n var _base_playlist_controller__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ./base-playlist-controller */\n \"./src/controller/base-playlist-controller.ts\");\n /* harmony import */\n\n\n var _types_loader__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\n /*! ../types/loader */\n \"./src/types/loader.ts\");\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n }\n\n var SubtitleTrackController = /*#__PURE__*/function (_BasePlaylistControll) {\n _inheritsLoose(SubtitleTrackController, _BasePlaylistControll); // Enable/disable subtitle display rendering\n\n\n function SubtitleTrackController(hls) {\n var _this;\n\n _this = _BasePlaylistControll.call(this, hls, '[subtitle-track-controller]') || this;\n _this.media = null;\n _this.tracks = [];\n _this.groupId = null;\n _this.tracksInGroup = [];\n _this.trackId = -1;\n _this.selectDefaultTrack = true;\n _this.queuedDefaultTrack = -1;\n\n _this.trackChangeListener = function () {\n return _this.onTextTracksChanged();\n };\n\n _this.asyncPollTrackChange = function () {\n return _this.pollTrackChange(0);\n };\n\n _this.useTextTrackPolling = false;\n _this.subtitlePollingInterval = -1;\n _this.subtitleDisplay = true;\n\n _this.registerListeners();\n\n return _this;\n }\n\n var _proto = SubtitleTrackController.prototype;\n\n _proto.destroy = function destroy() {\n this.unregisterListeners();\n this.tracks.length = 0;\n this.tracksInGroup.length = 0;\n this.trackChangeListener = this.asyncPollTrackChange = null;\n\n _BasePlaylistControll.prototype.destroy.call(this);\n };\n\n _proto.registerListeners = function registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].LEVEL_LOADING, this.onLevelLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].LEVEL_SWITCHING, this.onLevelSwitching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, this.onError, this);\n };\n\n _proto.unregisterListeners = function unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].LEVEL_LOADING, this.onLevelLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].LEVEL_SWITCHING, this.onLevelSwitching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, this.onError, this);\n } // Listen for subtitle track change, then extract the current track ID.\n ;\n\n _proto.onMediaAttached = function onMediaAttached(event, data) {\n this.media = data.media;\n\n if (!this.media) {\n return;\n }\n\n if (this.queuedDefaultTrack > -1) {\n this.subtitleTrack = this.queuedDefaultTrack;\n this.queuedDefaultTrack = -1;\n }\n\n this.useTextTrackPolling = !(this.media.textTracks && 'onchange' in this.media.textTracks);\n\n if (this.useTextTrackPolling) {\n this.pollTrackChange(500);\n } else {\n this.media.textTracks.addEventListener('change', this.asyncPollTrackChange);\n }\n };\n\n _proto.pollTrackChange = function pollTrackChange(timeout) {\n self.clearInterval(this.subtitlePollingInterval);\n this.subtitlePollingInterval = self.setInterval(this.trackChangeListener, timeout);\n };\n\n _proto.onMediaDetaching = function onMediaDetaching() {\n if (!this.media) {\n return;\n }\n\n self.clearInterval(this.subtitlePollingInterval);\n\n if (!this.useTextTrackPolling) {\n this.media.textTracks.removeEventListener('change', this.asyncPollTrackChange);\n }\n\n if (this.trackId > -1) {\n this.queuedDefaultTrack = this.trackId;\n }\n\n var textTracks = filterSubtitleTracks(this.media.textTracks); // Clear loaded cues on media detachment from tracks\n\n textTracks.forEach(function (track) {\n Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_1__[\"clearCurrentCues\"])(track);\n }); // Disable all subtitle tracks before detachment so when reattached only tracks in that content are enabled.\n\n this.subtitleTrack = -1;\n this.media = null;\n };\n\n _proto.onManifestLoading = function onManifestLoading() {\n this.tracks = [];\n this.groupId = null;\n this.tracksInGroup = [];\n this.trackId = -1;\n this.selectDefaultTrack = true;\n } // Fired whenever a new manifest is loaded.\n ;\n\n _proto.onManifestParsed = function onManifestParsed(event, data) {\n this.tracks = data.subtitleTracks;\n };\n\n _proto.onSubtitleTrackLoaded = function onSubtitleTrackLoaded(event, data) {\n var id = data.id,\n details = data.details;\n var trackId = this.trackId;\n var currentTrack = this.tracksInGroup[trackId];\n\n if (!currentTrack) {\n this.warn(\"Invalid subtitle track id \" + id);\n return;\n }\n\n var curDetails = currentTrack.details;\n currentTrack.details = data.details;\n this.log(\"subtitle track \" + id + \" loaded [\" + details.startSN + \"-\" + details.endSN + \"]\");\n\n if (id === this.trackId) {\n this.retryCount = 0;\n this.playlistLoaded(id, data, curDetails);\n }\n };\n\n _proto.onLevelLoading = function onLevelLoading(event, data) {\n this.switchLevel(data.level);\n };\n\n _proto.onLevelSwitching = function onLevelSwitching(event, data) {\n this.switchLevel(data.level);\n };\n\n _proto.switchLevel = function switchLevel(levelIndex) {\n var levelInfo = this.hls.levels[levelIndex];\n\n if (!(levelInfo !== null && levelInfo !== void 0 && levelInfo.textGroupIds)) {\n return;\n }\n\n var textGroupId = levelInfo.textGroupIds[levelInfo.urlId];\n\n if (this.groupId !== textGroupId) {\n var lastTrack = this.tracksInGroup ? this.tracksInGroup[this.trackId] : undefined;\n var subtitleTracks = this.tracks.filter(function (track) {\n return !textGroupId || track.groupId === textGroupId;\n });\n this.tracksInGroup = subtitleTracks;\n var initialTrackId = this.findTrackId(lastTrack === null || lastTrack === void 0 ? void 0 : lastTrack.name) || this.findTrackId();\n this.groupId = textGroupId;\n var subtitleTracksUpdated = {\n subtitleTracks: subtitleTracks\n };\n this.log(\"Updating subtitle tracks, \" + subtitleTracks.length + \" track(s) found in \\\"\" + textGroupId + \"\\\" group-id\");\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACKS_UPDATED, subtitleTracksUpdated);\n\n if (initialTrackId !== -1) {\n this.setSubtitleTrack(initialTrackId, lastTrack);\n }\n }\n };\n\n _proto.findTrackId = function findTrackId(name) {\n var textTracks = this.tracksInGroup;\n\n for (var i = 0; i < textTracks.length; i++) {\n var track = textTracks[i];\n\n if (!this.selectDefaultTrack || track.default) {\n if (!name || name === track.name) {\n return track.id;\n }\n }\n }\n\n return -1;\n };\n\n _proto.onError = function onError(event, data) {\n _BasePlaylistControll.prototype.onError.call(this, event, data);\n\n if (data.fatal || !data.context) {\n return;\n }\n\n if (data.context.type === _types_loader__WEBPACK_IMPORTED_MODULE_3__[\"PlaylistContextType\"].SUBTITLE_TRACK && data.context.id === this.trackId && data.context.groupId === this.groupId) {\n this.retryLoadingOrFail(data);\n }\n }\n /** get alternate subtitle tracks list from playlist **/\n ;\n\n _proto.loadPlaylist = function loadPlaylist(hlsUrlParameters) {\n var currentTrack = this.tracksInGroup[this.trackId];\n\n if (this.shouldLoadTrack(currentTrack)) {\n var id = currentTrack.id;\n var groupId = currentTrack.groupId;\n var url = currentTrack.url;\n\n if (hlsUrlParameters) {\n try {\n url = hlsUrlParameters.addDirectives(url);\n } catch (error) {\n this.warn(\"Could not construct new URL with HLS Delivery Directives: \" + error);\n }\n }\n\n this.log(\"Loading subtitle playlist for id \" + id);\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACK_LOADING, {\n url: url,\n id: id,\n groupId: groupId,\n deliveryDirectives: hlsUrlParameters || null\n });\n }\n }\n /**\n * Disables the old subtitleTrack and sets current mode on the next subtitleTrack.\n * This operates on the DOM textTracks.\n * A value of -1 will disable all subtitle tracks.\n */\n ;\n\n _proto.toggleTrackModes = function toggleTrackModes(newId) {\n var _this2 = this;\n\n var media = this.media,\n subtitleDisplay = this.subtitleDisplay,\n trackId = this.trackId;\n\n if (!media) {\n return;\n }\n\n var textTracks = filterSubtitleTracks(media.textTracks);\n var groupTracks = textTracks.filter(function (track) {\n return track.groupId === _this2.groupId;\n });\n\n if (newId === -1) {\n [].slice.call(textTracks).forEach(function (track) {\n track.mode = 'disabled';\n });\n } else {\n var oldTrack = groupTracks[trackId];\n\n if (oldTrack) {\n oldTrack.mode = 'disabled';\n }\n }\n\n var nextTrack = groupTracks[newId];\n\n if (nextTrack) {\n nextTrack.mode = subtitleDisplay ? 'showing' : 'hidden';\n }\n }\n /**\n * This method is responsible for validating the subtitle index and periodically reloading if live.\n * Dispatches the SUBTITLE_TRACK_SWITCH event, which instructs the subtitle-stream-controller to load the selected track.\n */\n ;\n\n _proto.setSubtitleTrack = function setSubtitleTrack(newId, lastTrack) {\n var _tracks$newId;\n\n var tracks = this.tracksInGroup; // setting this.subtitleTrack will trigger internal logic\n // if media has not been attached yet, it will fail\n // we keep a reference to the default track id\n // and we'll set subtitleTrack when onMediaAttached is triggered\n\n if (!this.media) {\n this.queuedDefaultTrack = newId;\n return;\n }\n\n if (this.trackId !== newId) {\n this.toggleTrackModes(newId);\n } // exit if track id as already set or invalid\n\n\n if (this.trackId === newId && (newId === -1 || (_tracks$newId = tracks[newId]) !== null && _tracks$newId !== void 0 && _tracks$newId.details) || newId < -1 || newId >= tracks.length) {\n return;\n } // stopping live reloading timer if any\n\n\n this.clearTimer();\n var track = tracks[newId];\n this.log(\"Switching to subtitle track \" + newId);\n this.trackId = newId;\n\n if (track) {\n var id = track.id,\n _track$groupId = track.groupId,\n groupId = _track$groupId === void 0 ? '' : _track$groupId,\n name = track.name,\n type = track.type,\n url = track.url;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACK_SWITCH, {\n id: id,\n groupId: groupId,\n name: name,\n type: type,\n url: url\n });\n var hlsUrlParameters = this.switchParams(track.url, lastTrack === null || lastTrack === void 0 ? void 0 : lastTrack.details);\n this.loadPlaylist(hlsUrlParameters);\n } else {\n // switch to -1\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACK_SWITCH, {\n id: newId\n });\n }\n };\n\n _proto.onTextTracksChanged = function onTextTracksChanged() {\n if (!this.useTextTrackPolling) {\n self.clearInterval(this.subtitlePollingInterval);\n } // Media is undefined when switching streams via loadSource()\n\n\n if (!this.media || !this.hls.config.renderTextTracksNatively) {\n return;\n }\n\n var trackId = -1;\n var tracks = filterSubtitleTracks(this.media.textTracks);\n\n for (var id = 0; id < tracks.length; id++) {\n if (tracks[id].mode === 'hidden') {\n // Do not break in case there is a following track with showing.\n trackId = id;\n } else if (tracks[id].mode === 'showing') {\n trackId = id;\n break;\n }\n } // Setting current subtitleTrack will invoke code.\n\n\n if (this.subtitleTrack !== trackId) {\n this.subtitleTrack = trackId;\n }\n };\n\n _createClass(SubtitleTrackController, [{\n key: \"subtitleTracks\",\n get: function get() {\n return this.tracksInGroup;\n }\n /** get/set index of the selected subtitle track (based on index in subtitle track lists) **/\n\n }, {\n key: \"subtitleTrack\",\n get: function get() {\n return this.trackId;\n },\n set: function set(newId) {\n this.selectDefaultTrack = false;\n var lastTrack = this.tracksInGroup ? this.tracksInGroup[this.trackId] : undefined;\n this.setSubtitleTrack(newId, lastTrack);\n }\n }]);\n\n return SubtitleTrackController;\n }(_base_playlist_controller__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n\n function filterSubtitleTracks(textTrackList) {\n var tracks = [];\n\n for (var i = 0; i < textTrackList.length; i++) {\n var track = textTrackList[i]; // Edge adds a track without a label; we don't want to use it\n\n if (track.kind === 'subtitles' && track.label) {\n tracks.push(textTrackList[i]);\n }\n }\n\n return tracks;\n }\n /* harmony default export */\n\n\n __webpack_exports__[\"default\"] = SubtitleTrackController;\n /***/\n },\n\n /***/\n \"./src/controller/timeline-controller.ts\":\n /*!***********************************************!*\\\n !*** ./src/controller/timeline-controller.ts ***!\n \\***********************************************/\n\n /*! exports provided: TimelineController */\n\n /***/\n function srcControllerTimelineControllerTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"TimelineController\", function () {\n return TimelineController;\n });\n /* harmony import */\n\n\n var _home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./src/polyfills/number */\n \"./src/polyfills/number.ts\");\n /* harmony import */\n\n\n var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ../events */\n \"./src/events.ts\");\n /* harmony import */\n\n\n var _utils_cea_608_parser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ../utils/cea-608-parser */\n \"./src/utils/cea-608-parser.ts\");\n /* harmony import */\n\n\n var _utils_output_filter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\n /*! ../utils/output-filter */\n \"./src/utils/output-filter.ts\");\n /* harmony import */\n\n\n var _utils_webvtt_parser__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\n /*! ../utils/webvtt-parser */\n \"./src/utils/webvtt-parser.ts\");\n /* harmony import */\n\n\n var _utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(\n /*! ../utils/texttrack-utils */\n \"./src/utils/texttrack-utils.ts\");\n /* harmony import */\n\n\n var _utils_imsc1_ttml_parser__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(\n /*! ../utils/imsc1-ttml-parser */\n \"./src/utils/imsc1-ttml-parser.ts\");\n /* harmony import */\n\n\n var _types_loader__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(\n /*! ../types/loader */\n \"./src/types/loader.ts\");\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(\n /*! ../utils/logger */\n \"./src/utils/logger.ts\");\n\n var TimelineController = /*#__PURE__*/function () {\n function TimelineController(hls) {\n this.hls = void 0;\n this.media = null;\n this.config = void 0;\n this.enabled = true;\n this.Cues = void 0;\n this.textTracks = [];\n this.tracks = [];\n this.initPTS = [];\n this.timescale = [];\n this.unparsedVttFrags = [];\n this.captionsTracks = {};\n this.nonNativeCaptionsTracks = {};\n this.cea608Parser1 = void 0;\n this.cea608Parser2 = void 0;\n this.lastSn = -1;\n this.lastPartIndex = -1;\n this.prevCC = -1;\n this.vttCCs = newVTTCCs();\n this.captionsProperties = void 0;\n this.hls = hls;\n this.config = hls.config;\n this.Cues = hls.config.cueHandler;\n this.captionsProperties = {\n textTrack1: {\n label: this.config.captionsTextTrack1Label,\n languageCode: this.config.captionsTextTrack1LanguageCode\n },\n textTrack2: {\n label: this.config.captionsTextTrack2Label,\n languageCode: this.config.captionsTextTrack2LanguageCode\n },\n textTrack3: {\n label: this.config.captionsTextTrack3Label,\n languageCode: this.config.captionsTextTrack3LanguageCode\n },\n textTrack4: {\n label: this.config.captionsTextTrack4Label,\n languageCode: this.config.captionsTextTrack4LanguageCode\n }\n };\n\n if (this.config.enableCEA708Captions) {\n var channel1 = new _utils_output_filter__WEBPACK_IMPORTED_MODULE_3__[\"default\"](this, 'textTrack1');\n var channel2 = new _utils_output_filter__WEBPACK_IMPORTED_MODULE_3__[\"default\"](this, 'textTrack2');\n var channel3 = new _utils_output_filter__WEBPACK_IMPORTED_MODULE_3__[\"default\"](this, 'textTrack3');\n var channel4 = new _utils_output_filter__WEBPACK_IMPORTED_MODULE_3__[\"default\"](this, 'textTrack4');\n this.cea608Parser1 = new _utils_cea_608_parser__WEBPACK_IMPORTED_MODULE_2__[\"default\"](1, channel1, channel2);\n this.cea608Parser2 = new _utils_cea_608_parser__WEBPACK_IMPORTED_MODULE_2__[\"default\"](3, channel3, channel4);\n }\n\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_ATTACHING, this.onMediaAttaching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADED, this.onManifestLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_LOADING, this.onFragLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_LOADED, this.onFragLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_PARSING_USERDATA, this.onFragParsingUserdata, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_DECRYPTED, this.onFragDecrypted, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].INIT_PTS_FOUND, this.onInitPtsFound, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_TRACKS_CLEARED, this.onSubtitleTracksCleared, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_FLUSHING, this.onBufferFlushing, this);\n }\n\n var _proto = TimelineController.prototype;\n\n _proto.destroy = function destroy() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_ATTACHING, this.onMediaAttaching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADED, this.onManifestLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_LOADING, this.onFragLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_LOADED, this.onFragLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_PARSING_USERDATA, this.onFragParsingUserdata, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_DECRYPTED, this.onFragDecrypted, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].INIT_PTS_FOUND, this.onInitPtsFound, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_TRACKS_CLEARED, this.onSubtitleTracksCleared, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_FLUSHING, this.onBufferFlushing, this); // @ts-ignore\n\n this.hls = this.config = this.cea608Parser1 = this.cea608Parser2 = null;\n };\n\n _proto.addCues = function addCues(trackName, startTime, endTime, screen, cueRanges) {\n // skip cues which overlap more than 50% with previously parsed time ranges\n var merged = false;\n\n for (var i = cueRanges.length; i--;) {\n var cueRange = cueRanges[i];\n var overlap = intersection(cueRange[0], cueRange[1], startTime, endTime);\n\n if (overlap >= 0) {\n cueRange[0] = Math.min(cueRange[0], startTime);\n cueRange[1] = Math.max(cueRange[1], endTime);\n merged = true;\n\n if (overlap / (endTime - startTime) > 0.5) {\n return;\n }\n }\n }\n\n if (!merged) {\n cueRanges.push([startTime, endTime]);\n }\n\n if (this.config.renderTextTracksNatively) {\n var track = this.captionsTracks[trackName];\n this.Cues.newCue(track, startTime, endTime, screen);\n } else {\n var cues = this.Cues.newCue(null, startTime, endTime, screen);\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].CUES_PARSED, {\n type: 'captions',\n cues: cues,\n track: trackName\n });\n }\n } // Triggered when an initial PTS is found; used for synchronisation of WebVTT.\n ;\n\n _proto.onInitPtsFound = function onInitPtsFound(event, _ref) {\n var _this = this;\n\n var frag = _ref.frag,\n id = _ref.id,\n initPTS = _ref.initPTS,\n timescale = _ref.timescale;\n var unparsedVttFrags = this.unparsedVttFrags;\n\n if (id === 'main') {\n this.initPTS[frag.cc] = initPTS;\n this.timescale[frag.cc] = timescale;\n } // Due to asynchronous processing, initial PTS may arrive later than the first VTT fragments are loaded.\n // Parse any unparsed fragments upon receiving the initial PTS.\n\n\n if (unparsedVttFrags.length) {\n this.unparsedVttFrags = [];\n unparsedVttFrags.forEach(function (frag) {\n _this.onFragLoaded(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_LOADED, frag);\n });\n }\n };\n\n _proto.getExistingTrack = function getExistingTrack(trackName) {\n var media = this.media;\n\n if (media) {\n for (var i = 0; i < media.textTracks.length; i++) {\n var textTrack = media.textTracks[i];\n\n if (textTrack[trackName]) {\n return textTrack;\n }\n }\n }\n\n return null;\n };\n\n _proto.createCaptionsTrack = function createCaptionsTrack(trackName) {\n if (this.config.renderTextTracksNatively) {\n this.createNativeTrack(trackName);\n } else {\n this.createNonNativeTrack(trackName);\n }\n };\n\n _proto.createNativeTrack = function createNativeTrack(trackName) {\n if (this.captionsTracks[trackName]) {\n return;\n }\n\n var captionsProperties = this.captionsProperties,\n captionsTracks = this.captionsTracks,\n media = this.media;\n var _captionsProperties$t = captionsProperties[trackName],\n label = _captionsProperties$t.label,\n languageCode = _captionsProperties$t.languageCode; // Enable reuse of existing text track.\n\n var existingTrack = this.getExistingTrack(trackName);\n\n if (!existingTrack) {\n var textTrack = this.createTextTrack('captions', label, languageCode);\n\n if (textTrack) {\n // Set a special property on the track so we know it's managed by Hls.js\n textTrack[trackName] = true;\n captionsTracks[trackName] = textTrack;\n }\n } else {\n captionsTracks[trackName] = existingTrack;\n Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_5__[\"clearCurrentCues\"])(captionsTracks[trackName]);\n Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_5__[\"sendAddTrackEvent\"])(captionsTracks[trackName], media);\n }\n };\n\n _proto.createNonNativeTrack = function createNonNativeTrack(trackName) {\n if (this.nonNativeCaptionsTracks[trackName]) {\n return;\n } // Create a list of a single track for the provider to consume\n\n\n var trackProperties = this.captionsProperties[trackName];\n\n if (!trackProperties) {\n return;\n }\n\n var label = trackProperties.label;\n var track = {\n _id: trackName,\n label: label,\n kind: 'captions',\n default: trackProperties.media ? !!trackProperties.media.default : false,\n closedCaptions: trackProperties.media\n };\n this.nonNativeCaptionsTracks[trackName] = track;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].NON_NATIVE_TEXT_TRACKS_FOUND, {\n tracks: [track]\n });\n };\n\n _proto.createTextTrack = function createTextTrack(kind, label, lang) {\n var media = this.media;\n\n if (!media) {\n return;\n }\n\n return media.addTextTrack(kind, label, lang);\n };\n\n _proto.onMediaAttaching = function onMediaAttaching(event, data) {\n this.media = data.media;\n\n this._cleanTracks();\n };\n\n _proto.onMediaDetaching = function onMediaDetaching() {\n var captionsTracks = this.captionsTracks;\n Object.keys(captionsTracks).forEach(function (trackName) {\n Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_5__[\"clearCurrentCues\"])(captionsTracks[trackName]);\n delete captionsTracks[trackName];\n });\n this.nonNativeCaptionsTracks = {};\n };\n\n _proto.onManifestLoading = function onManifestLoading() {\n this.lastSn = -1; // Detect discontinuity in fragment parsing\n\n this.lastPartIndex = -1;\n this.prevCC = -1;\n this.vttCCs = newVTTCCs(); // Detect discontinuity in subtitle manifests\n\n this._cleanTracks();\n\n this.tracks = [];\n this.captionsTracks = {};\n this.nonNativeCaptionsTracks = {};\n this.textTracks = [];\n this.unparsedVttFrags = this.unparsedVttFrags || [];\n this.initPTS = [];\n this.timescale = [];\n\n if (this.cea608Parser1 && this.cea608Parser2) {\n this.cea608Parser1.reset();\n this.cea608Parser2.reset();\n }\n };\n\n _proto._cleanTracks = function _cleanTracks() {\n // clear outdated subtitles\n var media = this.media;\n\n if (!media) {\n return;\n }\n\n var textTracks = media.textTracks;\n\n if (textTracks) {\n for (var i = 0; i < textTracks.length; i++) {\n Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_5__[\"clearCurrentCues\"])(textTracks[i]);\n }\n }\n };\n\n _proto.onSubtitleTracksUpdated = function onSubtitleTracksUpdated(event, data) {\n var _this2 = this;\n\n this.textTracks = [];\n var tracks = data.subtitleTracks || [];\n var hasIMSC1 = tracks.some(function (track) {\n return track.textCodec === _utils_imsc1_ttml_parser__WEBPACK_IMPORTED_MODULE_6__[\"IMSC1_CODEC\"];\n });\n\n if (this.config.enableWebVTT || hasIMSC1 && this.config.enableIMSC1) {\n var sameTracks = this.tracks && tracks && this.tracks.length === tracks.length;\n this.tracks = tracks || [];\n\n if (this.config.renderTextTracksNatively) {\n var inUseTracks = this.media ? this.media.textTracks : [];\n this.tracks.forEach(function (track, index) {\n var textTrack;\n\n if (index < inUseTracks.length) {\n var inUseTrack = null;\n\n for (var i = 0; i < inUseTracks.length; i++) {\n if (canReuseVttTextTrack(inUseTracks[i], track)) {\n inUseTrack = inUseTracks[i];\n break;\n }\n } // Reuse tracks with the same label, but do not reuse 608/708 tracks\n\n\n if (inUseTrack) {\n textTrack = inUseTrack;\n }\n }\n\n if (textTrack) {\n Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_5__[\"clearCurrentCues\"])(textTrack);\n } else {\n textTrack = _this2.createTextTrack('subtitles', track.name, track.lang);\n\n if (textTrack) {\n textTrack.mode = 'disabled';\n }\n }\n\n if (textTrack) {\n textTrack.groupId = track.groupId;\n\n _this2.textTracks.push(textTrack);\n }\n });\n } else if (!sameTracks && this.tracks && this.tracks.length) {\n // Create a list of tracks for the provider to consume\n var tracksList = this.tracks.map(function (track) {\n return {\n label: track.name,\n kind: track.type.toLowerCase(),\n default: track.default,\n subtitleTrack: track\n };\n });\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].NON_NATIVE_TEXT_TRACKS_FOUND, {\n tracks: tracksList\n });\n }\n }\n };\n\n _proto.onManifestLoaded = function onManifestLoaded(event, data) {\n var _this3 = this;\n\n if (this.config.enableCEA708Captions && data.captions) {\n data.captions.forEach(function (captionsTrack) {\n var instreamIdMatch = /(?:CC|SERVICE)([1-4])/.exec(captionsTrack.instreamId);\n\n if (!instreamIdMatch) {\n return;\n }\n\n var trackName = \"textTrack\" + instreamIdMatch[1];\n var trackProperties = _this3.captionsProperties[trackName];\n\n if (!trackProperties) {\n return;\n }\n\n trackProperties.label = captionsTrack.name;\n\n if (captionsTrack.lang) {\n // optional attribute\n trackProperties.languageCode = captionsTrack.lang;\n }\n\n trackProperties.media = captionsTrack;\n });\n }\n };\n\n _proto.onFragLoading = function onFragLoading(event, data) {\n var cea608Parser1 = this.cea608Parser1,\n cea608Parser2 = this.cea608Parser2,\n lastSn = this.lastSn,\n lastPartIndex = this.lastPartIndex;\n\n if (!this.enabled || !(cea608Parser1 && cea608Parser2)) {\n return;\n } // if this frag isn't contiguous, clear the parser so cues with bad start/end times aren't added to the textTrack\n\n\n if (data.frag.type === _types_loader__WEBPACK_IMPORTED_MODULE_7__[\"PlaylistLevelType\"].MAIN) {\n var _data$part$index, _data$part;\n\n var sn = data.frag.sn;\n var partIndex = (_data$part$index = data === null || data === void 0 ? void 0 : (_data$part = data.part) === null || _data$part === void 0 ? void 0 : _data$part.index) != null ? _data$part$index : -1;\n\n if (!(sn === lastSn + 1 || sn === lastSn && partIndex === lastPartIndex + 1)) {\n cea608Parser1.reset();\n cea608Parser2.reset();\n }\n\n this.lastSn = sn;\n this.lastPartIndex = partIndex;\n }\n };\n\n _proto.onFragLoaded = function onFragLoaded(event, data) {\n var frag = data.frag,\n payload = data.payload;\n var initPTS = this.initPTS,\n unparsedVttFrags = this.unparsedVttFrags;\n\n if (frag.type === _types_loader__WEBPACK_IMPORTED_MODULE_7__[\"PlaylistLevelType\"].SUBTITLE) {\n // If fragment is subtitle type, parse as WebVTT.\n if (payload.byteLength) {\n // We need an initial synchronisation PTS. Store fragments as long as none has arrived.\n if (!Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(initPTS[frag.cc])) {\n unparsedVttFrags.push(data);\n\n if (initPTS.length) {\n // finish unsuccessfully, otherwise the subtitle-stream-controller could be blocked from loading new frags.\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_FRAG_PROCESSED, {\n success: false,\n frag: frag,\n error: new Error('Missing initial subtitle PTS')\n });\n }\n\n return;\n }\n\n var decryptData = frag.decryptdata; // fragment after decryption has a stats object\n\n var decrypted = ('stats' in data); // If the subtitles are not encrypted, parse VTTs now. Otherwise, we need to wait.\n\n if (decryptData == null || decryptData.key == null || decryptData.method !== 'AES-128' || decrypted) {\n var trackPlaylistMedia = this.tracks[frag.level];\n var vttCCs = this.vttCCs;\n\n if (!vttCCs[frag.cc]) {\n vttCCs[frag.cc] = {\n start: frag.start,\n prevCC: this.prevCC,\n new: true\n };\n this.prevCC = frag.cc;\n }\n\n if (trackPlaylistMedia && trackPlaylistMedia.textCodec === _utils_imsc1_ttml_parser__WEBPACK_IMPORTED_MODULE_6__[\"IMSC1_CODEC\"]) {\n this._parseIMSC1(frag, payload);\n } else {\n this._parseVTTs(frag, payload, vttCCs);\n }\n }\n } else {\n // In case there is no payload, finish unsuccessfully.\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_FRAG_PROCESSED, {\n success: false,\n frag: frag,\n error: new Error('Empty subtitle payload')\n });\n }\n }\n };\n\n _proto._parseIMSC1 = function _parseIMSC1(frag, payload) {\n var _this4 = this;\n\n var hls = this.hls;\n Object(_utils_imsc1_ttml_parser__WEBPACK_IMPORTED_MODULE_6__[\"parseIMSC1\"])(payload, this.initPTS[frag.cc], this.timescale[frag.cc], function (cues) {\n _this4._appendCues(cues, frag.level);\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_FRAG_PROCESSED, {\n success: true,\n frag: frag\n });\n }, function (error) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_8__[\"logger\"].log(\"Failed to parse IMSC1: \" + error);\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_FRAG_PROCESSED, {\n success: false,\n frag: frag,\n error: error\n });\n });\n };\n\n _proto._parseVTTs = function _parseVTTs(frag, payload, vttCCs) {\n var _this5 = this;\n\n var hls = this.hls; // Parse the WebVTT file contents.\n\n Object(_utils_webvtt_parser__WEBPACK_IMPORTED_MODULE_4__[\"parseWebVTT\"])(payload, this.initPTS[frag.cc], this.timescale[frag.cc], vttCCs, frag.cc, frag.start, function (cues) {\n _this5._appendCues(cues, frag.level);\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_FRAG_PROCESSED, {\n success: true,\n frag: frag\n });\n }, function (error) {\n _this5._fallbackToIMSC1(frag, payload); // Something went wrong while parsing. Trigger event with success false.\n\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_8__[\"logger\"].log(\"Failed to parse VTT cue: \" + error);\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_FRAG_PROCESSED, {\n success: false,\n frag: frag,\n error: error\n });\n });\n };\n\n _proto._fallbackToIMSC1 = function _fallbackToIMSC1(frag, payload) {\n var _this6 = this; // If textCodec is unknown, try parsing as IMSC1. Set textCodec based on the result\n\n\n var trackPlaylistMedia = this.tracks[frag.level];\n\n if (!trackPlaylistMedia.textCodec) {\n Object(_utils_imsc1_ttml_parser__WEBPACK_IMPORTED_MODULE_6__[\"parseIMSC1\"])(payload, this.initPTS[frag.cc], this.timescale[frag.cc], function () {\n trackPlaylistMedia.textCodec = _utils_imsc1_ttml_parser__WEBPACK_IMPORTED_MODULE_6__[\"IMSC1_CODEC\"];\n\n _this6._parseIMSC1(frag, payload);\n }, function () {\n trackPlaylistMedia.textCodec = 'wvtt';\n });\n }\n };\n\n _proto._appendCues = function _appendCues(cues, fragLevel) {\n var hls = this.hls;\n\n if (this.config.renderTextTracksNatively) {\n var textTrack = this.textTracks[fragLevel]; // WebVTTParser.parse is an async method and if the currently selected text track mode is set to \"disabled\"\n // before parsing is done then don't try to access currentTrack.cues.getCueById as cues will be null\n // and trying to access getCueById method of cues will throw an exception\n // Because we check if the mode is disabled, we can force check `cues` below. They can't be null.\n\n if (textTrack.mode === 'disabled') {\n return;\n }\n\n cues.forEach(function (cue) {\n return Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_5__[\"addCueToTrack\"])(textTrack, cue);\n });\n } else {\n var currentTrack = this.tracks[fragLevel];\n var track = currentTrack.default ? 'default' : 'subtitles' + fragLevel;\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].CUES_PARSED, {\n type: 'subtitles',\n cues: cues,\n track: track\n });\n }\n };\n\n _proto.onFragDecrypted = function onFragDecrypted(event, data) {\n var frag = data.frag;\n\n if (frag.type === _types_loader__WEBPACK_IMPORTED_MODULE_7__[\"PlaylistLevelType\"].SUBTITLE) {\n if (!Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(this.initPTS[frag.cc])) {\n this.unparsedVttFrags.push(data);\n return;\n }\n\n this.onFragLoaded(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_LOADED, data);\n }\n };\n\n _proto.onSubtitleTracksCleared = function onSubtitleTracksCleared() {\n this.tracks = [];\n this.captionsTracks = {};\n };\n\n _proto.onFragParsingUserdata = function onFragParsingUserdata(event, data) {\n var cea608Parser1 = this.cea608Parser1,\n cea608Parser2 = this.cea608Parser2;\n\n if (!this.enabled || !(cea608Parser1 && cea608Parser2)) {\n return;\n } // If the event contains captions (found in the bytes property), push all bytes into the parser immediately\n // It will create the proper timestamps based on the PTS value\n\n\n for (var i = 0; i < data.samples.length; i++) {\n var ccBytes = data.samples[i].bytes;\n\n if (ccBytes) {\n var ccdatas = this.extractCea608Data(ccBytes);\n cea608Parser1.addData(data.samples[i].pts, ccdatas[0]);\n cea608Parser2.addData(data.samples[i].pts, ccdatas[1]);\n }\n }\n };\n\n _proto.onBufferFlushing = function onBufferFlushing(event, _ref2) {\n var startOffset = _ref2.startOffset,\n endOffset = _ref2.endOffset,\n endOffsetSubtitles = _ref2.endOffsetSubtitles,\n type = _ref2.type;\n var media = this.media;\n\n if (!media || media.currentTime < endOffset) {\n return;\n } // Clear 608 caption cues from the captions TextTracks when the video back buffer is flushed\n // Forward cues are never removed because we can loose streamed 608 content from recent fragments\n\n\n if (!type || type === 'video') {\n var captionsTracks = this.captionsTracks;\n Object.keys(captionsTracks).forEach(function (trackName) {\n return Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_5__[\"removeCuesInRange\"])(captionsTracks[trackName], startOffset, endOffset);\n });\n }\n\n if (this.config.renderTextTracksNatively) {\n // Clear VTT/IMSC1 subtitle cues from the subtitle TextTracks when the back buffer is flushed\n if (startOffset === 0 && endOffsetSubtitles !== undefined) {\n var textTracks = this.textTracks;\n Object.keys(textTracks).forEach(function (trackName) {\n return Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_5__[\"removeCuesInRange\"])(textTracks[trackName], startOffset, endOffsetSubtitles);\n });\n }\n }\n };\n\n _proto.extractCea608Data = function extractCea608Data(byteArray) {\n var count = byteArray[0] & 31;\n var position = 2;\n var actualCCBytes = [[], []];\n\n for (var j = 0; j < count; j++) {\n var tmpByte = byteArray[position++];\n var ccbyte1 = 0x7f & byteArray[position++];\n var ccbyte2 = 0x7f & byteArray[position++];\n var ccValid = (4 & tmpByte) !== 0;\n var ccType = 3 & tmpByte;\n\n if (ccbyte1 === 0 && ccbyte2 === 0) {\n continue;\n }\n\n if (ccValid) {\n if (ccType === 0 || ccType === 1) {\n actualCCBytes[ccType].push(ccbyte1);\n actualCCBytes[ccType].push(ccbyte2);\n }\n }\n }\n\n return actualCCBytes;\n };\n\n return TimelineController;\n }();\n\n function canReuseVttTextTrack(inUseTrack, manifestTrack) {\n return inUseTrack && inUseTrack.label === manifestTrack.name && !(inUseTrack.textTrack1 || inUseTrack.textTrack2);\n }\n\n function intersection(x1, x2, y1, y2) {\n return Math.min(x2, y2) - Math.max(x1, y1);\n }\n\n function newVTTCCs() {\n return {\n ccOffset: 0,\n presentationOffset: 0,\n 0: {\n start: 0,\n prevCC: -1,\n new: false\n }\n };\n }\n /***/\n\n },\n\n /***/\n \"./src/crypt/aes-crypto.ts\":\n /*!*********************************!*\\\n !*** ./src/crypt/aes-crypto.ts ***!\n \\*********************************/\n\n /*! exports provided: default */\n\n /***/\n function srcCryptAesCryptoTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"default\", function () {\n return AESCrypto;\n });\n\n var AESCrypto = /*#__PURE__*/function () {\n function AESCrypto(subtle, iv) {\n this.subtle = void 0;\n this.aesIV = void 0;\n this.subtle = subtle;\n this.aesIV = iv;\n }\n\n var _proto = AESCrypto.prototype;\n\n _proto.decrypt = function decrypt(data, key) {\n return this.subtle.decrypt({\n name: 'AES-CBC',\n iv: this.aesIV\n }, key, data);\n };\n\n return AESCrypto;\n }();\n /***/\n\n },\n\n /***/\n \"./src/crypt/aes-decryptor.ts\":\n /*!************************************!*\\\n !*** ./src/crypt/aes-decryptor.ts ***!\n \\************************************/\n\n /*! exports provided: removePadding, default */\n\n /***/\n function srcCryptAesDecryptorTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"removePadding\", function () {\n return removePadding;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"default\", function () {\n return AESDecryptor;\n });\n /* harmony import */\n\n\n var _utils_typed_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ../utils/typed-array */\n \"./src/utils/typed-array.ts\"); // PKCS7\n\n\n function removePadding(array) {\n var outputBytes = array.byteLength;\n var paddingBytes = outputBytes && new DataView(array.buffer).getUint8(outputBytes - 1);\n\n if (paddingBytes) {\n return Object(_utils_typed_array__WEBPACK_IMPORTED_MODULE_0__[\"sliceUint8\"])(array, 0, outputBytes - paddingBytes);\n }\n\n return array;\n }\n\n var AESDecryptor = /*#__PURE__*/function () {\n function AESDecryptor() {\n this.rcon = [0x0, 0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n this.subMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)];\n this.invSubMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)];\n this.sBox = new Uint32Array(256);\n this.invSBox = new Uint32Array(256);\n this.key = new Uint32Array(0);\n this.ksRows = 0;\n this.keySize = 0;\n this.keySchedule = void 0;\n this.invKeySchedule = void 0;\n this.initTable();\n } // Using view.getUint32() also swaps the byte order.\n\n\n var _proto = AESDecryptor.prototype;\n\n _proto.uint8ArrayToUint32Array_ = function uint8ArrayToUint32Array_(arrayBuffer) {\n var view = new DataView(arrayBuffer);\n var newArray = new Uint32Array(4);\n\n for (var i = 0; i < 4; i++) {\n newArray[i] = view.getUint32(i * 4);\n }\n\n return newArray;\n };\n\n _proto.initTable = function initTable() {\n var sBox = this.sBox;\n var invSBox = this.invSBox;\n var subMix = this.subMix;\n var subMix0 = subMix[0];\n var subMix1 = subMix[1];\n var subMix2 = subMix[2];\n var subMix3 = subMix[3];\n var invSubMix = this.invSubMix;\n var invSubMix0 = invSubMix[0];\n var invSubMix1 = invSubMix[1];\n var invSubMix2 = invSubMix[2];\n var invSubMix3 = invSubMix[3];\n var d = new Uint32Array(256);\n var x = 0;\n var xi = 0;\n var i = 0;\n\n for (i = 0; i < 256; i++) {\n if (i < 128) {\n d[i] = i << 1;\n } else {\n d[i] = i << 1 ^ 0x11b;\n }\n }\n\n for (i = 0; i < 256; i++) {\n var sx = xi ^ xi << 1 ^ xi << 2 ^ xi << 3 ^ xi << 4;\n sx = sx >>> 8 ^ sx & 0xff ^ 0x63;\n sBox[x] = sx;\n invSBox[sx] = x; // Compute multiplication\n\n var x2 = d[x];\n var x4 = d[x2];\n var x8 = d[x4]; // Compute sub/invSub bytes, mix columns tables\n\n var t = d[sx] * 0x101 ^ sx * 0x1010100;\n subMix0[x] = t << 24 | t >>> 8;\n subMix1[x] = t << 16 | t >>> 16;\n subMix2[x] = t << 8 | t >>> 24;\n subMix3[x] = t; // Compute inv sub bytes, inv mix columns tables\n\n t = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100;\n invSubMix0[sx] = t << 24 | t >>> 8;\n invSubMix1[sx] = t << 16 | t >>> 16;\n invSubMix2[sx] = t << 8 | t >>> 24;\n invSubMix3[sx] = t; // Compute next counter\n\n if (!x) {\n x = xi = 1;\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]];\n xi ^= d[d[xi]];\n }\n }\n };\n\n _proto.expandKey = function expandKey(keyBuffer) {\n // convert keyBuffer to Uint32Array\n var key = this.uint8ArrayToUint32Array_(keyBuffer);\n var sameKey = true;\n var offset = 0;\n\n while (offset < key.length && sameKey) {\n sameKey = key[offset] === this.key[offset];\n offset++;\n }\n\n if (sameKey) {\n return;\n }\n\n this.key = key;\n var keySize = this.keySize = key.length;\n\n if (keySize !== 4 && keySize !== 6 && keySize !== 8) {\n throw new Error('Invalid aes key size=' + keySize);\n }\n\n var ksRows = this.ksRows = (keySize + 6 + 1) * 4;\n var ksRow;\n var invKsRow;\n var keySchedule = this.keySchedule = new Uint32Array(ksRows);\n var invKeySchedule = this.invKeySchedule = new Uint32Array(ksRows);\n var sbox = this.sBox;\n var rcon = this.rcon;\n var invSubMix = this.invSubMix;\n var invSubMix0 = invSubMix[0];\n var invSubMix1 = invSubMix[1];\n var invSubMix2 = invSubMix[2];\n var invSubMix3 = invSubMix[3];\n var prev;\n var t;\n\n for (ksRow = 0; ksRow < ksRows; ksRow++) {\n if (ksRow < keySize) {\n prev = keySchedule[ksRow] = key[ksRow];\n continue;\n }\n\n t = prev;\n\n if (ksRow % keySize === 0) {\n // Rot word\n t = t << 8 | t >>> 24; // Sub word\n\n t = sbox[t >>> 24] << 24 | sbox[t >>> 16 & 0xff] << 16 | sbox[t >>> 8 & 0xff] << 8 | sbox[t & 0xff]; // Mix Rcon\n\n t ^= rcon[ksRow / keySize | 0] << 24;\n } else if (keySize > 6 && ksRow % keySize === 4) {\n // Sub word\n t = sbox[t >>> 24] << 24 | sbox[t >>> 16 & 0xff] << 16 | sbox[t >>> 8 & 0xff] << 8 | sbox[t & 0xff];\n }\n\n keySchedule[ksRow] = prev = (keySchedule[ksRow - keySize] ^ t) >>> 0;\n }\n\n for (invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n ksRow = ksRows - invKsRow;\n\n if (invKsRow & 3) {\n t = keySchedule[ksRow];\n } else {\n t = keySchedule[ksRow - 4];\n }\n\n if (invKsRow < 4 || ksRow <= 4) {\n invKeySchedule[invKsRow] = t;\n } else {\n invKeySchedule[invKsRow] = invSubMix0[sbox[t >>> 24]] ^ invSubMix1[sbox[t >>> 16 & 0xff]] ^ invSubMix2[sbox[t >>> 8 & 0xff]] ^ invSubMix3[sbox[t & 0xff]];\n }\n\n invKeySchedule[invKsRow] = invKeySchedule[invKsRow] >>> 0;\n }\n } // Adding this as a method greatly improves performance.\n ;\n\n _proto.networkToHostOrderSwap = function networkToHostOrderSwap(word) {\n return word << 24 | (word & 0xff00) << 8 | (word & 0xff0000) >> 8 | word >>> 24;\n };\n\n _proto.decrypt = function decrypt(inputArrayBuffer, offset, aesIV) {\n var nRounds = this.keySize + 6;\n var invKeySchedule = this.invKeySchedule;\n var invSBOX = this.invSBox;\n var invSubMix = this.invSubMix;\n var invSubMix0 = invSubMix[0];\n var invSubMix1 = invSubMix[1];\n var invSubMix2 = invSubMix[2];\n var invSubMix3 = invSubMix[3];\n var initVector = this.uint8ArrayToUint32Array_(aesIV);\n var initVector0 = initVector[0];\n var initVector1 = initVector[1];\n var initVector2 = initVector[2];\n var initVector3 = initVector[3];\n var inputInt32 = new Int32Array(inputArrayBuffer);\n var outputInt32 = new Int32Array(inputInt32.length);\n var t0, t1, t2, t3;\n var s0, s1, s2, s3;\n var inputWords0, inputWords1, inputWords2, inputWords3;\n var ksRow, i;\n var swapWord = this.networkToHostOrderSwap;\n\n while (offset < inputInt32.length) {\n inputWords0 = swapWord(inputInt32[offset]);\n inputWords1 = swapWord(inputInt32[offset + 1]);\n inputWords2 = swapWord(inputInt32[offset + 2]);\n inputWords3 = swapWord(inputInt32[offset + 3]);\n s0 = inputWords0 ^ invKeySchedule[0];\n s1 = inputWords3 ^ invKeySchedule[1];\n s2 = inputWords2 ^ invKeySchedule[2];\n s3 = inputWords1 ^ invKeySchedule[3];\n ksRow = 4; // Iterate through the rounds of decryption\n\n for (i = 1; i < nRounds; i++) {\n t0 = invSubMix0[s0 >>> 24] ^ invSubMix1[s1 >> 16 & 0xff] ^ invSubMix2[s2 >> 8 & 0xff] ^ invSubMix3[s3 & 0xff] ^ invKeySchedule[ksRow];\n t1 = invSubMix0[s1 >>> 24] ^ invSubMix1[s2 >> 16 & 0xff] ^ invSubMix2[s3 >> 8 & 0xff] ^ invSubMix3[s0 & 0xff] ^ invKeySchedule[ksRow + 1];\n t2 = invSubMix0[s2 >>> 24] ^ invSubMix1[s3 >> 16 & 0xff] ^ invSubMix2[s0 >> 8 & 0xff] ^ invSubMix3[s1 & 0xff] ^ invKeySchedule[ksRow + 2];\n t3 = invSubMix0[s3 >>> 24] ^ invSubMix1[s0 >> 16 & 0xff] ^ invSubMix2[s1 >> 8 & 0xff] ^ invSubMix3[s2 & 0xff] ^ invKeySchedule[ksRow + 3]; // Update state\n\n s0 = t0;\n s1 = t1;\n s2 = t2;\n s3 = t3;\n ksRow = ksRow + 4;\n } // Shift rows, sub bytes, add round key\n\n\n t0 = invSBOX[s0 >>> 24] << 24 ^ invSBOX[s1 >> 16 & 0xff] << 16 ^ invSBOX[s2 >> 8 & 0xff] << 8 ^ invSBOX[s3 & 0xff] ^ invKeySchedule[ksRow];\n t1 = invSBOX[s1 >>> 24] << 24 ^ invSBOX[s2 >> 16 & 0xff] << 16 ^ invSBOX[s3 >> 8 & 0xff] << 8 ^ invSBOX[s0 & 0xff] ^ invKeySchedule[ksRow + 1];\n t2 = invSBOX[s2 >>> 24] << 24 ^ invSBOX[s3 >> 16 & 0xff] << 16 ^ invSBOX[s0 >> 8 & 0xff] << 8 ^ invSBOX[s1 & 0xff] ^ invKeySchedule[ksRow + 2];\n t3 = invSBOX[s3 >>> 24] << 24 ^ invSBOX[s0 >> 16 & 0xff] << 16 ^ invSBOX[s1 >> 8 & 0xff] << 8 ^ invSBOX[s2 & 0xff] ^ invKeySchedule[ksRow + 3]; // Write\n\n outputInt32[offset] = swapWord(t0 ^ initVector0);\n outputInt32[offset + 1] = swapWord(t3 ^ initVector1);\n outputInt32[offset + 2] = swapWord(t2 ^ initVector2);\n outputInt32[offset + 3] = swapWord(t1 ^ initVector3); // reset initVector to last 4 unsigned int\n\n initVector0 = inputWords0;\n initVector1 = inputWords1;\n initVector2 = inputWords2;\n initVector3 = inputWords3;\n offset = offset + 4;\n }\n\n return outputInt32.buffer;\n };\n\n return AESDecryptor;\n }();\n /***/\n\n },\n\n /***/\n \"./src/crypt/decrypter.ts\":\n /*!********************************!*\\\n !*** ./src/crypt/decrypter.ts ***!\n \\********************************/\n\n /*! exports provided: default */\n\n /***/\n function srcCryptDecrypterTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"default\", function () {\n return Decrypter;\n });\n /* harmony import */\n\n\n var _aes_crypto__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./aes-crypto */\n \"./src/crypt/aes-crypto.ts\");\n /* harmony import */\n\n\n var _fast_aes_key__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ./fast-aes-key */\n \"./src/crypt/fast-aes-key.ts\");\n /* harmony import */\n\n\n var _aes_decryptor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ./aes-decryptor */\n \"./src/crypt/aes-decryptor.ts\");\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\n /*! ../utils/logger */\n \"./src/utils/logger.ts\");\n /* harmony import */\n\n\n var _utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\n /*! ../utils/mp4-tools */\n \"./src/utils/mp4-tools.ts\");\n /* harmony import */\n\n\n var _utils_typed_array__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(\n /*! ../utils/typed-array */\n \"./src/utils/typed-array.ts\");\n\n var CHUNK_SIZE = 16; // 16 bytes, 128 bits\n\n var Decrypter = /*#__PURE__*/function () {\n function Decrypter(observer, config, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$removePKCS7Paddi = _ref.removePKCS7Padding,\n removePKCS7Padding = _ref$removePKCS7Paddi === void 0 ? true : _ref$removePKCS7Paddi;\n\n this.logEnabled = true;\n this.observer = void 0;\n this.config = void 0;\n this.removePKCS7Padding = void 0;\n this.subtle = null;\n this.softwareDecrypter = null;\n this.key = null;\n this.fastAesKey = null;\n this.remainderData = null;\n this.currentIV = null;\n this.currentResult = null;\n this.observer = observer;\n this.config = config;\n this.removePKCS7Padding = removePKCS7Padding; // built in decryptor expects PKCS7 padding\n\n if (removePKCS7Padding) {\n try {\n var browserCrypto = self.crypto;\n\n if (browserCrypto) {\n this.subtle = browserCrypto.subtle || browserCrypto.webkitSubtle;\n }\n } catch (e) {\n /* no-op */\n }\n }\n\n if (this.subtle === null) {\n this.config.enableSoftwareAES = true;\n }\n }\n\n var _proto = Decrypter.prototype;\n\n _proto.destroy = function destroy() {\n // @ts-ignore\n this.observer = null;\n };\n\n _proto.isSync = function isSync() {\n return this.config.enableSoftwareAES;\n };\n\n _proto.flush = function flush() {\n var currentResult = this.currentResult;\n\n if (!currentResult) {\n this.reset();\n return;\n }\n\n var data = new Uint8Array(currentResult);\n this.reset();\n\n if (this.removePKCS7Padding) {\n return Object(_aes_decryptor__WEBPACK_IMPORTED_MODULE_2__[\"removePadding\"])(data);\n }\n\n return data;\n };\n\n _proto.reset = function reset() {\n this.currentResult = null;\n this.currentIV = null;\n this.remainderData = null;\n\n if (this.softwareDecrypter) {\n this.softwareDecrypter = null;\n }\n };\n\n _proto.decrypt = function decrypt(data, key, iv, callback) {\n if (this.config.enableSoftwareAES) {\n this.softwareDecrypt(new Uint8Array(data), key, iv);\n var decryptResult = this.flush();\n\n if (decryptResult) {\n callback(decryptResult.buffer);\n }\n } else {\n this.webCryptoDecrypt(new Uint8Array(data), key, iv).then(callback);\n }\n };\n\n _proto.softwareDecrypt = function softwareDecrypt(data, key, iv) {\n var currentIV = this.currentIV,\n currentResult = this.currentResult,\n remainderData = this.remainderData;\n this.logOnce('JS AES decrypt'); // The output is staggered during progressive parsing - the current result is cached, and emitted on the next call\n // This is done in order to strip PKCS7 padding, which is found at the end of each segment. We only know we've reached\n // the end on flush(), but by that time we have already received all bytes for the segment.\n // Progressive decryption does not work with WebCrypto\n\n if (remainderData) {\n data = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__[\"appendUint8Array\"])(remainderData, data);\n this.remainderData = null;\n } // Byte length must be a multiple of 16 (AES-128 = 128 bit blocks = 16 bytes)\n\n\n var currentChunk = this.getValidChunk(data);\n\n if (!currentChunk.length) {\n return null;\n }\n\n if (currentIV) {\n iv = currentIV;\n }\n\n var softwareDecrypter = this.softwareDecrypter;\n\n if (!softwareDecrypter) {\n softwareDecrypter = this.softwareDecrypter = new _aes_decryptor__WEBPACK_IMPORTED_MODULE_2__[\"default\"]();\n }\n\n softwareDecrypter.expandKey(key);\n var result = currentResult;\n this.currentResult = softwareDecrypter.decrypt(currentChunk.buffer, 0, iv);\n this.currentIV = Object(_utils_typed_array__WEBPACK_IMPORTED_MODULE_5__[\"sliceUint8\"])(currentChunk, -16).buffer;\n\n if (!result) {\n return null;\n }\n\n return result;\n };\n\n _proto.webCryptoDecrypt = function webCryptoDecrypt(data, key, iv) {\n var _this = this;\n\n var subtle = this.subtle;\n\n if (this.key !== key || !this.fastAesKey) {\n this.key = key;\n this.fastAesKey = new _fast_aes_key__WEBPACK_IMPORTED_MODULE_1__[\"default\"](subtle, key);\n }\n\n return this.fastAesKey.expandKey().then(function (aesKey) {\n // decrypt using web crypto\n if (!subtle) {\n return Promise.reject(new Error('web crypto not initialized'));\n }\n\n var crypto = new _aes_crypto__WEBPACK_IMPORTED_MODULE_0__[\"default\"](subtle, iv);\n return crypto.decrypt(data.buffer, aesKey);\n }).catch(function (err) {\n return _this.onWebCryptoError(err, data, key, iv);\n });\n };\n\n _proto.onWebCryptoError = function onWebCryptoError(err, data, key, iv) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn('[decrypter.ts]: WebCrypto Error, disable WebCrypto API:', err);\n\n this.config.enableSoftwareAES = true;\n this.logEnabled = true;\n return this.softwareDecrypt(data, key, iv);\n };\n\n _proto.getValidChunk = function getValidChunk(data) {\n var currentChunk = data;\n var splitPoint = data.length - data.length % CHUNK_SIZE;\n\n if (splitPoint !== data.length) {\n currentChunk = Object(_utils_typed_array__WEBPACK_IMPORTED_MODULE_5__[\"sliceUint8\"])(data, 0, splitPoint);\n this.remainderData = Object(_utils_typed_array__WEBPACK_IMPORTED_MODULE_5__[\"sliceUint8\"])(data, splitPoint);\n }\n\n return currentChunk;\n };\n\n _proto.logOnce = function logOnce(msg) {\n if (!this.logEnabled) {\n return;\n }\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].log(\"[decrypter.ts]: \" + msg);\n\n this.logEnabled = false;\n };\n\n return Decrypter;\n }();\n /***/\n\n },\n\n /***/\n \"./src/crypt/fast-aes-key.ts\":\n /*!***********************************!*\\\n !*** ./src/crypt/fast-aes-key.ts ***!\n \\***********************************/\n\n /*! exports provided: default */\n\n /***/\n function srcCryptFastAesKeyTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"default\", function () {\n return FastAESKey;\n });\n\n var FastAESKey = /*#__PURE__*/function () {\n function FastAESKey(subtle, key) {\n this.subtle = void 0;\n this.key = void 0;\n this.subtle = subtle;\n this.key = key;\n }\n\n var _proto = FastAESKey.prototype;\n\n _proto.expandKey = function expandKey() {\n return this.subtle.importKey('raw', this.key, {\n name: 'AES-CBC'\n }, false, ['encrypt', 'decrypt']);\n };\n\n return FastAESKey;\n }();\n /***/\n\n },\n\n /***/\n \"./src/demux/aacdemuxer.ts\":\n /*!*********************************!*\\\n !*** ./src/demux/aacdemuxer.ts ***!\n \\*********************************/\n\n /*! exports provided: default */\n\n /***/\n function srcDemuxAacdemuxerTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony import */\n\n\n var _base_audio_demuxer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./base-audio-demuxer */\n \"./src/demux/base-audio-demuxer.ts\");\n /* harmony import */\n\n\n var _adts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ./adts */\n \"./src/demux/adts.ts\");\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ../utils/logger */\n \"./src/utils/logger.ts\");\n /* harmony import */\n\n\n var _demux_id3__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\n /*! ../demux/id3 */\n \"./src/demux/id3.ts\");\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n }\n /**\n * AAC demuxer\n */\n\n\n var AACDemuxer = /*#__PURE__*/function (_BaseAudioDemuxer) {\n _inheritsLoose(AACDemuxer, _BaseAudioDemuxer);\n\n function AACDemuxer(observer, config) {\n var _this;\n\n _this = _BaseAudioDemuxer.call(this) || this;\n _this.observer = void 0;\n _this.config = void 0;\n _this.observer = observer;\n _this.config = config;\n return _this;\n }\n\n var _proto = AACDemuxer.prototype;\n\n _proto.resetInitSegment = function resetInitSegment(audioCodec, videoCodec, duration) {\n _BaseAudioDemuxer.prototype.resetInitSegment.call(this, audioCodec, videoCodec, duration);\n\n this._audioTrack = {\n container: 'audio/adts',\n type: 'audio',\n id: 2,\n pid: -1,\n sequenceNumber: 0,\n isAAC: true,\n samples: [],\n manifestCodec: audioCodec,\n duration: duration,\n inputTimeScale: 90000,\n dropped: 0\n };\n } // Source for probe info - https://wiki.multimedia.cx/index.php?title=ADTS\n ;\n\n AACDemuxer.probe = function probe(data) {\n if (!data) {\n return false;\n } // Check for the ADTS sync word\n // Look for ADTS header | 1111 1111 | 1111 X00X | where X can be either 0 or 1\n // Layer bits (position 14 and 15) in header should be always 0 for ADTS\n // More info https://wiki.multimedia.cx/index.php?title=ADTS\n\n\n var id3Data = _demux_id3__WEBPACK_IMPORTED_MODULE_3__[\"getID3Data\"](data, 0) || [];\n var offset = id3Data.length;\n\n for (var length = data.length; offset < length; offset++) {\n if (_adts__WEBPACK_IMPORTED_MODULE_1__[\"probe\"](data, offset)) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('ADTS sync word found !');\n\n return true;\n }\n }\n\n return false;\n };\n\n _proto.canParse = function canParse(data, offset) {\n return _adts__WEBPACK_IMPORTED_MODULE_1__[\"canParse\"](data, offset);\n };\n\n _proto.appendFrame = function appendFrame(track, data, offset) {\n _adts__WEBPACK_IMPORTED_MODULE_1__[\"initTrackConfig\"](track, this.observer, data, offset, track.manifestCodec);\n\n var frame = _adts__WEBPACK_IMPORTED_MODULE_1__[\"appendFrame\"](track, data, offset, this.initPTS, this.frameIndex);\n\n if (frame && frame.missing === 0) {\n return frame;\n }\n };\n\n return AACDemuxer;\n }(_base_audio_demuxer__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n AACDemuxer.minProbeByteLength = 9;\n /* harmony default export */\n\n __webpack_exports__[\"default\"] = AACDemuxer;\n /***/\n },\n\n /***/\n \"./src/demux/adts.ts\":\n /*!***************************!*\\\n !*** ./src/demux/adts.ts ***!\n \\***************************/\n\n /*! exports provided: getAudioConfig, isHeaderPattern, getHeaderLength, getFullFrameLength, canGetFrameLength, isHeader, canParse, probe, initTrackConfig, getFrameDuration, parseFrameHeader, appendFrame */\n\n /***/\n function srcDemuxAdtsTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"getAudioConfig\", function () {\n return getAudioConfig;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"isHeaderPattern\", function () {\n return isHeaderPattern;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"getHeaderLength\", function () {\n return getHeaderLength;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"getFullFrameLength\", function () {\n return getFullFrameLength;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"canGetFrameLength\", function () {\n return canGetFrameLength;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"isHeader\", function () {\n return isHeader;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"canParse\", function () {\n return canParse;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"probe\", function () {\n return probe;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"initTrackConfig\", function () {\n return initTrackConfig;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"getFrameDuration\", function () {\n return getFrameDuration;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"parseFrameHeader\", function () {\n return parseFrameHeader;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"appendFrame\", function () {\n return appendFrame;\n });\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ../utils/logger */\n \"./src/utils/logger.ts\");\n /* harmony import */\n\n\n var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ../errors */\n \"./src/errors.ts\");\n /* harmony import */\n\n\n var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ../events */\n \"./src/events.ts\");\n /**\n * ADTS parser helper\n * @link https://wiki.multimedia.cx/index.php?title=ADTS\n */\n\n\n function getAudioConfig(observer, data, offset, audioCodec) {\n var adtsObjectType;\n var adtsExtensionSamplingIndex;\n var adtsChanelConfig;\n var config;\n var userAgent = navigator.userAgent.toLowerCase();\n var manifestCodec = audioCodec;\n var adtsSampleingRates = [96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, 7350]; // byte 2\n\n adtsObjectType = ((data[offset + 2] & 0xc0) >>> 6) + 1;\n var adtsSamplingIndex = (data[offset + 2] & 0x3c) >>> 2;\n\n if (adtsSamplingIndex > adtsSampleingRates.length - 1) {\n observer.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].FRAG_PARSING_ERROR,\n fatal: true,\n reason: \"invalid ADTS sampling index:\" + adtsSamplingIndex\n });\n return;\n }\n\n adtsChanelConfig = (data[offset + 2] & 0x01) << 2; // byte 3\n\n adtsChanelConfig |= (data[offset + 3] & 0xc0) >>> 6;\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_0__[\"logger\"].log(\"manifest codec:\" + audioCodec + \", ADTS type:\" + adtsObjectType + \", samplingIndex:\" + adtsSamplingIndex); // firefox: freq less than 24kHz = AAC SBR (HE-AAC)\n\n\n if (/firefox/i.test(userAgent)) {\n if (adtsSamplingIndex >= 6) {\n adtsObjectType = 5;\n config = new Array(4); // HE-AAC uses SBR (Spectral Band Replication) , high frequencies are constructed from low frequencies\n // there is a factor 2 between frame sample rate and output sample rate\n // multiply frequency by 2 (see table below, equivalent to substract 3)\n\n adtsExtensionSamplingIndex = adtsSamplingIndex - 3;\n } else {\n adtsObjectType = 2;\n config = new Array(2);\n adtsExtensionSamplingIndex = adtsSamplingIndex;\n } // Android : always use AAC\n\n } else if (userAgent.indexOf('android') !== -1) {\n adtsObjectType = 2;\n config = new Array(2);\n adtsExtensionSamplingIndex = adtsSamplingIndex;\n } else {\n /* for other browsers (Chrome/Vivaldi/Opera ...)\n always force audio type to be HE-AAC SBR, as some browsers do not support audio codec switch properly (like Chrome ...)\n */\n adtsObjectType = 5;\n config = new Array(4); // if (manifest codec is HE-AAC or HE-AACv2) OR (manifest codec not specified AND frequency less than 24kHz)\n\n if (audioCodec && (audioCodec.indexOf('mp4a.40.29') !== -1 || audioCodec.indexOf('mp4a.40.5') !== -1) || !audioCodec && adtsSamplingIndex >= 6) {\n // HE-AAC uses SBR (Spectral Band Replication) , high frequencies are constructed from low frequencies\n // there is a factor 2 between frame sample rate and output sample rate\n // multiply frequency by 2 (see table below, equivalent to substract 3)\n adtsExtensionSamplingIndex = adtsSamplingIndex - 3;\n } else {\n // if (manifest codec is AAC) AND (frequency less than 24kHz AND nb channel is 1) OR (manifest codec not specified and mono audio)\n // Chrome fails to play back with low frequency AAC LC mono when initialized with HE-AAC. This is not a problem with stereo.\n if (audioCodec && audioCodec.indexOf('mp4a.40.2') !== -1 && (adtsSamplingIndex >= 6 && adtsChanelConfig === 1 || /vivaldi/i.test(userAgent)) || !audioCodec && adtsChanelConfig === 1) {\n adtsObjectType = 2;\n config = new Array(2);\n }\n\n adtsExtensionSamplingIndex = adtsSamplingIndex;\n }\n }\n /* refer to http://wiki.multimedia.cx/index.php?title=MPEG-4_Audio#Audio_Specific_Config\n ISO 14496-3 (AAC).pdf - Table 1.13 — Syntax of AudioSpecificConfig()\n Audio Profile / Audio Object Type\n 0: Null\n 1: AAC Main\n 2: AAC LC (Low Complexity)\n 3: AAC SSR (Scalable Sample Rate)\n 4: AAC LTP (Long Term Prediction)\n 5: SBR (Spectral Band Replication)\n 6: AAC Scalable\n sampling freq\n 0: 96000 Hz\n 1: 88200 Hz\n 2: 64000 Hz\n 3: 48000 Hz\n 4: 44100 Hz\n 5: 32000 Hz\n 6: 24000 Hz\n 7: 22050 Hz\n 8: 16000 Hz\n 9: 12000 Hz\n 10: 11025 Hz\n 11: 8000 Hz\n 12: 7350 Hz\n 13: Reserved\n 14: Reserved\n 15: frequency is written explictly\n Channel Configurations\n These are the channel configurations:\n 0: Defined in AOT Specifc Config\n 1: 1 channel: front-center\n 2: 2 channels: front-left, front-right\n */\n // audioObjectType = profile => profile, the MPEG-4 Audio Object Type minus 1\n\n\n config[0] = adtsObjectType << 3; // samplingFrequencyIndex\n\n config[0] |= (adtsSamplingIndex & 0x0e) >> 1;\n config[1] |= (adtsSamplingIndex & 0x01) << 7; // channelConfiguration\n\n config[1] |= adtsChanelConfig << 3;\n\n if (adtsObjectType === 5) {\n // adtsExtensionSampleingIndex\n config[1] |= (adtsExtensionSamplingIndex & 0x0e) >> 1;\n config[2] = (adtsExtensionSamplingIndex & 0x01) << 7; // adtsObjectType (force to 2, chrome is checking that object type is less than 5 ???\n // https://chromium.googlesource.com/chromium/src.git/+/master/media/formats/mp4/aac.cc\n\n config[2] |= 2 << 2;\n config[3] = 0;\n }\n\n return {\n config: config,\n samplerate: adtsSampleingRates[adtsSamplingIndex],\n channelCount: adtsChanelConfig,\n codec: 'mp4a.40.' + adtsObjectType,\n manifestCodec: manifestCodec\n };\n }\n\n function isHeaderPattern(data, offset) {\n return data[offset] === 0xff && (data[offset + 1] & 0xf6) === 0xf0;\n }\n\n function getHeaderLength(data, offset) {\n return data[offset + 1] & 0x01 ? 7 : 9;\n }\n\n function getFullFrameLength(data, offset) {\n return (data[offset + 3] & 0x03) << 11 | data[offset + 4] << 3 | (data[offset + 5] & 0xe0) >>> 5;\n }\n\n function canGetFrameLength(data, offset) {\n return offset + 5 < data.length;\n }\n\n function isHeader(data, offset) {\n // Look for ADTS header | 1111 1111 | 1111 X00X | where X can be either 0 or 1\n // Layer bits (position 14 and 15) in header should be always 0 for ADTS\n // More info https://wiki.multimedia.cx/index.php?title=ADTS\n return offset + 1 < data.length && isHeaderPattern(data, offset);\n }\n\n function canParse(data, offset) {\n return canGetFrameLength(data, offset) && isHeaderPattern(data, offset) && getFullFrameLength(data, offset) <= data.length - offset;\n }\n\n function probe(data, offset) {\n // same as isHeader but we also check that ADTS frame follows last ADTS frame\n // or end of data is reached\n if (isHeader(data, offset)) {\n // ADTS header Length\n var headerLength = getHeaderLength(data, offset);\n\n if (offset + headerLength >= data.length) {\n return false;\n } // ADTS frame Length\n\n\n var frameLength = getFullFrameLength(data, offset);\n\n if (frameLength <= headerLength) {\n return false;\n }\n\n var newOffset = offset + frameLength;\n return newOffset === data.length || isHeader(data, newOffset);\n }\n\n return false;\n }\n\n function initTrackConfig(track, observer, data, offset, audioCodec) {\n if (!track.samplerate) {\n var config = getAudioConfig(observer, data, offset, audioCodec);\n\n if (!config) {\n return;\n }\n\n track.config = config.config;\n track.samplerate = config.samplerate;\n track.channelCount = config.channelCount;\n track.codec = config.codec;\n track.manifestCodec = config.manifestCodec;\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_0__[\"logger\"].log(\"parsed codec:\" + track.codec + \", rate:\" + config.samplerate + \", channels:\" + config.channelCount);\n }\n }\n\n function getFrameDuration(samplerate) {\n return 1024 * 90000 / samplerate;\n }\n\n function parseFrameHeader(data, offset, pts, frameIndex, frameDuration) {\n // The protection skip bit tells us if we have 2 bytes of CRC data at the end of the ADTS header\n var headerLength = getHeaderLength(data, offset); // retrieve frame size\n\n var frameLength = getFullFrameLength(data, offset);\n frameLength -= headerLength;\n\n if (frameLength > 0) {\n var stamp = pts + frameIndex * frameDuration; // logger.log(`AAC frame, offset/length/total/pts:${offset+headerLength}/${frameLength}/${data.byteLength}/${(stamp/90).toFixed(0)}`);\n\n return {\n headerLength: headerLength,\n frameLength: frameLength,\n stamp: stamp\n };\n }\n }\n\n function appendFrame(track, data, offset, pts, frameIndex) {\n var frameDuration = getFrameDuration(track.samplerate);\n var header = parseFrameHeader(data, offset, pts, frameIndex, frameDuration);\n\n if (header) {\n var frameLength = header.frameLength,\n headerLength = header.headerLength,\n stamp = header.stamp;\n var length = headerLength + frameLength;\n var missing = Math.max(0, offset + length - data.length); // logger.log(`AAC frame ${frameIndex}, pts:${stamp} length@offset/total: ${frameLength}@${offset+headerLength}/${data.byteLength} missing: ${missing}`);\n\n var unit;\n\n if (missing) {\n unit = new Uint8Array(length - headerLength);\n unit.set(data.subarray(offset + headerLength, data.length), 0);\n } else {\n unit = data.subarray(offset + headerLength, offset + length);\n }\n\n var sample = {\n unit: unit,\n pts: stamp\n };\n\n if (!missing) {\n track.samples.push(sample);\n }\n\n return {\n sample: sample,\n length: length,\n missing: missing\n };\n }\n }\n /***/\n\n },\n\n /***/\n \"./src/demux/base-audio-demuxer.ts\":\n /*!*****************************************!*\\\n !*** ./src/demux/base-audio-demuxer.ts ***!\n \\*****************************************/\n\n /*! exports provided: initPTSFn, default */\n\n /***/\n function srcDemuxBaseAudioDemuxerTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"initPTSFn\", function () {\n return initPTSFn;\n });\n /* harmony import */\n\n\n var _home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./src/polyfills/number */\n \"./src/polyfills/number.ts\");\n /* harmony import */\n\n\n var _demux_id3__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ../demux/id3 */\n \"./src/demux/id3.ts\");\n /* harmony import */\n\n\n var _dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ./dummy-demuxed-track */\n \"./src/demux/dummy-demuxed-track.ts\");\n /* harmony import */\n\n\n var _utils_mp4_tools__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\n /*! ../utils/mp4-tools */\n \"./src/utils/mp4-tools.ts\");\n /* harmony import */\n\n\n var _utils_typed_array__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\n /*! ../utils/typed-array */\n \"./src/utils/typed-array.ts\");\n\n var BaseAudioDemuxer = /*#__PURE__*/function () {\n function BaseAudioDemuxer() {\n this._audioTrack = void 0;\n this._id3Track = void 0;\n this.frameIndex = 0;\n this.cachedData = null;\n this.initPTS = null;\n }\n\n var _proto = BaseAudioDemuxer.prototype;\n\n _proto.resetInitSegment = function resetInitSegment(audioCodec, videoCodec, duration) {\n this._id3Track = {\n type: 'id3',\n id: 3,\n pid: -1,\n inputTimeScale: 90000,\n sequenceNumber: 0,\n samples: [],\n dropped: 0\n };\n };\n\n _proto.resetTimeStamp = function resetTimeStamp() {};\n\n _proto.resetContiguity = function resetContiguity() {};\n\n _proto.canParse = function canParse(data, offset) {\n return false;\n };\n\n _proto.appendFrame = function appendFrame(track, data, offset) {} // feed incoming data to the front of the parsing pipeline\n ;\n\n _proto.demux = function demux(data, timeOffset) {\n if (this.cachedData) {\n data = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_3__[\"appendUint8Array\"])(this.cachedData, data);\n this.cachedData = null;\n }\n\n var id3Data = _demux_id3__WEBPACK_IMPORTED_MODULE_1__[\"getID3Data\"](data, 0);\n\n var offset = id3Data ? id3Data.length : 0;\n var lastDataIndex;\n var pts;\n var track = this._audioTrack;\n var id3Track = this._id3Track;\n var timestamp = id3Data ? _demux_id3__WEBPACK_IMPORTED_MODULE_1__[\"getTimeStamp\"](id3Data) : undefined;\n var length = data.length;\n\n if (this.frameIndex === 0 || this.initPTS === null) {\n this.initPTS = initPTSFn(timestamp, timeOffset);\n } // more expressive than alternative: id3Data?.length\n\n\n if (id3Data && id3Data.length > 0) {\n id3Track.samples.push({\n pts: this.initPTS,\n dts: this.initPTS,\n data: id3Data\n });\n }\n\n pts = this.initPTS;\n\n while (offset < length) {\n if (this.canParse(data, offset)) {\n var frame = this.appendFrame(track, data, offset);\n\n if (frame) {\n this.frameIndex++;\n pts = frame.sample.pts;\n offset += frame.length;\n lastDataIndex = offset;\n } else {\n offset = length;\n }\n } else if (_demux_id3__WEBPACK_IMPORTED_MODULE_1__[\"canParse\"](data, offset)) {\n // after a ID3.canParse, a call to ID3.getID3Data *should* always returns some data\n id3Data = _demux_id3__WEBPACK_IMPORTED_MODULE_1__[\"getID3Data\"](data, offset);\n id3Track.samples.push({\n pts: pts,\n dts: pts,\n data: id3Data\n });\n offset += id3Data.length;\n lastDataIndex = offset;\n } else {\n offset++;\n }\n\n if (offset === length && lastDataIndex !== length) {\n var partialData = Object(_utils_typed_array__WEBPACK_IMPORTED_MODULE_4__[\"sliceUint8\"])(data, lastDataIndex);\n\n if (this.cachedData) {\n this.cachedData = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_3__[\"appendUint8Array\"])(this.cachedData, partialData);\n } else {\n this.cachedData = partialData;\n }\n }\n }\n\n return {\n audioTrack: track,\n avcTrack: Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_2__[\"dummyTrack\"])(),\n id3Track: id3Track,\n textTrack: Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_2__[\"dummyTrack\"])()\n };\n };\n\n _proto.demuxSampleAes = function demuxSampleAes(data, keyData, timeOffset) {\n return Promise.reject(new Error(\"[\" + this + \"] This demuxer does not support Sample-AES decryption\"));\n };\n\n _proto.flush = function flush(timeOffset) {\n // Parse cache in case of remaining frames.\n var cachedData = this.cachedData;\n\n if (cachedData) {\n this.cachedData = null;\n this.demux(cachedData, 0);\n }\n\n this.frameIndex = 0;\n return {\n audioTrack: this._audioTrack,\n avcTrack: Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_2__[\"dummyTrack\"])(),\n id3Track: this._id3Track,\n textTrack: Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_2__[\"dummyTrack\"])()\n };\n };\n\n _proto.destroy = function destroy() {};\n\n return BaseAudioDemuxer;\n }();\n /**\n * Initialize PTS\n * \n * use timestamp unless it is undefined, NaN or Infinity\n *
\n */\n\n\n var initPTSFn = function initPTSFn(timestamp, timeOffset) {\n return Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(timestamp) ? timestamp * 90 : timeOffset * 90000;\n };\n /* harmony default export */\n\n\n __webpack_exports__[\"default\"] = BaseAudioDemuxer;\n /***/\n },\n\n /***/\n \"./src/demux/chunk-cache.ts\":\n /*!**********************************!*\\\n !*** ./src/demux/chunk-cache.ts ***!\n \\**********************************/\n\n /*! exports provided: default */\n\n /***/\n function srcDemuxChunkCacheTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"default\", function () {\n return ChunkCache;\n });\n\n var ChunkCache = /*#__PURE__*/function () {\n function ChunkCache() {\n this.chunks = [];\n this.dataLength = 0;\n }\n\n var _proto = ChunkCache.prototype;\n\n _proto.push = function push(chunk) {\n this.chunks.push(chunk);\n this.dataLength += chunk.length;\n };\n\n _proto.flush = function flush() {\n var chunks = this.chunks,\n dataLength = this.dataLength;\n var result;\n\n if (!chunks.length) {\n return new Uint8Array(0);\n } else if (chunks.length === 1) {\n result = chunks[0];\n } else {\n result = concatUint8Arrays(chunks, dataLength);\n }\n\n this.reset();\n return result;\n };\n\n _proto.reset = function reset() {\n this.chunks.length = 0;\n this.dataLength = 0;\n };\n\n return ChunkCache;\n }();\n\n function concatUint8Arrays(chunks, dataLength) {\n var result = new Uint8Array(dataLength);\n var offset = 0;\n\n for (var i = 0; i < chunks.length; i++) {\n var chunk = chunks[i];\n result.set(chunk, offset);\n offset += chunk.length;\n }\n\n return result;\n }\n /***/\n\n },\n\n /***/\n \"./src/demux/dummy-demuxed-track.ts\":\n /*!******************************************!*\\\n !*** ./src/demux/dummy-demuxed-track.ts ***!\n \\******************************************/\n\n /*! exports provided: dummyTrack */\n\n /***/\n function srcDemuxDummyDemuxedTrackTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"dummyTrack\", function () {\n return dummyTrack;\n });\n\n function dummyTrack() {\n return {\n type: '',\n id: -1,\n pid: -1,\n inputTimeScale: 90000,\n sequenceNumber: -1,\n samples: [],\n dropped: 0\n };\n }\n /***/\n\n },\n\n /***/\n \"./src/demux/exp-golomb.ts\":\n /*!*********************************!*\\\n !*** ./src/demux/exp-golomb.ts ***!\n \\*********************************/\n\n /*! exports provided: default */\n\n /***/\n function srcDemuxExpGolombTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ../utils/logger */\n \"./src/utils/logger.ts\");\n /**\n * Parser for exponential Golomb codes, a variable-bitwidth number encoding scheme used by h264.\n */\n\n\n var ExpGolomb = /*#__PURE__*/function () {\n function ExpGolomb(data) {\n this.data = void 0;\n this.bytesAvailable = void 0;\n this.word = void 0;\n this.bitsAvailable = void 0;\n this.data = data; // the number of bytes left to examine in this.data\n\n this.bytesAvailable = data.byteLength; // the current word being examined\n\n this.word = 0; // :uint\n // the number of bits left to examine in the current word\n\n this.bitsAvailable = 0; // :uint\n } // ():void\n\n\n var _proto = ExpGolomb.prototype;\n\n _proto.loadWord = function loadWord() {\n var data = this.data;\n var bytesAvailable = this.bytesAvailable;\n var position = data.byteLength - bytesAvailable;\n var workingBytes = new Uint8Array(4);\n var availableBytes = Math.min(4, bytesAvailable);\n\n if (availableBytes === 0) {\n throw new Error('no bytes available');\n }\n\n workingBytes.set(data.subarray(position, position + availableBytes));\n this.word = new DataView(workingBytes.buffer).getUint32(0); // track the amount of this.data that has been processed\n\n this.bitsAvailable = availableBytes * 8;\n this.bytesAvailable -= availableBytes;\n } // (count:int):void\n ;\n\n _proto.skipBits = function skipBits(count) {\n var skipBytes; // :int\n\n if (this.bitsAvailable > count) {\n this.word <<= count;\n this.bitsAvailable -= count;\n } else {\n count -= this.bitsAvailable;\n skipBytes = count >> 3;\n count -= skipBytes >> 3;\n this.bytesAvailable -= skipBytes;\n this.loadWord();\n this.word <<= count;\n this.bitsAvailable -= count;\n }\n } // (size:int):uint\n ;\n\n _proto.readBits = function readBits(size) {\n var bits = Math.min(this.bitsAvailable, size); // :uint\n\n var valu = this.word >>> 32 - bits; // :uint\n\n if (size > 32) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_0__[\"logger\"].error('Cannot read more than 32 bits at a time');\n }\n\n this.bitsAvailable -= bits;\n\n if (this.bitsAvailable > 0) {\n this.word <<= bits;\n } else if (this.bytesAvailable > 0) {\n this.loadWord();\n }\n\n bits = size - bits;\n\n if (bits > 0 && this.bitsAvailable) {\n return valu << bits | this.readBits(bits);\n } else {\n return valu;\n }\n } // ():uint\n ;\n\n _proto.skipLZ = function skipLZ() {\n var leadingZeroCount; // :uint\n\n for (leadingZeroCount = 0; leadingZeroCount < this.bitsAvailable; ++leadingZeroCount) {\n if ((this.word & 0x80000000 >>> leadingZeroCount) !== 0) {\n // the first bit of working word is 1\n this.word <<= leadingZeroCount;\n this.bitsAvailable -= leadingZeroCount;\n return leadingZeroCount;\n }\n } // we exhausted word and still have not found a 1\n\n\n this.loadWord();\n return leadingZeroCount + this.skipLZ();\n } // ():void\n ;\n\n _proto.skipUEG = function skipUEG() {\n this.skipBits(1 + this.skipLZ());\n } // ():void\n ;\n\n _proto.skipEG = function skipEG() {\n this.skipBits(1 + this.skipLZ());\n } // ():uint\n ;\n\n _proto.readUEG = function readUEG() {\n var clz = this.skipLZ(); // :uint\n\n return this.readBits(clz + 1) - 1;\n } // ():int\n ;\n\n _proto.readEG = function readEG() {\n var valu = this.readUEG(); // :int\n\n if (0x01 & valu) {\n // the number is odd if the low order bit is set\n return 1 + valu >>> 1; // add 1 to make it even, and divide by 2\n } else {\n return -1 * (valu >>> 1); // divide by two then make it negative\n }\n } // Some convenience functions\n // :Boolean\n ;\n\n _proto.readBoolean = function readBoolean() {\n return this.readBits(1) === 1;\n } // ():int\n ;\n\n _proto.readUByte = function readUByte() {\n return this.readBits(8);\n } // ():int\n ;\n\n _proto.readUShort = function readUShort() {\n return this.readBits(16);\n } // ():int\n ;\n\n _proto.readUInt = function readUInt() {\n return this.readBits(32);\n }\n /**\n * Advance the ExpGolomb decoder past a scaling list. The scaling\n * list is optionally transmitted as part of a sequence parameter\n * set and is not relevant to transmuxing.\n * @param count the number of entries in this scaling list\n * @see Recommendation ITU-T H.264, Section 7.3.2.1.1.1\n */\n ;\n\n _proto.skipScalingList = function skipScalingList(count) {\n var lastScale = 8;\n var nextScale = 8;\n var deltaScale;\n\n for (var j = 0; j < count; j++) {\n if (nextScale !== 0) {\n deltaScale = this.readEG();\n nextScale = (lastScale + deltaScale + 256) % 256;\n }\n\n lastScale = nextScale === 0 ? lastScale : nextScale;\n }\n }\n /**\n * Read a sequence parameter set and return some interesting video\n * properties. A sequence parameter set is the H264 metadata that\n * describes the properties of upcoming video frames.\n * @param data {Uint8Array} the bytes of a sequence parameter set\n * @return {object} an object with configuration parsed from the\n * sequence parameter set, including the dimensions of the\n * associated video frames.\n */\n ;\n\n _proto.readSPS = function readSPS() {\n var frameCropLeftOffset = 0;\n var frameCropRightOffset = 0;\n var frameCropTopOffset = 0;\n var frameCropBottomOffset = 0;\n var numRefFramesInPicOrderCntCycle;\n var scalingListCount;\n var i;\n var readUByte = this.readUByte.bind(this);\n var readBits = this.readBits.bind(this);\n var readUEG = this.readUEG.bind(this);\n var readBoolean = this.readBoolean.bind(this);\n var skipBits = this.skipBits.bind(this);\n var skipEG = this.skipEG.bind(this);\n var skipUEG = this.skipUEG.bind(this);\n var skipScalingList = this.skipScalingList.bind(this);\n readUByte();\n var profileIdc = readUByte(); // profile_idc\n\n readBits(5); // profileCompat constraint_set[0-4]_flag, u(5)\n\n skipBits(3); // reserved_zero_3bits u(3),\n\n readUByte(); // level_idc u(8)\n\n skipUEG(); // seq_parameter_set_id\n // some profiles have more optional data we don't need\n\n if (profileIdc === 100 || profileIdc === 110 || profileIdc === 122 || profileIdc === 244 || profileIdc === 44 || profileIdc === 83 || profileIdc === 86 || profileIdc === 118 || profileIdc === 128) {\n var chromaFormatIdc = readUEG();\n\n if (chromaFormatIdc === 3) {\n skipBits(1);\n } // separate_colour_plane_flag\n\n\n skipUEG(); // bit_depth_luma_minus8\n\n skipUEG(); // bit_depth_chroma_minus8\n\n skipBits(1); // qpprime_y_zero_transform_bypass_flag\n\n if (readBoolean()) {\n // seq_scaling_matrix_present_flag\n scalingListCount = chromaFormatIdc !== 3 ? 8 : 12;\n\n for (i = 0; i < scalingListCount; i++) {\n if (readBoolean()) {\n // seq_scaling_list_present_flag[ i ]\n if (i < 6) {\n skipScalingList(16);\n } else {\n skipScalingList(64);\n }\n }\n }\n }\n }\n\n skipUEG(); // log2_max_frame_num_minus4\n\n var picOrderCntType = readUEG();\n\n if (picOrderCntType === 0) {\n readUEG(); // log2_max_pic_order_cnt_lsb_minus4\n } else if (picOrderCntType === 1) {\n skipBits(1); // delta_pic_order_always_zero_flag\n\n skipEG(); // offset_for_non_ref_pic\n\n skipEG(); // offset_for_top_to_bottom_field\n\n numRefFramesInPicOrderCntCycle = readUEG();\n\n for (i = 0; i < numRefFramesInPicOrderCntCycle; i++) {\n skipEG();\n } // offset_for_ref_frame[ i ]\n\n }\n\n skipUEG(); // max_num_ref_frames\n\n skipBits(1); // gaps_in_frame_num_value_allowed_flag\n\n var picWidthInMbsMinus1 = readUEG();\n var picHeightInMapUnitsMinus1 = readUEG();\n var frameMbsOnlyFlag = readBits(1);\n\n if (frameMbsOnlyFlag === 0) {\n skipBits(1);\n } // mb_adaptive_frame_field_flag\n\n\n skipBits(1); // direct_8x8_inference_flag\n\n if (readBoolean()) {\n // frame_cropping_flag\n frameCropLeftOffset = readUEG();\n frameCropRightOffset = readUEG();\n frameCropTopOffset = readUEG();\n frameCropBottomOffset = readUEG();\n }\n\n var pixelRatio = [1, 1];\n\n if (readBoolean()) {\n // vui_parameters_present_flag\n if (readBoolean()) {\n // aspect_ratio_info_present_flag\n var aspectRatioIdc = readUByte();\n\n switch (aspectRatioIdc) {\n case 1:\n pixelRatio = [1, 1];\n break;\n\n case 2:\n pixelRatio = [12, 11];\n break;\n\n case 3:\n pixelRatio = [10, 11];\n break;\n\n case 4:\n pixelRatio = [16, 11];\n break;\n\n case 5:\n pixelRatio = [40, 33];\n break;\n\n case 6:\n pixelRatio = [24, 11];\n break;\n\n case 7:\n pixelRatio = [20, 11];\n break;\n\n case 8:\n pixelRatio = [32, 11];\n break;\n\n case 9:\n pixelRatio = [80, 33];\n break;\n\n case 10:\n pixelRatio = [18, 11];\n break;\n\n case 11:\n pixelRatio = [15, 11];\n break;\n\n case 12:\n pixelRatio = [64, 33];\n break;\n\n case 13:\n pixelRatio = [160, 99];\n break;\n\n case 14:\n pixelRatio = [4, 3];\n break;\n\n case 15:\n pixelRatio = [3, 2];\n break;\n\n case 16:\n pixelRatio = [2, 1];\n break;\n\n case 255:\n {\n pixelRatio = [readUByte() << 8 | readUByte(), readUByte() << 8 | readUByte()];\n break;\n }\n }\n }\n }\n\n return {\n width: Math.ceil((picWidthInMbsMinus1 + 1) * 16 - frameCropLeftOffset * 2 - frameCropRightOffset * 2),\n height: (2 - frameMbsOnlyFlag) * (picHeightInMapUnitsMinus1 + 1) * 16 - (frameMbsOnlyFlag ? 2 : 4) * (frameCropTopOffset + frameCropBottomOffset),\n pixelRatio: pixelRatio\n };\n };\n\n _proto.readSliceType = function readSliceType() {\n // skip NALu type\n this.readUByte(); // discard first_mb_in_slice\n\n this.readUEG(); // return slice_type\n\n return this.readUEG();\n };\n\n return ExpGolomb;\n }();\n /* harmony default export */\n\n\n __webpack_exports__[\"default\"] = ExpGolomb;\n /***/\n },\n\n /***/\n \"./src/demux/id3.ts\":\n /*!**************************!*\\\n !*** ./src/demux/id3.ts ***!\n \\**************************/\n\n /*! exports provided: isHeader, isFooter, getID3Data, canParse, getTimeStamp, isTimeStampFrame, getID3Frames, decodeFrame, utf8ArrayToStr, testables */\n\n /***/\n function srcDemuxId3Ts(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"isHeader\", function () {\n return isHeader;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"isFooter\", function () {\n return isFooter;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"getID3Data\", function () {\n return getID3Data;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"canParse\", function () {\n return canParse;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"getTimeStamp\", function () {\n return getTimeStamp;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"isTimeStampFrame\", function () {\n return isTimeStampFrame;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"getID3Frames\", function () {\n return getID3Frames;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"decodeFrame\", function () {\n return decodeFrame;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"utf8ArrayToStr\", function () {\n return utf8ArrayToStr;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"testables\", function () {\n return testables;\n }); // breaking up those two types in order to clarify what is happening in the decoding path.\n\n /**\n * Returns true if an ID3 header can be found at offset in data\n * @param {Uint8Array} data - The data to search in\n * @param {number} offset - The offset at which to start searching\n * @return {boolean} - True if an ID3 header is found\n */\n\n\n var isHeader = function isHeader(data, offset) {\n /*\n * http://id3.org/id3v2.3.0\n * [0] = 'I'\n * [1] = 'D'\n * [2] = '3'\n * [3,4] = {Version}\n * [5] = {Flags}\n * [6-9] = {ID3 Size}\n *\n * An ID3v2 tag can be detected with the following pattern:\n * $49 44 33 yy yy xx zz zz zz zz\n * Where yy is less than $FF, xx is the 'flags' byte and zz is less than $80\n */\n if (offset + 10 <= data.length) {\n // look for 'ID3' identifier\n if (data[offset] === 0x49 && data[offset + 1] === 0x44 && data[offset + 2] === 0x33) {\n // check version is within range\n if (data[offset + 3] < 0xff && data[offset + 4] < 0xff) {\n // check size is within range\n if (data[offset + 6] < 0x80 && data[offset + 7] < 0x80 && data[offset + 8] < 0x80 && data[offset + 9] < 0x80) {\n return true;\n }\n }\n }\n }\n\n return false;\n };\n /**\n * Returns true if an ID3 footer can be found at offset in data\n * @param {Uint8Array} data - The data to search in\n * @param {number} offset - The offset at which to start searching\n * @return {boolean} - True if an ID3 footer is found\n */\n\n\n var isFooter = function isFooter(data, offset) {\n /*\n * The footer is a copy of the header, but with a different identifier\n */\n if (offset + 10 <= data.length) {\n // look for '3DI' identifier\n if (data[offset] === 0x33 && data[offset + 1] === 0x44 && data[offset + 2] === 0x49) {\n // check version is within range\n if (data[offset + 3] < 0xff && data[offset + 4] < 0xff) {\n // check size is within range\n if (data[offset + 6] < 0x80 && data[offset + 7] < 0x80 && data[offset + 8] < 0x80 && data[offset + 9] < 0x80) {\n return true;\n }\n }\n }\n }\n\n return false;\n };\n /**\n * Returns any adjacent ID3 tags found in data starting at offset, as one block of data\n * @param {Uint8Array} data - The data to search in\n * @param {number} offset - The offset at which to start searching\n * @return {Uint8Array | undefined} - The block of data containing any ID3 tags found\n * or *undefined* if no header is found at the starting offset\n */\n\n\n var getID3Data = function getID3Data(data, offset) {\n var front = offset;\n var length = 0;\n\n while (isHeader(data, offset)) {\n // ID3 header is 10 bytes\n length += 10;\n var size = readSize(data, offset + 6);\n length += size;\n\n if (isFooter(data, offset + 10)) {\n // ID3 footer is 10 bytes\n length += 10;\n }\n\n offset += length;\n }\n\n if (length > 0) {\n return data.subarray(front, front + length);\n }\n\n return undefined;\n };\n\n var readSize = function readSize(data, offset) {\n var size = 0;\n size = (data[offset] & 0x7f) << 21;\n size |= (data[offset + 1] & 0x7f) << 14;\n size |= (data[offset + 2] & 0x7f) << 7;\n size |= data[offset + 3] & 0x7f;\n return size;\n };\n\n var canParse = function canParse(data, offset) {\n return isHeader(data, offset) && readSize(data, offset + 6) + 10 <= data.length - offset;\n };\n /**\n * Searches for the Elementary Stream timestamp found in the ID3 data chunk\n * @param {Uint8Array} data - Block of data containing one or more ID3 tags\n * @return {number | undefined} - The timestamp\n */\n\n\n var getTimeStamp = function getTimeStamp(data) {\n var frames = getID3Frames(data);\n\n for (var i = 0; i < frames.length; i++) {\n var frame = frames[i];\n\n if (isTimeStampFrame(frame)) {\n return readTimeStamp(frame);\n }\n }\n\n return undefined;\n };\n /**\n * Returns true if the ID3 frame is an Elementary Stream timestamp frame\n * @param {ID3 frame} frame\n */\n\n\n var isTimeStampFrame = function isTimeStampFrame(frame) {\n return frame && frame.key === 'PRIV' && frame.info === 'com.apple.streaming.transportStreamTimestamp';\n };\n\n var getFrameData = function getFrameData(data) {\n /*\n Frame ID $xx xx xx xx (four characters)\n Size $xx xx xx xx\n Flags $xx xx\n */\n var type = String.fromCharCode(data[0], data[1], data[2], data[3]);\n var size = readSize(data, 4); // skip frame id, size, and flags\n\n var offset = 10;\n return {\n type: type,\n size: size,\n data: data.subarray(offset, offset + size)\n };\n };\n /**\n * Returns an array of ID3 frames found in all the ID3 tags in the id3Data\n * @param {Uint8Array} id3Data - The ID3 data containing one or more ID3 tags\n * @return {ID3.Frame[]} - Array of ID3 frame objects\n */\n\n\n var getID3Frames = function getID3Frames(id3Data) {\n var offset = 0;\n var frames = [];\n\n while (isHeader(id3Data, offset)) {\n var size = readSize(id3Data, offset + 6); // skip past ID3 header\n\n offset += 10;\n var end = offset + size; // loop through frames in the ID3 tag\n\n while (offset + 8 < end) {\n var frameData = getFrameData(id3Data.subarray(offset));\n var frame = decodeFrame(frameData);\n\n if (frame) {\n frames.push(frame);\n } // skip frame header and frame data\n\n\n offset += frameData.size + 10;\n }\n\n if (isFooter(id3Data, offset)) {\n offset += 10;\n }\n }\n\n return frames;\n };\n\n var decodeFrame = function decodeFrame(frame) {\n if (frame.type === 'PRIV') {\n return decodePrivFrame(frame);\n } else if (frame.type[0] === 'W') {\n return decodeURLFrame(frame);\n }\n\n return decodeTextFrame(frame);\n };\n\n var decodePrivFrame = function decodePrivFrame(frame) {\n /*\n Format: \\0\n */\n if (frame.size < 2) {\n return undefined;\n }\n\n var owner = utf8ArrayToStr(frame.data, true);\n var privateData = new Uint8Array(frame.data.subarray(owner.length + 1));\n return {\n key: frame.type,\n info: owner,\n data: privateData.buffer\n };\n };\n\n var decodeTextFrame = function decodeTextFrame(frame) {\n if (frame.size < 2) {\n return undefined;\n }\n\n if (frame.type === 'TXXX') {\n /*\n Format:\n [0] = {Text Encoding}\n [1-?] = {Description}\\0{Value}\n */\n var index = 1;\n var description = utf8ArrayToStr(frame.data.subarray(index), true);\n index += description.length + 1;\n var value = utf8ArrayToStr(frame.data.subarray(index));\n return {\n key: frame.type,\n info: description,\n data: value\n };\n }\n /*\n Format:\n [0] = {Text Encoding}\n [1-?] = {Value}\n */\n\n\n var text = utf8ArrayToStr(frame.data.subarray(1));\n return {\n key: frame.type,\n data: text\n };\n };\n\n var decodeURLFrame = function decodeURLFrame(frame) {\n if (frame.type === 'WXXX') {\n /*\n Format:\n [0] = {Text Encoding}\n [1-?] = {Description}\\0{URL}\n */\n if (frame.size < 2) {\n return undefined;\n }\n\n var index = 1;\n var description = utf8ArrayToStr(frame.data.subarray(index), true);\n index += description.length + 1;\n var value = utf8ArrayToStr(frame.data.subarray(index));\n return {\n key: frame.type,\n info: description,\n data: value\n };\n }\n /*\n Format:\n [0-?] = {URL}\n */\n\n\n var url = utf8ArrayToStr(frame.data);\n return {\n key: frame.type,\n data: url\n };\n };\n\n var readTimeStamp = function readTimeStamp(timeStampFrame) {\n if (timeStampFrame.data.byteLength === 8) {\n var data = new Uint8Array(timeStampFrame.data); // timestamp is 33 bit expressed as a big-endian eight-octet number,\n // with the upper 31 bits set to zero.\n\n var pts33Bit = data[3] & 0x1;\n var timestamp = (data[4] << 23) + (data[5] << 15) + (data[6] << 7) + data[7];\n timestamp /= 45;\n\n if (pts33Bit) {\n timestamp += 47721858.84;\n } // 2^32 / 90\n\n\n return Math.round(timestamp);\n }\n\n return undefined;\n }; // http://stackoverflow.com/questions/8936984/uint8array-to-string-in-javascript/22373197\n // http://www.onicos.com/staff/iz/amuse/javascript/expert/utf.txt\n\n /* utf.js - UTF-8 <=> UTF-16 convertion\n *\n * Copyright (C) 1999 Masanao Izumo \n * Version: 1.0\n * LastModified: Dec 25 1999\n * This library is free. You can redistribute it and/or modify it.\n */\n\n\n var utf8ArrayToStr = function utf8ArrayToStr(array, exitOnNull) {\n if (exitOnNull === void 0) {\n exitOnNull = false;\n }\n\n var decoder = getTextDecoder();\n\n if (decoder) {\n var decoded = decoder.decode(array);\n\n if (exitOnNull) {\n // grab up to the first null\n var idx = decoded.indexOf('\\0');\n return idx !== -1 ? decoded.substring(0, idx) : decoded;\n } // remove any null characters\n\n\n return decoded.replace(/\\0/g, '');\n }\n\n var len = array.length;\n var c;\n var char2;\n var char3;\n var out = '';\n var i = 0;\n\n while (i < len) {\n c = array[i++];\n\n if (c === 0x00 && exitOnNull) {\n return out;\n } else if (c === 0x00 || c === 0x03) {\n // If the character is 3 (END_OF_TEXT) or 0 (NULL) then skip it\n continue;\n }\n\n switch (c >> 4) {\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 6:\n case 7:\n // 0xxxxxxx\n out += String.fromCharCode(c);\n break;\n\n case 12:\n case 13:\n // 110x xxxx 10xx xxxx\n char2 = array[i++];\n out += String.fromCharCode((c & 0x1f) << 6 | char2 & 0x3f);\n break;\n\n case 14:\n // 1110 xxxx 10xx xxxx 10xx xxxx\n char2 = array[i++];\n char3 = array[i++];\n out += String.fromCharCode((c & 0x0f) << 12 | (char2 & 0x3f) << 6 | (char3 & 0x3f) << 0);\n break;\n\n default:\n }\n }\n\n return out;\n };\n\n var testables = {\n decodeTextFrame: decodeTextFrame\n };\n var decoder;\n\n function getTextDecoder() {\n if (!decoder && typeof self.TextDecoder !== 'undefined') {\n decoder = new self.TextDecoder('utf-8');\n }\n\n return decoder;\n }\n /***/\n\n },\n\n /***/\n \"./src/demux/mp3demuxer.ts\":\n /*!*********************************!*\\\n !*** ./src/demux/mp3demuxer.ts ***!\n \\*********************************/\n\n /*! exports provided: default */\n\n /***/\n function srcDemuxMp3demuxerTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony import */\n\n\n var _base_audio_demuxer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./base-audio-demuxer */\n \"./src/demux/base-audio-demuxer.ts\");\n /* harmony import */\n\n\n var _demux_id3__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ../demux/id3 */\n \"./src/demux/id3.ts\");\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ../utils/logger */\n \"./src/utils/logger.ts\");\n /* harmony import */\n\n\n var _mpegaudio__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\n /*! ./mpegaudio */\n \"./src/demux/mpegaudio.ts\");\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n }\n /**\n * MP3 demuxer\n */\n\n\n var MP3Demuxer = /*#__PURE__*/function (_BaseAudioDemuxer) {\n _inheritsLoose(MP3Demuxer, _BaseAudioDemuxer);\n\n function MP3Demuxer() {\n return _BaseAudioDemuxer.apply(this, arguments) || this;\n }\n\n var _proto = MP3Demuxer.prototype;\n\n _proto.resetInitSegment = function resetInitSegment(audioCodec, videoCodec, duration) {\n _BaseAudioDemuxer.prototype.resetInitSegment.call(this, audioCodec, videoCodec, duration);\n\n this._audioTrack = {\n container: 'audio/mpeg',\n type: 'audio',\n id: 2,\n pid: -1,\n sequenceNumber: 0,\n isAAC: false,\n samples: [],\n manifestCodec: audioCodec,\n duration: duration,\n inputTimeScale: 90000,\n dropped: 0\n };\n };\n\n MP3Demuxer.probe = function probe(data) {\n if (!data) {\n return false;\n } // check if data contains ID3 timestamp and MPEG sync word\n // Look for MPEG header | 1111 1111 | 111X XYZX | where X can be either 0 or 1 and Y or Z should be 1\n // Layer bits (position 14 and 15) in header should be always different from 0 (Layer I or Layer II or Layer III)\n // More info http://www.mp3-tech.org/programmer/frame_header.html\n\n\n var id3Data = _demux_id3__WEBPACK_IMPORTED_MODULE_1__[\"getID3Data\"](data, 0) || [];\n var offset = id3Data.length;\n\n for (var length = data.length; offset < length; offset++) {\n if (_mpegaudio__WEBPACK_IMPORTED_MODULE_3__[\"probe\"](data, offset)) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('MPEG Audio sync word found !');\n\n return true;\n }\n }\n\n return false;\n };\n\n _proto.canParse = function canParse(data, offset) {\n return _mpegaudio__WEBPACK_IMPORTED_MODULE_3__[\"canParse\"](data, offset);\n };\n\n _proto.appendFrame = function appendFrame(track, data, offset) {\n if (this.initPTS === null) {\n return;\n }\n\n return _mpegaudio__WEBPACK_IMPORTED_MODULE_3__[\"appendFrame\"](track, data, offset, this.initPTS, this.frameIndex);\n };\n\n return MP3Demuxer;\n }(_base_audio_demuxer__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n MP3Demuxer.minProbeByteLength = 4;\n /* harmony default export */\n\n __webpack_exports__[\"default\"] = MP3Demuxer;\n /***/\n },\n\n /***/\n \"./src/demux/mp4demuxer.ts\":\n /*!*********************************!*\\\n !*** ./src/demux/mp4demuxer.ts ***!\n \\*********************************/\n\n /*! exports provided: default */\n\n /***/\n function srcDemuxMp4demuxerTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony import */\n\n\n var _utils_mp4_tools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ../utils/mp4-tools */\n \"./src/utils/mp4-tools.ts\");\n /* harmony import */\n\n\n var _dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ./dummy-demuxed-track */\n \"./src/demux/dummy-demuxed-track.ts\");\n /**\n * MP4 demuxer\n */\n\n\n var MP4Demuxer = /*#__PURE__*/function () {\n function MP4Demuxer(observer, config) {\n this.remainderData = null;\n this.config = void 0;\n this.config = config;\n }\n\n var _proto = MP4Demuxer.prototype;\n\n _proto.resetTimeStamp = function resetTimeStamp() {};\n\n _proto.resetInitSegment = function resetInitSegment() {};\n\n _proto.resetContiguity = function resetContiguity() {};\n\n MP4Demuxer.probe = function probe(data) {\n // ensure we find a moof box in the first 16 kB\n return Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_0__[\"findBox\"])({\n data: data,\n start: 0,\n end: Math.min(data.length, 16384)\n }, ['moof']).length > 0;\n };\n\n _proto.demux = function demux(data) {\n // Load all data into the avc track. The CMAF remuxer will look for the data in the samples object; the rest of the fields do not matter\n var avcSamples = data;\n var avcTrack = Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_1__[\"dummyTrack\"])();\n\n if (this.config.progressive) {\n // Split the bytestream into two ranges: one encompassing all data up until the start of the last moof, and everything else.\n // This is done to guarantee that we're sending valid data to MSE - when demuxing progressively, we have no guarantee\n // that the fetch loader gives us flush moof+mdat pairs. If we push jagged data to MSE, it will throw an exception.\n if (this.remainderData) {\n avcSamples = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_0__[\"appendUint8Array\"])(this.remainderData, data);\n }\n\n var segmentedData = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_0__[\"segmentValidRange\"])(avcSamples);\n this.remainderData = segmentedData.remainder;\n avcTrack.samples = segmentedData.valid || new Uint8Array();\n } else {\n avcTrack.samples = avcSamples;\n }\n\n return {\n audioTrack: Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_1__[\"dummyTrack\"])(),\n avcTrack: avcTrack,\n id3Track: Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_1__[\"dummyTrack\"])(),\n textTrack: Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_1__[\"dummyTrack\"])()\n };\n };\n\n _proto.flush = function flush() {\n var avcTrack = Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_1__[\"dummyTrack\"])();\n avcTrack.samples = this.remainderData || new Uint8Array();\n this.remainderData = null;\n return {\n audioTrack: Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_1__[\"dummyTrack\"])(),\n avcTrack: avcTrack,\n id3Track: Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_1__[\"dummyTrack\"])(),\n textTrack: Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_1__[\"dummyTrack\"])()\n };\n };\n\n _proto.demuxSampleAes = function demuxSampleAes(data, keyData, timeOffset) {\n return Promise.reject(new Error('The MP4 demuxer does not support SAMPLE-AES decryption'));\n };\n\n _proto.destroy = function destroy() {};\n\n return MP4Demuxer;\n }();\n\n MP4Demuxer.minProbeByteLength = 1024;\n /* harmony default export */\n\n __webpack_exports__[\"default\"] = MP4Demuxer;\n /***/\n },\n\n /***/\n \"./src/demux/mpegaudio.ts\":\n /*!********************************!*\\\n !*** ./src/demux/mpegaudio.ts ***!\n \\********************************/\n\n /*! exports provided: appendFrame, parseHeader, isHeaderPattern, isHeader, canParse, probe */\n\n /***/\n function srcDemuxMpegaudioTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"appendFrame\", function () {\n return appendFrame;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"parseHeader\", function () {\n return parseHeader;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"isHeaderPattern\", function () {\n return isHeaderPattern;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"isHeader\", function () {\n return isHeader;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"canParse\", function () {\n return canParse;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"probe\", function () {\n return probe;\n });\n /**\n * MPEG parser helper\n */\n\n\n var chromeVersion = null;\n var BitratesMap = [32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160];\n var SamplingRateMap = [44100, 48000, 32000, 22050, 24000, 16000, 11025, 12000, 8000];\n var SamplesCoefficients = [// MPEG 2.5\n [0, // Reserved\n 72, // Layer3\n 144, // Layer2\n 12 // Layer1\n ], // Reserved\n [0, // Reserved\n 0, // Layer3\n 0, // Layer2\n 0 // Layer1\n ], // MPEG 2\n [0, // Reserved\n 72, // Layer3\n 144, // Layer2\n 12 // Layer1\n ], // MPEG 1\n [0, // Reserved\n 144, // Layer3\n 144, // Layer2\n 12 // Layer1\n ]];\n var BytesInSlot = [0, // Reserved\n 1, // Layer3\n 1, // Layer2\n 4 // Layer1\n ];\n\n function appendFrame(track, data, offset, pts, frameIndex) {\n // Using http://www.datavoyage.com/mpgscript/mpeghdr.htm as a reference\n if (offset + 24 > data.length) {\n return;\n }\n\n var header = parseHeader(data, offset);\n\n if (header && offset + header.frameLength <= data.length) {\n var frameDuration = header.samplesPerFrame * 90000 / header.sampleRate;\n var stamp = pts + frameIndex * frameDuration;\n var sample = {\n unit: data.subarray(offset, offset + header.frameLength),\n pts: stamp,\n dts: stamp\n };\n track.config = [];\n track.channelCount = header.channelCount;\n track.samplerate = header.sampleRate;\n track.samples.push(sample);\n return {\n sample: sample,\n length: header.frameLength,\n missing: 0\n };\n }\n }\n\n function parseHeader(data, offset) {\n var mpegVersion = data[offset + 1] >> 3 & 3;\n var mpegLayer = data[offset + 1] >> 1 & 3;\n var bitRateIndex = data[offset + 2] >> 4 & 15;\n var sampleRateIndex = data[offset + 2] >> 2 & 3;\n\n if (mpegVersion !== 1 && bitRateIndex !== 0 && bitRateIndex !== 15 && sampleRateIndex !== 3) {\n var paddingBit = data[offset + 2] >> 1 & 1;\n var channelMode = data[offset + 3] >> 6;\n var columnInBitrates = mpegVersion === 3 ? 3 - mpegLayer : mpegLayer === 3 ? 3 : 4;\n var bitRate = BitratesMap[columnInBitrates * 14 + bitRateIndex - 1] * 1000;\n var columnInSampleRates = mpegVersion === 3 ? 0 : mpegVersion === 2 ? 1 : 2;\n var sampleRate = SamplingRateMap[columnInSampleRates * 3 + sampleRateIndex];\n var channelCount = channelMode === 3 ? 1 : 2; // If bits of channel mode are `11` then it is a single channel (Mono)\n\n var sampleCoefficient = SamplesCoefficients[mpegVersion][mpegLayer];\n var bytesInSlot = BytesInSlot[mpegLayer];\n var samplesPerFrame = sampleCoefficient * 8 * bytesInSlot;\n var frameLength = Math.floor(sampleCoefficient * bitRate / sampleRate + paddingBit) * bytesInSlot;\n\n if (chromeVersion === null) {\n var userAgent = navigator.userAgent || '';\n var result = userAgent.match(/Chrome\\/(\\d+)/i);\n chromeVersion = result ? parseInt(result[1]) : 0;\n }\n\n var needChromeFix = !!chromeVersion && chromeVersion <= 87;\n\n if (needChromeFix && mpegLayer === 2 && bitRate >= 224000 && channelMode === 0) {\n // Work around bug in Chromium by setting channelMode to dual-channel (01) instead of stereo (00)\n data[offset + 3] = data[offset + 3] | 0x80;\n }\n\n return {\n sampleRate: sampleRate,\n channelCount: channelCount,\n frameLength: frameLength,\n samplesPerFrame: samplesPerFrame\n };\n }\n }\n\n function isHeaderPattern(data, offset) {\n return data[offset] === 0xff && (data[offset + 1] & 0xe0) === 0xe0 && (data[offset + 1] & 0x06) !== 0x00;\n }\n\n function isHeader(data, offset) {\n // Look for MPEG header | 1111 1111 | 111X XYZX | where X can be either 0 or 1 and Y or Z should be 1\n // Layer bits (position 14 and 15) in header should be always different from 0 (Layer I or Layer II or Layer III)\n // More info http://www.mp3-tech.org/programmer/frame_header.html\n return offset + 1 < data.length && isHeaderPattern(data, offset);\n }\n\n function canParse(data, offset) {\n var headerSize = 4;\n return isHeaderPattern(data, offset) && headerSize <= data.length - offset;\n }\n\n function probe(data, offset) {\n // same as isHeader but we also check that MPEG frame follows last MPEG frame\n // or end of data is reached\n if (offset + 1 < data.length && isHeaderPattern(data, offset)) {\n // MPEG header Length\n var headerLength = 4; // MPEG frame Length\n\n var header = parseHeader(data, offset);\n var frameLength = headerLength;\n\n if (header !== null && header !== void 0 && header.frameLength) {\n frameLength = header.frameLength;\n }\n\n var newOffset = offset + frameLength;\n return newOffset === data.length || isHeader(data, newOffset);\n }\n\n return false;\n }\n /***/\n\n },\n\n /***/\n \"./src/demux/sample-aes.ts\":\n /*!*********************************!*\\\n !*** ./src/demux/sample-aes.ts ***!\n \\*********************************/\n\n /*! exports provided: default */\n\n /***/\n function srcDemuxSampleAesTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony import */\n\n\n var _crypt_decrypter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ../crypt/decrypter */\n \"./src/crypt/decrypter.ts\");\n /* harmony import */\n\n\n var _tsdemuxer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ./tsdemuxer */\n \"./src/demux/tsdemuxer.ts\");\n /**\n * SAMPLE-AES decrypter\n */\n\n\n var SampleAesDecrypter = /*#__PURE__*/function () {\n function SampleAesDecrypter(observer, config, keyData) {\n this.keyData = void 0;\n this.decrypter = void 0;\n this.keyData = keyData;\n this.decrypter = new _crypt_decrypter__WEBPACK_IMPORTED_MODULE_0__[\"default\"](observer, config, {\n removePKCS7Padding: false\n });\n }\n\n var _proto = SampleAesDecrypter.prototype;\n\n _proto.decryptBuffer = function decryptBuffer(encryptedData, callback) {\n this.decrypter.decrypt(encryptedData, this.keyData.key.buffer, this.keyData.iv.buffer, callback);\n } // AAC - encrypt all full 16 bytes blocks starting from offset 16\n ;\n\n _proto.decryptAacSample = function decryptAacSample(samples, sampleIndex, callback, sync) {\n var curUnit = samples[sampleIndex].unit;\n var encryptedData = curUnit.subarray(16, curUnit.length - curUnit.length % 16);\n var encryptedBuffer = encryptedData.buffer.slice(encryptedData.byteOffset, encryptedData.byteOffset + encryptedData.length);\n var localthis = this;\n this.decryptBuffer(encryptedBuffer, function (decryptedBuffer) {\n var decryptedData = new Uint8Array(decryptedBuffer);\n curUnit.set(decryptedData, 16);\n\n if (!sync) {\n localthis.decryptAacSamples(samples, sampleIndex + 1, callback);\n }\n });\n };\n\n _proto.decryptAacSamples = function decryptAacSamples(samples, sampleIndex, callback) {\n for (;; sampleIndex++) {\n if (sampleIndex >= samples.length) {\n callback();\n return;\n }\n\n if (samples[sampleIndex].unit.length < 32) {\n continue;\n }\n\n var sync = this.decrypter.isSync();\n this.decryptAacSample(samples, sampleIndex, callback, sync);\n\n if (!sync) {\n return;\n }\n }\n } // AVC - encrypt one 16 bytes block out of ten, starting from offset 32\n ;\n\n _proto.getAvcEncryptedData = function getAvcEncryptedData(decodedData) {\n var encryptedDataLen = Math.floor((decodedData.length - 48) / 160) * 16 + 16;\n var encryptedData = new Int8Array(encryptedDataLen);\n var outputPos = 0;\n\n for (var inputPos = 32; inputPos < decodedData.length - 16; inputPos += 160, outputPos += 16) {\n encryptedData.set(decodedData.subarray(inputPos, inputPos + 16), outputPos);\n }\n\n return encryptedData;\n };\n\n _proto.getAvcDecryptedUnit = function getAvcDecryptedUnit(decodedData, decryptedData) {\n var uint8DecryptedData = new Uint8Array(decryptedData);\n var inputPos = 0;\n\n for (var outputPos = 32; outputPos < decodedData.length - 16; outputPos += 160, inputPos += 16) {\n decodedData.set(uint8DecryptedData.subarray(inputPos, inputPos + 16), outputPos);\n }\n\n return decodedData;\n };\n\n _proto.decryptAvcSample = function decryptAvcSample(samples, sampleIndex, unitIndex, callback, curUnit, sync) {\n var decodedData = Object(_tsdemuxer__WEBPACK_IMPORTED_MODULE_1__[\"discardEPB\"])(curUnit.data);\n var encryptedData = this.getAvcEncryptedData(decodedData);\n var localthis = this;\n this.decryptBuffer(encryptedData.buffer, function (decryptedBuffer) {\n curUnit.data = localthis.getAvcDecryptedUnit(decodedData, decryptedBuffer);\n\n if (!sync) {\n localthis.decryptAvcSamples(samples, sampleIndex, unitIndex + 1, callback);\n }\n });\n };\n\n _proto.decryptAvcSamples = function decryptAvcSamples(samples, sampleIndex, unitIndex, callback) {\n if (samples instanceof Uint8Array) {\n throw new Error('Cannot decrypt samples of type Uint8Array');\n }\n\n for (;; sampleIndex++, unitIndex = 0) {\n if (sampleIndex >= samples.length) {\n callback();\n return;\n }\n\n var curUnits = samples[sampleIndex].units;\n\n for (;; unitIndex++) {\n if (unitIndex >= curUnits.length) {\n break;\n }\n\n var curUnit = curUnits[unitIndex];\n\n if (curUnit.data.length <= 48 || curUnit.type !== 1 && curUnit.type !== 5) {\n continue;\n }\n\n var sync = this.decrypter.isSync();\n this.decryptAvcSample(samples, sampleIndex, unitIndex, callback, curUnit, sync);\n\n if (!sync) {\n return;\n }\n }\n }\n };\n\n return SampleAesDecrypter;\n }();\n /* harmony default export */\n\n\n __webpack_exports__[\"default\"] = SampleAesDecrypter;\n /***/\n },\n\n /***/\n \"./src/demux/transmuxer-interface.ts\":\n /*!*******************************************!*\\\n !*** ./src/demux/transmuxer-interface.ts ***!\n \\*******************************************/\n\n /*! exports provided: default */\n\n /***/\n function srcDemuxTransmuxerInterfaceTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"default\", function () {\n return TransmuxerInterface;\n });\n /* harmony import */\n\n\n var webworkify_webpack__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! webworkify-webpack */\n \"./node_modules/webworkify-webpack/index.js\");\n /* harmony import */\n\n\n var webworkify_webpack__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(webworkify_webpack__WEBPACK_IMPORTED_MODULE_0__);\n /* harmony import */\n\n\n var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ../events */\n \"./src/events.ts\");\n /* harmony import */\n\n\n var _demux_transmuxer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ../demux/transmuxer */\n \"./src/demux/transmuxer.ts\");\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\n /*! ../utils/logger */\n \"./src/utils/logger.ts\");\n /* harmony import */\n\n\n var _errors__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\n /*! ../errors */\n \"./src/errors.ts\");\n /* harmony import */\n\n\n var _utils_mediasource_helper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(\n /*! ../utils/mediasource-helper */\n \"./src/utils/mediasource-helper.ts\");\n /* harmony import */\n\n\n var eventemitter3__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(\n /*! eventemitter3 */\n \"./node_modules/eventemitter3/index.js\");\n /* harmony import */\n\n\n var eventemitter3__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(eventemitter3__WEBPACK_IMPORTED_MODULE_6__);\n\n var MediaSource = Object(_utils_mediasource_helper__WEBPACK_IMPORTED_MODULE_5__[\"getMediaSource\"])() || {\n isTypeSupported: function isTypeSupported() {\n return false;\n }\n };\n\n var TransmuxerInterface = /*#__PURE__*/function () {\n function TransmuxerInterface(hls, id, onTransmuxComplete, onFlush) {\n var _this = this;\n\n this.hls = void 0;\n this.id = void 0;\n this.observer = void 0;\n this.frag = null;\n this.part = null;\n this.worker = void 0;\n this.onwmsg = void 0;\n this.transmuxer = null;\n this.onTransmuxComplete = void 0;\n this.onFlush = void 0;\n this.hls = hls;\n this.id = id;\n this.onTransmuxComplete = onTransmuxComplete;\n this.onFlush = onFlush;\n var config = hls.config;\n\n var forwardMessage = function forwardMessage(ev, data) {\n data = data || {};\n data.frag = _this.frag;\n data.id = _this.id;\n hls.trigger(ev, data);\n }; // forward events to main thread\n\n\n this.observer = new eventemitter3__WEBPACK_IMPORTED_MODULE_6__[\"EventEmitter\"]();\n this.observer.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_DECRYPTED, forwardMessage);\n this.observer.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, forwardMessage);\n var typeSupported = {\n mp4: MediaSource.isTypeSupported('video/mp4'),\n mpeg: MediaSource.isTypeSupported('audio/mpeg'),\n mp3: MediaSource.isTypeSupported('audio/mp4; codecs=\"mp3\"')\n }; // navigator.vendor is not always available in Web Worker\n // refer to https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope/navigator\n\n var vendor = navigator.vendor;\n\n if (config.enableWorker && typeof Worker !== 'undefined') {\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].log('demuxing in webworker');\n\n var worker;\n\n try {\n worker = this.worker = webworkify_webpack__WEBPACK_IMPORTED_MODULE_0__(\n /*require.resolve*/\n\n /*! ../demux/transmuxer-worker.ts */\n \"./src/demux/transmuxer-worker.ts\");\n this.onwmsg = this.onWorkerMessage.bind(this);\n worker.addEventListener('message', this.onwmsg);\n\n worker.onerror = function (event) {\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_4__[\"ErrorTypes\"].OTHER_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_4__[\"ErrorDetails\"].INTERNAL_EXCEPTION,\n fatal: true,\n event: 'demuxerWorker',\n error: new Error(event.message + \" (\" + event.filename + \":\" + event.lineno + \")\")\n });\n };\n\n worker.postMessage({\n cmd: 'init',\n typeSupported: typeSupported,\n vendor: vendor,\n id: id,\n config: JSON.stringify(config)\n });\n } catch (err) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn('Error in worker:', err);\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].error('Error while initializing DemuxerWorker, fallback to inline');\n\n if (worker) {\n // revoke the Object URL that was used to create transmuxer worker, so as not to leak it\n self.URL.revokeObjectURL(worker.objectURL);\n }\n\n this.transmuxer = new _demux_transmuxer__WEBPACK_IMPORTED_MODULE_2__[\"default\"](this.observer, typeSupported, config, vendor, id);\n this.worker = null;\n }\n } else {\n this.transmuxer = new _demux_transmuxer__WEBPACK_IMPORTED_MODULE_2__[\"default\"](this.observer, typeSupported, config, vendor, id);\n }\n }\n\n var _proto = TransmuxerInterface.prototype;\n\n _proto.destroy = function destroy() {\n var w = this.worker;\n\n if (w) {\n w.removeEventListener('message', this.onwmsg);\n w.terminate();\n this.worker = null;\n } else {\n var transmuxer = this.transmuxer;\n\n if (transmuxer) {\n transmuxer.destroy();\n this.transmuxer = null;\n }\n }\n\n var observer = this.observer;\n\n if (observer) {\n observer.removeAllListeners();\n } // @ts-ignore\n\n\n this.observer = null;\n };\n\n _proto.push = function push(data, initSegmentData, audioCodec, videoCodec, frag, part, duration, accurateTimeOffset, chunkMeta, defaultInitPTS) {\n var _frag$initSegment,\n _lastFrag$initSegment,\n _this2 = this;\n\n chunkMeta.transmuxing.start = self.performance.now();\n var transmuxer = this.transmuxer,\n worker = this.worker;\n var timeOffset = part ? part.start : frag.start;\n var decryptdata = frag.decryptdata;\n var lastFrag = this.frag;\n var discontinuity = !(lastFrag && frag.cc === lastFrag.cc);\n var trackSwitch = !(lastFrag && chunkMeta.level === lastFrag.level);\n var snDiff = lastFrag ? chunkMeta.sn - lastFrag.sn : -1;\n var partDiff = this.part ? chunkMeta.part - this.part.index : 1;\n var contiguous = !trackSwitch && (snDiff === 1 || snDiff === 0 && partDiff === 1);\n var now = self.performance.now();\n\n if (trackSwitch || snDiff || frag.stats.parsing.start === 0) {\n frag.stats.parsing.start = now;\n }\n\n if (part && (partDiff || !contiguous)) {\n part.stats.parsing.start = now;\n }\n\n var initSegmentChange = !(lastFrag && ((_frag$initSegment = frag.initSegment) === null || _frag$initSegment === void 0 ? void 0 : _frag$initSegment.url) === ((_lastFrag$initSegment = lastFrag.initSegment) === null || _lastFrag$initSegment === void 0 ? void 0 : _lastFrag$initSegment.url));\n var state = new _demux_transmuxer__WEBPACK_IMPORTED_MODULE_2__[\"TransmuxState\"](discontinuity, contiguous, accurateTimeOffset, trackSwitch, timeOffset, initSegmentChange);\n\n if (!contiguous || discontinuity || initSegmentChange) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].log(\"[transmuxer-interface, \" + frag.type + \"]: Starting new transmux session for sn: \" + chunkMeta.sn + \" p: \" + chunkMeta.part + \" level: \" + chunkMeta.level + \" id: \" + chunkMeta.id + \"\\n discontinuity: \" + discontinuity + \"\\n trackSwitch: \" + trackSwitch + \"\\n contiguous: \" + contiguous + \"\\n accurateTimeOffset: \" + accurateTimeOffset + \"\\n timeOffset: \" + timeOffset + \"\\n initSegmentChange: \" + initSegmentChange);\n\n var config = new _demux_transmuxer__WEBPACK_IMPORTED_MODULE_2__[\"TransmuxConfig\"](audioCodec, videoCodec, initSegmentData, duration, defaultInitPTS);\n this.configureTransmuxer(config);\n }\n\n this.frag = frag;\n this.part = part; // Frags with sn of 'initSegment' are not transmuxed\n\n if (worker) {\n // post fragment payload as transferable objects for ArrayBuffer (no copy)\n worker.postMessage({\n cmd: 'demux',\n data: data,\n decryptdata: decryptdata,\n chunkMeta: chunkMeta,\n state: state\n }, data instanceof ArrayBuffer ? [data] : []);\n } else if (transmuxer) {\n var _transmuxResult = transmuxer.push(data, decryptdata, chunkMeta, state);\n\n if (Object(_demux_transmuxer__WEBPACK_IMPORTED_MODULE_2__[\"isPromise\"])(_transmuxResult)) {\n _transmuxResult.then(function (data) {\n _this2.handleTransmuxComplete(data);\n });\n } else {\n this.handleTransmuxComplete(_transmuxResult);\n }\n }\n };\n\n _proto.flush = function flush(chunkMeta) {\n var _this3 = this;\n\n chunkMeta.transmuxing.start = self.performance.now();\n var transmuxer = this.transmuxer,\n worker = this.worker;\n\n if (worker) {\n worker.postMessage({\n cmd: 'flush',\n chunkMeta: chunkMeta\n });\n } else if (transmuxer) {\n var _transmuxResult2 = transmuxer.flush(chunkMeta);\n\n if (Object(_demux_transmuxer__WEBPACK_IMPORTED_MODULE_2__[\"isPromise\"])(_transmuxResult2)) {\n _transmuxResult2.then(function (data) {\n _this3.handleFlushResult(data, chunkMeta);\n });\n } else {\n this.handleFlushResult(_transmuxResult2, chunkMeta);\n }\n }\n };\n\n _proto.handleFlushResult = function handleFlushResult(results, chunkMeta) {\n var _this4 = this;\n\n results.forEach(function (result) {\n _this4.handleTransmuxComplete(result);\n });\n this.onFlush(chunkMeta);\n };\n\n _proto.onWorkerMessage = function onWorkerMessage(ev) {\n var data = ev.data;\n var hls = this.hls;\n\n switch (data.event) {\n case 'init':\n {\n // revoke the Object URL that was used to create transmuxer worker, so as not to leak it\n self.URL.revokeObjectURL(this.worker.objectURL);\n break;\n }\n\n case 'transmuxComplete':\n {\n this.handleTransmuxComplete(data.data);\n break;\n }\n\n case 'flush':\n {\n this.onFlush(data.data);\n break;\n }\n\n /* falls through */\n\n default:\n {\n data.data = data.data || {};\n data.data.frag = this.frag;\n data.data.id = this.id;\n hls.trigger(data.event, data.data);\n break;\n }\n }\n };\n\n _proto.configureTransmuxer = function configureTransmuxer(config) {\n var worker = this.worker,\n transmuxer = this.transmuxer;\n\n if (worker) {\n worker.postMessage({\n cmd: 'configure',\n config: config\n });\n } else if (transmuxer) {\n transmuxer.configure(config);\n }\n };\n\n _proto.handleTransmuxComplete = function handleTransmuxComplete(result) {\n result.chunkMeta.transmuxing.end = self.performance.now();\n this.onTransmuxComplete(result);\n };\n\n return TransmuxerInterface;\n }();\n /***/\n\n },\n\n /***/\n \"./src/demux/transmuxer-worker.ts\":\n /*!****************************************!*\\\n !*** ./src/demux/transmuxer-worker.ts ***!\n \\****************************************/\n\n /*! exports provided: default */\n\n /***/\n function srcDemuxTransmuxerWorkerTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"default\", function () {\n return TransmuxerWorker;\n });\n /* harmony import */\n\n\n var _demux_transmuxer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ../demux/transmuxer */\n \"./src/demux/transmuxer.ts\");\n /* harmony import */\n\n\n var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ../events */\n \"./src/events.ts\");\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ../utils/logger */\n \"./src/utils/logger.ts\");\n /* harmony import */\n\n\n var eventemitter3__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\n /*! eventemitter3 */\n \"./node_modules/eventemitter3/index.js\");\n /* harmony import */\n\n\n var eventemitter3__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(eventemitter3__WEBPACK_IMPORTED_MODULE_3__);\n\n function TransmuxerWorker(self) {\n var observer = new eventemitter3__WEBPACK_IMPORTED_MODULE_3__[\"EventEmitter\"]();\n\n var forwardMessage = function forwardMessage(ev, data) {\n self.postMessage({\n event: ev,\n data: data\n });\n }; // forward events to main thread\n\n\n observer.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_DECRYPTED, forwardMessage);\n observer.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, forwardMessage);\n self.addEventListener('message', function (ev) {\n var data = ev.data;\n\n switch (data.cmd) {\n case 'init':\n {\n var config = JSON.parse(data.config);\n self.transmuxer = new _demux_transmuxer__WEBPACK_IMPORTED_MODULE_0__[\"default\"](observer, data.typeSupported, config, data.vendor, data.id);\n Object(_utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"enableLogs\"])(config.debug);\n forwardMessage('init', null);\n break;\n }\n\n case 'configure':\n {\n self.transmuxer.configure(data.config);\n break;\n }\n\n case 'demux':\n {\n var transmuxResult = self.transmuxer.push(data.data, data.decryptdata, data.chunkMeta, data.state);\n\n if (Object(_demux_transmuxer__WEBPACK_IMPORTED_MODULE_0__[\"isPromise\"])(transmuxResult)) {\n transmuxResult.then(function (data) {\n emitTransmuxComplete(self, data);\n });\n } else {\n emitTransmuxComplete(self, transmuxResult);\n }\n\n break;\n }\n\n case 'flush':\n {\n var id = data.chunkMeta;\n\n var _transmuxResult = self.transmuxer.flush(id);\n\n if (Object(_demux_transmuxer__WEBPACK_IMPORTED_MODULE_0__[\"isPromise\"])(_transmuxResult)) {\n _transmuxResult.then(function (results) {\n handleFlushResult(self, results, id);\n });\n } else {\n handleFlushResult(self, _transmuxResult, id);\n }\n\n break;\n }\n\n default:\n break;\n }\n });\n }\n\n function emitTransmuxComplete(self, transmuxResult) {\n if (isEmptyResult(transmuxResult.remuxResult)) {\n return;\n }\n\n var transferable = [];\n var _transmuxResult$remux = transmuxResult.remuxResult,\n audio = _transmuxResult$remux.audio,\n video = _transmuxResult$remux.video;\n\n if (audio) {\n addToTransferable(transferable, audio);\n }\n\n if (video) {\n addToTransferable(transferable, video);\n }\n\n self.postMessage({\n event: 'transmuxComplete',\n data: transmuxResult\n }, transferable);\n } // Converts data to a transferable object https://developers.google.com/web/updates/2011/12/Transferable-Objects-Lightning-Fast)\n // in order to minimize message passing overhead\n\n\n function addToTransferable(transferable, track) {\n if (track.data1) {\n transferable.push(track.data1.buffer);\n }\n\n if (track.data2) {\n transferable.push(track.data2.buffer);\n }\n }\n\n function handleFlushResult(self, results, chunkMeta) {\n results.forEach(function (result) {\n emitTransmuxComplete(self, result);\n });\n self.postMessage({\n event: 'flush',\n data: chunkMeta\n });\n }\n\n function isEmptyResult(remuxResult) {\n return !remuxResult.audio && !remuxResult.video && !remuxResult.text && !remuxResult.id3 && !remuxResult.initSegment;\n }\n /***/\n\n },\n\n /***/\n \"./src/demux/transmuxer.ts\":\n /*!*********************************!*\\\n !*** ./src/demux/transmuxer.ts ***!\n \\*********************************/\n\n /*! exports provided: default, isPromise, TransmuxConfig, TransmuxState */\n\n /***/\n function srcDemuxTransmuxerTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"default\", function () {\n return Transmuxer;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"isPromise\", function () {\n return isPromise;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"TransmuxConfig\", function () {\n return TransmuxConfig;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"TransmuxState\", function () {\n return TransmuxState;\n });\n /* harmony import */\n\n\n var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ../events */\n \"./src/events.ts\");\n /* harmony import */\n\n\n var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ../errors */\n \"./src/errors.ts\");\n /* harmony import */\n\n\n var _crypt_decrypter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ../crypt/decrypter */\n \"./src/crypt/decrypter.ts\");\n /* harmony import */\n\n\n var _demux_aacdemuxer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\n /*! ../demux/aacdemuxer */\n \"./src/demux/aacdemuxer.ts\");\n /* harmony import */\n\n\n var _demux_mp4demuxer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\n /*! ../demux/mp4demuxer */\n \"./src/demux/mp4demuxer.ts\");\n /* harmony import */\n\n\n var _demux_tsdemuxer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(\n /*! ../demux/tsdemuxer */\n \"./src/demux/tsdemuxer.ts\");\n /* harmony import */\n\n\n var _demux_mp3demuxer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(\n /*! ../demux/mp3demuxer */\n \"./src/demux/mp3demuxer.ts\");\n /* harmony import */\n\n\n var _remux_mp4_remuxer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(\n /*! ../remux/mp4-remuxer */\n \"./src/remux/mp4-remuxer.ts\");\n /* harmony import */\n\n\n var _remux_passthrough_remuxer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(\n /*! ../remux/passthrough-remuxer */\n \"./src/remux/passthrough-remuxer.ts\");\n /* harmony import */\n\n\n var _chunk_cache__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(\n /*! ./chunk-cache */\n \"./src/demux/chunk-cache.ts\");\n /* harmony import */\n\n\n var _utils_mp4_tools__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(\n /*! ../utils/mp4-tools */\n \"./src/utils/mp4-tools.ts\");\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(\n /*! ../utils/logger */\n \"./src/utils/logger.ts\");\n\n var now; // performance.now() not available on WebWorker, at least on Safari Desktop\n\n try {\n now = self.performance.now.bind(self.performance);\n } catch (err) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_11__[\"logger\"].debug('Unable to use Performance API on this environment');\n\n now = self.Date.now;\n }\n\n var muxConfig = [{\n demux: _demux_tsdemuxer__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n remux: _remux_mp4_remuxer__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n }, {\n demux: _demux_mp4demuxer__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n remux: _remux_passthrough_remuxer__WEBPACK_IMPORTED_MODULE_8__[\"default\"]\n }, {\n demux: _demux_aacdemuxer__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n remux: _remux_mp4_remuxer__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n }, {\n demux: _demux_mp3demuxer__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n remux: _remux_mp4_remuxer__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n }];\n var minProbeByteLength = 1024;\n muxConfig.forEach(function (_ref) {\n var demux = _ref.demux;\n minProbeByteLength = Math.max(minProbeByteLength, demux.minProbeByteLength);\n });\n\n var Transmuxer = /*#__PURE__*/function () {\n function Transmuxer(observer, typeSupported, config, vendor, id) {\n this.observer = void 0;\n this.typeSupported = void 0;\n this.config = void 0;\n this.vendor = void 0;\n this.id = void 0;\n this.demuxer = void 0;\n this.remuxer = void 0;\n this.decrypter = void 0;\n this.probe = void 0;\n this.decryptionPromise = null;\n this.transmuxConfig = void 0;\n this.currentTransmuxState = void 0;\n this.cache = new _chunk_cache__WEBPACK_IMPORTED_MODULE_9__[\"default\"]();\n this.observer = observer;\n this.typeSupported = typeSupported;\n this.config = config;\n this.vendor = vendor;\n this.id = id;\n }\n\n var _proto = Transmuxer.prototype;\n\n _proto.configure = function configure(transmuxConfig) {\n this.transmuxConfig = transmuxConfig;\n\n if (this.decrypter) {\n this.decrypter.reset();\n }\n };\n\n _proto.push = function push(data, decryptdata, chunkMeta, state) {\n var _this = this;\n\n var stats = chunkMeta.transmuxing;\n stats.executeStart = now();\n var uintData = new Uint8Array(data);\n var cache = this.cache,\n config = this.config,\n currentTransmuxState = this.currentTransmuxState,\n transmuxConfig = this.transmuxConfig;\n\n if (state) {\n this.currentTransmuxState = state;\n }\n\n var keyData = getEncryptionType(uintData, decryptdata);\n\n if (keyData && keyData.method === 'AES-128') {\n var decrypter = this.getDecrypter(); // Software decryption is synchronous; webCrypto is not\n\n if (config.enableSoftwareAES) {\n // Software decryption is progressive. Progressive decryption may not return a result on each call. Any cached\n // data is handled in the flush() call\n var decryptedData = decrypter.softwareDecrypt(uintData, keyData.key.buffer, keyData.iv.buffer);\n\n if (!decryptedData) {\n stats.executeEnd = now();\n return emptyResult(chunkMeta);\n }\n\n uintData = new Uint8Array(decryptedData);\n } else {\n this.decryptionPromise = decrypter.webCryptoDecrypt(uintData, keyData.key.buffer, keyData.iv.buffer).then(function (decryptedData) {\n // Calling push here is important; if flush() is called while this is still resolving, this ensures that\n // the decrypted data has been transmuxed\n var result = _this.push(decryptedData, null, chunkMeta);\n\n _this.decryptionPromise = null;\n return result;\n });\n return this.decryptionPromise;\n }\n }\n\n var _ref2 = state || currentTransmuxState,\n contiguous = _ref2.contiguous,\n discontinuity = _ref2.discontinuity,\n trackSwitch = _ref2.trackSwitch,\n accurateTimeOffset = _ref2.accurateTimeOffset,\n timeOffset = _ref2.timeOffset,\n initSegmentChange = _ref2.initSegmentChange;\n\n var audioCodec = transmuxConfig.audioCodec,\n videoCodec = transmuxConfig.videoCodec,\n defaultInitPts = transmuxConfig.defaultInitPts,\n duration = transmuxConfig.duration,\n initSegmentData = transmuxConfig.initSegmentData; // Reset muxers before probing to ensure that their state is clean, even if flushing occurs before a successful probe\n\n if (discontinuity || trackSwitch || initSegmentChange) {\n this.resetInitSegment(initSegmentData, audioCodec, videoCodec, duration);\n }\n\n if (discontinuity || initSegmentChange) {\n this.resetInitialTimestamp(defaultInitPts);\n }\n\n if (!contiguous) {\n this.resetContiguity();\n }\n\n if (this.needsProbing(uintData, discontinuity, trackSwitch)) {\n if (cache.dataLength) {\n var cachedData = cache.flush();\n uintData = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_10__[\"appendUint8Array\"])(cachedData, uintData);\n }\n\n this.configureTransmuxer(uintData, transmuxConfig);\n }\n\n var result = this.transmux(uintData, keyData, timeOffset, accurateTimeOffset, chunkMeta);\n var currentState = this.currentTransmuxState;\n currentState.contiguous = true;\n currentState.discontinuity = false;\n currentState.trackSwitch = false;\n stats.executeEnd = now();\n return result;\n } // Due to data caching, flush calls can produce more than one TransmuxerResult (hence the Array type)\n ;\n\n _proto.flush = function flush(chunkMeta) {\n var _this2 = this;\n\n var stats = chunkMeta.transmuxing;\n stats.executeStart = now();\n var decrypter = this.decrypter,\n cache = this.cache,\n currentTransmuxState = this.currentTransmuxState,\n decryptionPromise = this.decryptionPromise;\n\n if (decryptionPromise) {\n // Upon resolution, the decryption promise calls push() and returns its TransmuxerResult up the stack. Therefore\n // only flushing is required for async decryption\n return decryptionPromise.then(function () {\n return _this2.flush(chunkMeta);\n });\n }\n\n var transmuxResults = [];\n var timeOffset = currentTransmuxState.timeOffset;\n\n if (decrypter) {\n // The decrypter may have data cached, which needs to be demuxed. In this case we'll have two TransmuxResults\n // This happens in the case that we receive only 1 push call for a segment (either for non-progressive downloads,\n // or for progressive downloads with small segments)\n var decryptedData = decrypter.flush();\n\n if (decryptedData) {\n // Push always returns a TransmuxerResult if decryptdata is null\n transmuxResults.push(this.push(decryptedData, null, chunkMeta));\n }\n }\n\n var bytesSeen = cache.dataLength;\n cache.reset();\n var demuxer = this.demuxer,\n remuxer = this.remuxer;\n\n if (!demuxer || !remuxer) {\n // If probing failed, and each demuxer saw enough bytes to be able to probe, then Hls.js has been given content its not able to handle\n if (bytesSeen >= minProbeByteLength) {\n this.observer.emit(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, _events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].FRAG_PARSING_ERROR,\n fatal: true,\n reason: 'no demux matching with content found'\n });\n }\n\n stats.executeEnd = now();\n return [emptyResult(chunkMeta)];\n }\n\n var demuxResultOrPromise = demuxer.flush(timeOffset);\n\n if (isPromise(demuxResultOrPromise)) {\n // Decrypt final SAMPLE-AES samples\n return demuxResultOrPromise.then(function (demuxResult) {\n _this2.flushRemux(transmuxResults, demuxResult, chunkMeta);\n\n return transmuxResults;\n });\n }\n\n this.flushRemux(transmuxResults, demuxResultOrPromise, chunkMeta);\n return transmuxResults;\n };\n\n _proto.flushRemux = function flushRemux(transmuxResults, demuxResult, chunkMeta) {\n var audioTrack = demuxResult.audioTrack,\n avcTrack = demuxResult.avcTrack,\n id3Track = demuxResult.id3Track,\n textTrack = demuxResult.textTrack;\n var _this$currentTransmux = this.currentTransmuxState,\n accurateTimeOffset = _this$currentTransmux.accurateTimeOffset,\n timeOffset = _this$currentTransmux.timeOffset;\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_11__[\"logger\"].log(\"[transmuxer.ts]: Flushed fragment \" + chunkMeta.sn + (chunkMeta.part > -1 ? ' p: ' + chunkMeta.part : '') + \" of level \" + chunkMeta.level);\n\n var remuxResult = this.remuxer.remux(audioTrack, avcTrack, id3Track, textTrack, timeOffset, accurateTimeOffset, true, this.id);\n transmuxResults.push({\n remuxResult: remuxResult,\n chunkMeta: chunkMeta\n });\n chunkMeta.transmuxing.executeEnd = now();\n };\n\n _proto.resetInitialTimestamp = function resetInitialTimestamp(defaultInitPts) {\n var demuxer = this.demuxer,\n remuxer = this.remuxer;\n\n if (!demuxer || !remuxer) {\n return;\n }\n\n demuxer.resetTimeStamp(defaultInitPts);\n remuxer.resetTimeStamp(defaultInitPts);\n };\n\n _proto.resetContiguity = function resetContiguity() {\n var demuxer = this.demuxer,\n remuxer = this.remuxer;\n\n if (!demuxer || !remuxer) {\n return;\n }\n\n demuxer.resetContiguity();\n remuxer.resetNextTimestamp();\n };\n\n _proto.resetInitSegment = function resetInitSegment(initSegmentData, audioCodec, videoCodec, duration) {\n var demuxer = this.demuxer,\n remuxer = this.remuxer;\n\n if (!demuxer || !remuxer) {\n return;\n }\n\n demuxer.resetInitSegment(audioCodec, videoCodec, duration);\n remuxer.resetInitSegment(initSegmentData, audioCodec, videoCodec);\n };\n\n _proto.destroy = function destroy() {\n if (this.demuxer) {\n this.demuxer.destroy();\n this.demuxer = undefined;\n }\n\n if (this.remuxer) {\n this.remuxer.destroy();\n this.remuxer = undefined;\n }\n };\n\n _proto.transmux = function transmux(data, keyData, timeOffset, accurateTimeOffset, chunkMeta) {\n var result;\n\n if (keyData && keyData.method === 'SAMPLE-AES') {\n result = this.transmuxSampleAes(data, keyData, timeOffset, accurateTimeOffset, chunkMeta);\n } else {\n result = this.transmuxUnencrypted(data, timeOffset, accurateTimeOffset, chunkMeta);\n }\n\n return result;\n };\n\n _proto.transmuxUnencrypted = function transmuxUnencrypted(data, timeOffset, accurateTimeOffset, chunkMeta) {\n var _demux = this.demuxer.demux(data, timeOffset, false, !this.config.progressive),\n audioTrack = _demux.audioTrack,\n avcTrack = _demux.avcTrack,\n id3Track = _demux.id3Track,\n textTrack = _demux.textTrack;\n\n var remuxResult = this.remuxer.remux(audioTrack, avcTrack, id3Track, textTrack, timeOffset, accurateTimeOffset, false, this.id);\n return {\n remuxResult: remuxResult,\n chunkMeta: chunkMeta\n };\n };\n\n _proto.transmuxSampleAes = function transmuxSampleAes(data, decryptData, timeOffset, accurateTimeOffset, chunkMeta) {\n var _this3 = this;\n\n return this.demuxer.demuxSampleAes(data, decryptData, timeOffset).then(function (demuxResult) {\n var remuxResult = _this3.remuxer.remux(demuxResult.audioTrack, demuxResult.avcTrack, demuxResult.id3Track, demuxResult.textTrack, timeOffset, accurateTimeOffset, false, _this3.id);\n\n return {\n remuxResult: remuxResult,\n chunkMeta: chunkMeta\n };\n });\n };\n\n _proto.configureTransmuxer = function configureTransmuxer(data, transmuxConfig) {\n var config = this.config,\n observer = this.observer,\n typeSupported = this.typeSupported,\n vendor = this.vendor;\n var audioCodec = transmuxConfig.audioCodec,\n defaultInitPts = transmuxConfig.defaultInitPts,\n duration = transmuxConfig.duration,\n initSegmentData = transmuxConfig.initSegmentData,\n videoCodec = transmuxConfig.videoCodec; // probe for content type\n\n var mux;\n\n for (var i = 0, len = muxConfig.length; i < len; i++) {\n if (muxConfig[i].demux.probe(data)) {\n mux = muxConfig[i];\n break;\n }\n }\n\n if (!mux) {\n // If probing previous configs fail, use mp4 passthrough\n _utils_logger__WEBPACK_IMPORTED_MODULE_11__[\"logger\"].warn('Failed to find demuxer by probing frag, treating as mp4 passthrough');\n\n mux = {\n demux: _demux_mp4demuxer__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n remux: _remux_passthrough_remuxer__WEBPACK_IMPORTED_MODULE_8__[\"default\"]\n };\n } // so let's check that current remuxer and demuxer are still valid\n\n\n var demuxer = this.demuxer;\n var remuxer = this.remuxer;\n var Remuxer = mux.remux;\n var Demuxer = mux.demux;\n\n if (!remuxer || !(remuxer instanceof Remuxer)) {\n this.remuxer = new Remuxer(observer, config, typeSupported, vendor);\n }\n\n if (!demuxer || !(demuxer instanceof Demuxer)) {\n this.demuxer = new Demuxer(observer, config, typeSupported);\n this.probe = Demuxer.probe;\n } // Ensure that muxers are always initialized with an initSegment\n\n\n this.resetInitSegment(initSegmentData, audioCodec, videoCodec, duration);\n this.resetInitialTimestamp(defaultInitPts);\n };\n\n _proto.needsProbing = function needsProbing(data, discontinuity, trackSwitch) {\n // in case of continuity change, or track switch\n // we might switch from content type (AAC container to TS container, or TS to fmp4 for example)\n return !this.demuxer || !this.remuxer || discontinuity || trackSwitch;\n };\n\n _proto.getDecrypter = function getDecrypter() {\n var decrypter = this.decrypter;\n\n if (!decrypter) {\n decrypter = this.decrypter = new _crypt_decrypter__WEBPACK_IMPORTED_MODULE_2__[\"default\"](this.observer, this.config);\n }\n\n return decrypter;\n };\n\n return Transmuxer;\n }();\n\n function getEncryptionType(data, decryptData) {\n var encryptionType = null;\n\n if (data.byteLength > 0 && decryptData != null && decryptData.key != null && decryptData.iv !== null && decryptData.method != null) {\n encryptionType = decryptData;\n }\n\n return encryptionType;\n }\n\n var emptyResult = function emptyResult(chunkMeta) {\n return {\n remuxResult: {},\n chunkMeta: chunkMeta\n };\n };\n\n function isPromise(p) {\n return 'then' in p && p.then instanceof Function;\n }\n\n var TransmuxConfig = function TransmuxConfig(audioCodec, videoCodec, initSegmentData, duration, defaultInitPts) {\n this.audioCodec = void 0;\n this.videoCodec = void 0;\n this.initSegmentData = void 0;\n this.duration = void 0;\n this.defaultInitPts = void 0;\n this.audioCodec = audioCodec;\n this.videoCodec = videoCodec;\n this.initSegmentData = initSegmentData;\n this.duration = duration;\n this.defaultInitPts = defaultInitPts;\n };\n\n var TransmuxState = function TransmuxState(discontinuity, contiguous, accurateTimeOffset, trackSwitch, timeOffset, initSegmentChange) {\n this.discontinuity = void 0;\n this.contiguous = void 0;\n this.accurateTimeOffset = void 0;\n this.trackSwitch = void 0;\n this.timeOffset = void 0;\n this.initSegmentChange = void 0;\n this.discontinuity = discontinuity;\n this.contiguous = contiguous;\n this.accurateTimeOffset = accurateTimeOffset;\n this.trackSwitch = trackSwitch;\n this.timeOffset = timeOffset;\n this.initSegmentChange = initSegmentChange;\n };\n /***/\n\n },\n\n /***/\n \"./src/demux/tsdemuxer.ts\":\n /*!********************************!*\\\n !*** ./src/demux/tsdemuxer.ts ***!\n \\********************************/\n\n /*! exports provided: discardEPB, default */\n\n /***/\n function srcDemuxTsdemuxerTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"discardEPB\", function () {\n return discardEPB;\n });\n /* harmony import */\n\n\n var _adts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./adts */\n \"./src/demux/adts.ts\");\n /* harmony import */\n\n\n var _mpegaudio__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ./mpegaudio */\n \"./src/demux/mpegaudio.ts\");\n /* harmony import */\n\n\n var _exp_golomb__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ./exp-golomb */\n \"./src/demux/exp-golomb.ts\");\n /* harmony import */\n\n\n var _id3__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\n /*! ./id3 */\n \"./src/demux/id3.ts\");\n /* harmony import */\n\n\n var _sample_aes__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\n /*! ./sample-aes */\n \"./src/demux/sample-aes.ts\");\n /* harmony import */\n\n\n var _events__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(\n /*! ../events */\n \"./src/events.ts\");\n /* harmony import */\n\n\n var _utils_mp4_tools__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(\n /*! ../utils/mp4-tools */\n \"./src/utils/mp4-tools.ts\");\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(\n /*! ../utils/logger */\n \"./src/utils/logger.ts\");\n /* harmony import */\n\n\n var _errors__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(\n /*! ../errors */\n \"./src/errors.ts\");\n /**\n * highly optimized TS demuxer:\n * parse PAT, PMT\n * extract PES packet from audio and video PIDs\n * extract AVC/H264 NAL units and AAC/ADTS samples from PES packet\n * trigger the remuxer upon parsing completion\n * it also tries to workaround as best as it can audio codec switch (HE-AAC to AAC and vice versa), without having to restart the MediaSource.\n * it also controls the remuxing process :\n * upon discontinuity or level switch detection, it will also notifies the remuxer so that it can reset its state.\n */\n // We are using fixed track IDs for driving the MP4 remuxer\n // instead of following the TS PIDs.\n // There is no reason not to do this and some browsers/SourceBuffer-demuxers\n // may not like if there are TrackID \"switches\"\n // See https://github.com/video-dev/hls.js/issues/1331\n // Here we are mapping our internal track types to constant MP4 track IDs\n // With MSE currently one can only have one track of each, and we are muxing\n // whatever video/audio rendition in them.\n\n\n var RemuxerTrackIdConfig = {\n video: 1,\n audio: 2,\n id3: 3,\n text: 4\n };\n\n var TSDemuxer = /*#__PURE__*/function () {\n function TSDemuxer(observer, config, typeSupported) {\n this.observer = void 0;\n this.config = void 0;\n this.typeSupported = void 0;\n this.sampleAes = null;\n this.pmtParsed = false;\n this.audioCodec = void 0;\n this.videoCodec = void 0;\n this._duration = 0;\n this.aacLastPTS = null;\n this._initPTS = null;\n this._initDTS = null;\n this._pmtId = -1;\n this._avcTrack = void 0;\n this._audioTrack = void 0;\n this._id3Track = void 0;\n this._txtTrack = void 0;\n this.aacOverFlow = null;\n this.avcSample = null;\n this.remainderData = null;\n this.observer = observer;\n this.config = config;\n this.typeSupported = typeSupported;\n }\n\n TSDemuxer.probe = function probe(data) {\n var syncOffset = TSDemuxer.syncOffset(data);\n\n if (syncOffset < 0) {\n return false;\n } else {\n if (syncOffset) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_7__[\"logger\"].warn(\"MPEG2-TS detected but first sync word found @ offset \" + syncOffset + \", junk ahead ?\");\n }\n\n return true;\n }\n };\n\n TSDemuxer.syncOffset = function syncOffset(data) {\n // scan 1000 first bytes\n var scanwindow = Math.min(1000, data.length - 3 * 188);\n var i = 0;\n\n while (i < scanwindow) {\n // a TS fragment should contain at least 3 TS packets, a PAT, a PMT, and one PID, each starting with 0x47\n if (data[i] === 0x47 && data[i + 188] === 0x47 && data[i + 2 * 188] === 0x47) {\n return i;\n } else {\n i++;\n }\n }\n\n return -1;\n }\n /**\n * Creates a track model internal to demuxer used to drive remuxing input\n *\n * @param type 'audio' | 'video' | 'id3' | 'text'\n * @param duration\n * @return TSDemuxer's internal track model\n */\n ;\n\n TSDemuxer.createTrack = function createTrack(type, duration) {\n return {\n container: type === 'video' || type === 'audio' ? 'video/mp2t' : undefined,\n type: type,\n id: RemuxerTrackIdConfig[type],\n pid: -1,\n inputTimeScale: 90000,\n sequenceNumber: 0,\n samples: [],\n dropped: 0,\n duration: type === 'audio' ? duration : undefined\n };\n }\n /**\n * Initializes a new init segment on the demuxer/remuxer interface. Needed for discontinuities/track-switches (or at stream start)\n * Resets all internal track instances of the demuxer.\n */\n ;\n\n var _proto = TSDemuxer.prototype;\n\n _proto.resetInitSegment = function resetInitSegment(audioCodec, videoCodec, duration) {\n this.pmtParsed = false;\n this._pmtId = -1;\n this._avcTrack = TSDemuxer.createTrack('video', duration);\n this._audioTrack = TSDemuxer.createTrack('audio', duration);\n this._id3Track = TSDemuxer.createTrack('id3', duration);\n this._txtTrack = TSDemuxer.createTrack('text', duration);\n this._audioTrack.isAAC = true; // flush any partial content\n\n this.aacOverFlow = null;\n this.aacLastPTS = null;\n this.avcSample = null;\n this.audioCodec = audioCodec;\n this.videoCodec = videoCodec;\n this._duration = duration;\n };\n\n _proto.resetTimeStamp = function resetTimeStamp() {};\n\n _proto.resetContiguity = function resetContiguity() {\n var _audioTrack = this._audioTrack,\n _avcTrack = this._avcTrack,\n _id3Track = this._id3Track;\n\n if (_audioTrack) {\n _audioTrack.pesData = null;\n }\n\n if (_avcTrack) {\n _avcTrack.pesData = null;\n }\n\n if (_id3Track) {\n _id3Track.pesData = null;\n }\n\n this.aacOverFlow = null;\n this.aacLastPTS = null;\n };\n\n _proto.demux = function demux(data, timeOffset, isSampleAes, flush) {\n if (isSampleAes === void 0) {\n isSampleAes = false;\n }\n\n if (flush === void 0) {\n flush = false;\n }\n\n if (!isSampleAes) {\n this.sampleAes = null;\n }\n\n var pes;\n var avcTrack = this._avcTrack;\n var audioTrack = this._audioTrack;\n var id3Track = this._id3Track;\n var avcId = avcTrack.pid;\n var avcData = avcTrack.pesData;\n var audioId = audioTrack.pid;\n var id3Id = id3Track.pid;\n var audioData = audioTrack.pesData;\n var id3Data = id3Track.pesData;\n var unknownPIDs = false;\n var pmtParsed = this.pmtParsed;\n var pmtId = this._pmtId;\n var len = data.length;\n\n if (this.remainderData) {\n data = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_6__[\"appendUint8Array\"])(this.remainderData, data);\n len = data.length;\n this.remainderData = null;\n }\n\n if (len < 188 && !flush) {\n this.remainderData = data;\n return {\n audioTrack: audioTrack,\n avcTrack: avcTrack,\n id3Track: id3Track,\n textTrack: this._txtTrack\n };\n }\n\n var syncOffset = Math.max(0, TSDemuxer.syncOffset(data));\n len -= (len + syncOffset) % 188;\n\n if (len < data.byteLength && !flush) {\n this.remainderData = new Uint8Array(data.buffer, len, data.buffer.byteLength - len);\n } // loop through TS packets\n\n\n var tsPacketErrors = 0;\n\n for (var start = syncOffset; start < len; start += 188) {\n if (data[start] === 0x47) {\n var stt = !!(data[start + 1] & 0x40); // pid is a 13-bit field starting at the last bit of TS[1]\n\n var pid = ((data[start + 1] & 0x1f) << 8) + data[start + 2];\n var atf = (data[start + 3] & 0x30) >> 4; // if an adaption field is present, its length is specified by the fifth byte of the TS packet header.\n\n var offset = void 0;\n\n if (atf > 1) {\n offset = start + 5 + data[start + 4]; // continue if there is only adaptation field\n\n if (offset === start + 188) {\n continue;\n }\n } else {\n offset = start + 4;\n }\n\n switch (pid) {\n case avcId:\n if (stt) {\n if (avcData && (pes = parsePES(avcData))) {\n this.parseAVCPES(pes, false);\n }\n\n avcData = {\n data: [],\n size: 0\n };\n }\n\n if (avcData) {\n avcData.data.push(data.subarray(offset, start + 188));\n avcData.size += start + 188 - offset;\n }\n\n break;\n\n case audioId:\n if (stt) {\n if (audioData && (pes = parsePES(audioData))) {\n if (audioTrack.isAAC) {\n this.parseAACPES(pes);\n } else {\n this.parseMPEGPES(pes);\n }\n }\n\n audioData = {\n data: [],\n size: 0\n };\n }\n\n if (audioData) {\n audioData.data.push(data.subarray(offset, start + 188));\n audioData.size += start + 188 - offset;\n }\n\n break;\n\n case id3Id:\n if (stt) {\n if (id3Data && (pes = parsePES(id3Data))) {\n this.parseID3PES(pes);\n }\n\n id3Data = {\n data: [],\n size: 0\n };\n }\n\n if (id3Data) {\n id3Data.data.push(data.subarray(offset, start + 188));\n id3Data.size += start + 188 - offset;\n }\n\n break;\n\n case 0:\n if (stt) {\n offset += data[offset] + 1;\n }\n\n pmtId = this._pmtId = parsePAT(data, offset);\n break;\n\n case pmtId:\n {\n if (stt) {\n offset += data[offset] + 1;\n }\n\n var parsedPIDs = parsePMT(data, offset, this.typeSupported.mpeg === true || this.typeSupported.mp3 === true, isSampleAes); // only update track id if track PID found while parsing PMT\n // this is to avoid resetting the PID to -1 in case\n // track PID transiently disappears from the stream\n // this could happen in case of transient missing audio samples for example\n // NOTE this is only the PID of the track as found in TS,\n // but we are not using this for MP4 track IDs.\n\n avcId = parsedPIDs.avc;\n\n if (avcId > 0) {\n avcTrack.pid = avcId;\n }\n\n audioId = parsedPIDs.audio;\n\n if (audioId > 0) {\n audioTrack.pid = audioId;\n audioTrack.isAAC = parsedPIDs.isAAC;\n }\n\n id3Id = parsedPIDs.id3;\n\n if (id3Id > 0) {\n id3Track.pid = id3Id;\n }\n\n if (unknownPIDs && !pmtParsed) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_7__[\"logger\"].log('reparse from beginning');\n\n unknownPIDs = false; // we set it to -188, the += 188 in the for loop will reset start to 0\n\n start = syncOffset - 188;\n }\n\n pmtParsed = this.pmtParsed = true;\n break;\n }\n\n case 17:\n case 0x1fff:\n break;\n\n default:\n unknownPIDs = true;\n break;\n }\n } else {\n tsPacketErrors++;\n }\n }\n\n if (tsPacketErrors > 0) {\n this.observer.emit(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].ERROR, _events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_8__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_8__[\"ErrorDetails\"].FRAG_PARSING_ERROR,\n fatal: false,\n reason: \"Found \" + tsPacketErrors + \" TS packet/s that do not start with 0x47\"\n });\n }\n\n avcTrack.pesData = avcData;\n audioTrack.pesData = audioData;\n id3Track.pesData = id3Data;\n var demuxResult = {\n audioTrack: audioTrack,\n avcTrack: avcTrack,\n id3Track: id3Track,\n textTrack: this._txtTrack\n };\n\n if (flush) {\n this.extractRemainingSamples(demuxResult);\n }\n\n return demuxResult;\n };\n\n _proto.flush = function flush() {\n var remainderData = this.remainderData;\n this.remainderData = null;\n var result;\n\n if (remainderData) {\n result = this.demux(remainderData, -1, false, true);\n } else {\n result = {\n audioTrack: this._audioTrack,\n avcTrack: this._avcTrack,\n textTrack: this._txtTrack,\n id3Track: this._id3Track\n };\n }\n\n this.extractRemainingSamples(result);\n\n if (this.sampleAes) {\n return this.decrypt(result, this.sampleAes);\n }\n\n return result;\n };\n\n _proto.extractRemainingSamples = function extractRemainingSamples(demuxResult) {\n var audioTrack = demuxResult.audioTrack,\n avcTrack = demuxResult.avcTrack,\n id3Track = demuxResult.id3Track;\n var avcData = avcTrack.pesData;\n var audioData = audioTrack.pesData;\n var id3Data = id3Track.pesData; // try to parse last PES packets\n\n var pes;\n\n if (avcData && (pes = parsePES(avcData))) {\n this.parseAVCPES(pes, true);\n avcTrack.pesData = null;\n } else {\n // either avcData null or PES truncated, keep it for next frag parsing\n avcTrack.pesData = avcData;\n }\n\n if (audioData && (pes = parsePES(audioData))) {\n if (audioTrack.isAAC) {\n this.parseAACPES(pes);\n } else {\n this.parseMPEGPES(pes);\n }\n\n audioTrack.pesData = null;\n } else {\n if (audioData !== null && audioData !== void 0 && audioData.size) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_7__[\"logger\"].log('last AAC PES packet truncated,might overlap between fragments');\n } // either audioData null or PES truncated, keep it for next frag parsing\n\n\n audioTrack.pesData = audioData;\n }\n\n if (id3Data && (pes = parsePES(id3Data))) {\n this.parseID3PES(pes);\n id3Track.pesData = null;\n } else {\n // either id3Data null or PES truncated, keep it for next frag parsing\n id3Track.pesData = id3Data;\n }\n };\n\n _proto.demuxSampleAes = function demuxSampleAes(data, keyData, timeOffset) {\n var demuxResult = this.demux(data, timeOffset, true, !this.config.progressive);\n var sampleAes = this.sampleAes = new _sample_aes__WEBPACK_IMPORTED_MODULE_4__[\"default\"](this.observer, this.config, keyData);\n return this.decrypt(demuxResult, sampleAes);\n };\n\n _proto.decrypt = function decrypt(demuxResult, sampleAes) {\n return new Promise(function (resolve) {\n var audioTrack = demuxResult.audioTrack,\n avcTrack = demuxResult.avcTrack;\n\n if (audioTrack.samples && audioTrack.isAAC) {\n sampleAes.decryptAacSamples(audioTrack.samples, 0, function () {\n if (avcTrack.samples) {\n sampleAes.decryptAvcSamples(avcTrack.samples, 0, 0, function () {\n resolve(demuxResult);\n });\n } else {\n resolve(demuxResult);\n }\n });\n } else if (avcTrack.samples) {\n sampleAes.decryptAvcSamples(avcTrack.samples, 0, 0, function () {\n resolve(demuxResult);\n });\n }\n });\n };\n\n _proto.destroy = function destroy() {\n this._initPTS = this._initDTS = null;\n this._duration = 0;\n };\n\n _proto.parseAVCPES = function parseAVCPES(pes, last) {\n var _this = this;\n\n var track = this._avcTrack;\n var units = this.parseAVCNALu(pes.data);\n var debug = false;\n var avcSample = this.avcSample;\n var push;\n var spsfound = false; // free pes.data to save up some memory\n\n pes.data = null; // if new NAL units found and last sample still there, let's push ...\n // this helps parsing streams with missing AUD (only do this if AUD never found)\n\n if (avcSample && units.length && !track.audFound) {\n pushAccessUnit(avcSample, track);\n avcSample = this.avcSample = createAVCSample(false, pes.pts, pes.dts, '');\n }\n\n units.forEach(function (unit) {\n switch (unit.type) {\n // NDR\n case 1:\n {\n push = true;\n\n if (!avcSample) {\n avcSample = _this.avcSample = createAVCSample(true, pes.pts, pes.dts, '');\n }\n\n if (debug) {\n avcSample.debug += 'NDR ';\n }\n\n avcSample.frame = true;\n var data = unit.data; // only check slice type to detect KF in case SPS found in same packet (any keyframe is preceded by SPS ...)\n\n if (spsfound && data.length > 4) {\n // retrieve slice type by parsing beginning of NAL unit (follow H264 spec, slice_header definition) to detect keyframe embedded in NDR\n var sliceType = new _exp_golomb__WEBPACK_IMPORTED_MODULE_2__[\"default\"](data).readSliceType(); // 2 : I slice, 4 : SI slice, 7 : I slice, 9: SI slice\n // SI slice : A slice that is coded using intra prediction only and using quantisation of the prediction samples.\n // An SI slice can be coded such that its decoded samples can be constructed identically to an SP slice.\n // I slice: A slice that is not an SI slice that is decoded using intra prediction only.\n // if (sliceType === 2 || sliceType === 7) {\n\n if (sliceType === 2 || sliceType === 4 || sliceType === 7 || sliceType === 9) {\n avcSample.key = true;\n }\n }\n\n break; // IDR\n }\n\n case 5:\n push = true; // handle PES not starting with AUD\n\n if (!avcSample) {\n avcSample = _this.avcSample = createAVCSample(true, pes.pts, pes.dts, '');\n }\n\n if (debug) {\n avcSample.debug += 'IDR ';\n }\n\n avcSample.key = true;\n avcSample.frame = true;\n break;\n // SEI\n\n case 6:\n {\n push = true;\n\n if (debug && avcSample) {\n avcSample.debug += 'SEI ';\n }\n\n var expGolombDecoder = new _exp_golomb__WEBPACK_IMPORTED_MODULE_2__[\"default\"](discardEPB(unit.data)); // skip frameType\n\n expGolombDecoder.readUByte();\n var payloadType = 0;\n var payloadSize = 0;\n var endOfCaptions = false;\n var b = 0;\n\n while (!endOfCaptions && expGolombDecoder.bytesAvailable > 1) {\n payloadType = 0;\n\n do {\n b = expGolombDecoder.readUByte();\n payloadType += b;\n } while (b === 0xff); // Parse payload size.\n\n\n payloadSize = 0;\n\n do {\n b = expGolombDecoder.readUByte();\n payloadSize += b;\n } while (b === 0xff); // TODO: there can be more than one payload in an SEI packet...\n // TODO: need to read type and size in a while loop to get them all\n\n\n if (payloadType === 4 && expGolombDecoder.bytesAvailable !== 0) {\n endOfCaptions = true;\n var countryCode = expGolombDecoder.readUByte();\n\n if (countryCode === 181) {\n var providerCode = expGolombDecoder.readUShort();\n\n if (providerCode === 49) {\n var userStructure = expGolombDecoder.readUInt();\n\n if (userStructure === 0x47413934) {\n var userDataType = expGolombDecoder.readUByte(); // Raw CEA-608 bytes wrapped in CEA-708 packet\n\n if (userDataType === 3) {\n var firstByte = expGolombDecoder.readUByte();\n var secondByte = expGolombDecoder.readUByte();\n var totalCCs = 31 & firstByte;\n var byteArray = [firstByte, secondByte];\n\n for (var i = 0; i < totalCCs; i++) {\n // 3 bytes per CC\n byteArray.push(expGolombDecoder.readUByte());\n byteArray.push(expGolombDecoder.readUByte());\n byteArray.push(expGolombDecoder.readUByte());\n }\n\n insertSampleInOrder(_this._txtTrack.samples, {\n type: 3,\n pts: pes.pts,\n bytes: byteArray\n });\n }\n }\n }\n }\n } else if (payloadType === 5 && expGolombDecoder.bytesAvailable !== 0) {\n endOfCaptions = true;\n\n if (payloadSize > 16) {\n var uuidStrArray = [];\n\n for (var _i = 0; _i < 16; _i++) {\n uuidStrArray.push(expGolombDecoder.readUByte().toString(16));\n\n if (_i === 3 || _i === 5 || _i === 7 || _i === 9) {\n uuidStrArray.push('-');\n }\n }\n\n var length = payloadSize - 16;\n var userDataPayloadBytes = new Uint8Array(length);\n\n for (var _i2 = 0; _i2 < length; _i2++) {\n userDataPayloadBytes[_i2] = expGolombDecoder.readUByte();\n }\n\n insertSampleInOrder(_this._txtTrack.samples, {\n pts: pes.pts,\n payloadType: payloadType,\n uuid: uuidStrArray.join(''),\n userData: Object(_id3__WEBPACK_IMPORTED_MODULE_3__[\"utf8ArrayToStr\"])(userDataPayloadBytes),\n userDataBytes: userDataPayloadBytes\n });\n }\n } else if (payloadSize < expGolombDecoder.bytesAvailable) {\n for (var _i3 = 0; _i3 < payloadSize; _i3++) {\n expGolombDecoder.readUByte();\n }\n }\n }\n\n break; // SPS\n }\n\n case 7:\n push = true;\n spsfound = true;\n\n if (debug && avcSample) {\n avcSample.debug += 'SPS ';\n }\n\n if (!track.sps) {\n var _expGolombDecoder = new _exp_golomb__WEBPACK_IMPORTED_MODULE_2__[\"default\"](unit.data);\n\n var config = _expGolombDecoder.readSPS();\n\n track.width = config.width;\n track.height = config.height;\n track.pixelRatio = config.pixelRatio; // TODO: `track.sps` is defined as a `number[]`, but we're setting it to a `Uint8Array[]`.\n\n track.sps = [unit.data];\n track.duration = _this._duration;\n var codecarray = unit.data.subarray(1, 4);\n var codecstring = 'avc1.';\n\n for (var _i4 = 0; _i4 < 3; _i4++) {\n var h = codecarray[_i4].toString(16);\n\n if (h.length < 2) {\n h = '0' + h;\n }\n\n codecstring += h;\n }\n\n track.codec = codecstring;\n }\n\n break;\n // PPS\n\n case 8:\n push = true;\n\n if (debug && avcSample) {\n avcSample.debug += 'PPS ';\n }\n\n if (!track.pps) {\n // TODO: `track.pss` is defined as a `number[]`, but we're setting it to a `Uint8Array[]`.\n track.pps = [unit.data];\n }\n\n break;\n // AUD\n\n case 9:\n push = false;\n track.audFound = true;\n\n if (avcSample) {\n pushAccessUnit(avcSample, track);\n }\n\n avcSample = _this.avcSample = createAVCSample(false, pes.pts, pes.dts, debug ? 'AUD ' : '');\n break;\n // Filler Data\n\n case 12:\n push = false;\n break;\n\n default:\n push = false;\n\n if (avcSample) {\n avcSample.debug += 'unknown NAL ' + unit.type + ' ';\n }\n\n break;\n }\n\n if (avcSample && push) {\n var _units = avcSample.units;\n\n _units.push(unit);\n }\n }); // if last PES packet, push samples\n\n if (last && avcSample) {\n pushAccessUnit(avcSample, track);\n this.avcSample = null;\n }\n };\n\n _proto.getLastNalUnit = function getLastNalUnit() {\n var _avcSample;\n\n var avcSample = this.avcSample;\n var lastUnit; // try to fallback to previous sample if current one is empty\n\n if (!avcSample || avcSample.units.length === 0) {\n var samples = this._avcTrack.samples;\n avcSample = samples[samples.length - 1];\n }\n\n if ((_avcSample = avcSample) !== null && _avcSample !== void 0 && _avcSample.units) {\n var units = avcSample.units;\n lastUnit = units[units.length - 1];\n }\n\n return lastUnit;\n };\n\n _proto.parseAVCNALu = function parseAVCNALu(array) {\n var len = array.byteLength;\n var track = this._avcTrack;\n var state = track.naluState || 0;\n var lastState = state;\n var units = [];\n var i = 0;\n var value;\n var overflow;\n var unitType;\n var lastUnitStart = -1;\n var lastUnitType = 0; // logger.log('PES:' + Hex.hexDump(array));\n\n if (state === -1) {\n // special use case where we found 3 or 4-byte start codes exactly at the end of previous PES packet\n lastUnitStart = 0; // NALu type is value read from offset 0\n\n lastUnitType = array[0] & 0x1f;\n state = 0;\n i = 1;\n }\n\n while (i < len) {\n value = array[i++]; // optimization. state 0 and 1 are the predominant case. let's handle them outside of the switch/case\n\n if (!state) {\n state = value ? 0 : 1;\n continue;\n }\n\n if (state === 1) {\n state = value ? 0 : 2;\n continue;\n } // here we have state either equal to 2 or 3\n\n\n if (!value) {\n state = 3;\n } else if (value === 1) {\n if (lastUnitStart >= 0) {\n var unit = {\n data: array.subarray(lastUnitStart, i - state - 1),\n type: lastUnitType\n }; // logger.log('pushing NALU, type/size:' + unit.type + '/' + unit.data.byteLength);\n\n units.push(unit);\n } else {\n // lastUnitStart is undefined => this is the first start code found in this PES packet\n // first check if start code delimiter is overlapping between 2 PES packets,\n // ie it started in last packet (lastState not zero)\n // and ended at the beginning of this PES packet (i <= 4 - lastState)\n var lastUnit = this.getLastNalUnit();\n\n if (lastUnit) {\n if (lastState && i <= 4 - lastState) {\n // start delimiter overlapping between PES packets\n // strip start delimiter bytes from the end of last NAL unit\n // check if lastUnit had a state different from zero\n if (lastUnit.state) {\n // strip last bytes\n lastUnit.data = lastUnit.data.subarray(0, lastUnit.data.byteLength - lastState);\n }\n } // If NAL units are not starting right at the beginning of the PES packet, push preceding data into previous NAL unit.\n\n\n overflow = i - state - 1;\n\n if (overflow > 0) {\n // logger.log('first NALU found with overflow:' + overflow);\n var tmp = new Uint8Array(lastUnit.data.byteLength + overflow);\n tmp.set(lastUnit.data, 0);\n tmp.set(array.subarray(0, overflow), lastUnit.data.byteLength);\n lastUnit.data = tmp;\n lastUnit.state = 0;\n }\n }\n } // check if we can read unit type\n\n\n if (i < len) {\n unitType = array[i] & 0x1f; // logger.log('find NALU @ offset:' + i + ',type:' + unitType);\n\n lastUnitStart = i;\n lastUnitType = unitType;\n state = 0;\n } else {\n // not enough byte to read unit type. let's read it on next PES parsing\n state = -1;\n }\n } else {\n state = 0;\n }\n }\n\n if (lastUnitStart >= 0 && state >= 0) {\n var _unit = {\n data: array.subarray(lastUnitStart, len),\n type: lastUnitType,\n state: state\n };\n units.push(_unit); // logger.log('pushing NALU, type/size/state:' + unit.type + '/' + unit.data.byteLength + '/' + state);\n } // no NALu found\n\n\n if (units.length === 0) {\n // append pes.data to previous NAL unit\n var _lastUnit = this.getLastNalUnit();\n\n if (_lastUnit) {\n var _tmp = new Uint8Array(_lastUnit.data.byteLength + array.byteLength);\n\n _tmp.set(_lastUnit.data, 0);\n\n _tmp.set(array, _lastUnit.data.byteLength);\n\n _lastUnit.data = _tmp;\n }\n }\n\n track.naluState = state;\n return units;\n };\n\n _proto.parseAACPES = function parseAACPES(pes) {\n var startOffset = 0;\n var track = this._audioTrack;\n var aacOverFlow = this.aacOverFlow;\n var data = pes.data;\n\n if (aacOverFlow) {\n this.aacOverFlow = null;\n var sampleLength = aacOverFlow.sample.unit.byteLength;\n var frameMissingBytes = Math.min(aacOverFlow.missing, sampleLength);\n var frameOverflowBytes = sampleLength - frameMissingBytes;\n aacOverFlow.sample.unit.set(data.subarray(0, frameMissingBytes), frameOverflowBytes);\n track.samples.push(aacOverFlow.sample); // logger.log(`AAC: append overflowing ${frameOverflowBytes} bytes to beginning of new PES`);\n\n startOffset = aacOverFlow.missing;\n } // look for ADTS header (0xFFFx)\n\n\n var offset;\n var len;\n\n for (offset = startOffset, len = data.length; offset < len - 1; offset++) {\n if (_adts__WEBPACK_IMPORTED_MODULE_0__[\"isHeader\"](data, offset)) {\n break;\n }\n } // if ADTS header does not start straight from the beginning of the PES payload, raise an error\n\n\n if (offset !== startOffset) {\n var reason;\n var fatal;\n\n if (offset < len - 1) {\n reason = \"AAC PES did not start with ADTS header,offset:\" + offset;\n fatal = false;\n } else {\n reason = 'no ADTS header found in AAC PES';\n fatal = true;\n }\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_7__[\"logger\"].warn(\"parsing error:\" + reason);\n\n this.observer.emit(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].ERROR, _events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_8__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_8__[\"ErrorDetails\"].FRAG_PARSING_ERROR,\n fatal: fatal,\n reason: reason\n });\n\n if (fatal) {\n return;\n }\n }\n\n _adts__WEBPACK_IMPORTED_MODULE_0__[\"initTrackConfig\"](track, this.observer, data, offset, this.audioCodec);\n\n var pts;\n\n if (pes.pts !== undefined) {\n pts = pes.pts;\n } else if (aacOverFlow) {\n // if last AAC frame is overflowing, we should ensure timestamps are contiguous:\n // first sample PTS should be equal to last sample PTS + frameDuration\n var frameDuration = _adts__WEBPACK_IMPORTED_MODULE_0__[\"getFrameDuration\"](track.samplerate);\n\n pts = aacOverFlow.sample.pts + frameDuration;\n } else {\n _utils_logger__WEBPACK_IMPORTED_MODULE_7__[\"logger\"].warn('[tsdemuxer]: AAC PES unknown PTS');\n\n return;\n } // scan for aac samples\n\n\n var frameIndex = 0;\n\n while (offset < len) {\n if (_adts__WEBPACK_IMPORTED_MODULE_0__[\"isHeader\"](data, offset)) {\n if (offset + 5 < len) {\n var frame = _adts__WEBPACK_IMPORTED_MODULE_0__[\"appendFrame\"](track, data, offset, pts, frameIndex);\n\n if (frame) {\n if (frame.missing) {\n this.aacOverFlow = frame;\n } else {\n offset += frame.length;\n frameIndex++;\n continue;\n }\n }\n } // We are at an ADTS header, but do not have enough data for a frame\n // Remaining data will be added to aacOverFlow\n\n\n break;\n } else {\n // nothing found, keep looking\n offset++;\n }\n }\n };\n\n _proto.parseMPEGPES = function parseMPEGPES(pes) {\n var data = pes.data;\n var length = data.length;\n var frameIndex = 0;\n var offset = 0;\n var pts = pes.pts;\n\n if (pts === undefined) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_7__[\"logger\"].warn('[tsdemuxer]: MPEG PES unknown PTS');\n\n return;\n }\n\n while (offset < length) {\n if (_mpegaudio__WEBPACK_IMPORTED_MODULE_1__[\"isHeader\"](data, offset)) {\n var frame = _mpegaudio__WEBPACK_IMPORTED_MODULE_1__[\"appendFrame\"](this._audioTrack, data, offset, pts, frameIndex);\n\n if (frame) {\n offset += frame.length;\n frameIndex++;\n } else {\n // logger.log('Unable to parse Mpeg audio frame');\n break;\n }\n } else {\n // nothing found, keep looking\n offset++;\n }\n }\n };\n\n _proto.parseID3PES = function parseID3PES(pes) {\n if (pes.pts === undefined) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_7__[\"logger\"].warn('[tsdemuxer]: ID3 PES unknown PTS');\n\n return;\n }\n\n this._id3Track.samples.push(pes);\n };\n\n return TSDemuxer;\n }();\n\n TSDemuxer.minProbeByteLength = 188;\n\n function createAVCSample(key, pts, dts, debug) {\n return {\n key: key,\n frame: false,\n pts: pts,\n dts: dts,\n units: [],\n debug: debug,\n length: 0\n };\n }\n\n function parsePAT(data, offset) {\n // skip the PSI header and parse the first PMT entry\n return (data[offset + 10] & 0x1f) << 8 | data[offset + 11]; // logger.log('PMT PID:' + this._pmtId);\n }\n\n function parsePMT(data, offset, mpegSupported, isSampleAes) {\n var result = {\n audio: -1,\n avc: -1,\n id3: -1,\n isAAC: true\n };\n var sectionLength = (data[offset + 1] & 0x0f) << 8 | data[offset + 2];\n var tableEnd = offset + 3 + sectionLength - 4; // to determine where the table is, we have to figure out how\n // long the program info descriptors are\n\n var programInfoLength = (data[offset + 10] & 0x0f) << 8 | data[offset + 11]; // advance the offset to the first entry in the mapping table\n\n offset += 12 + programInfoLength;\n\n while (offset < tableEnd) {\n var pid = (data[offset + 1] & 0x1f) << 8 | data[offset + 2];\n\n switch (data[offset]) {\n case 0xcf:\n // SAMPLE-AES AAC\n if (!isSampleAes) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_7__[\"logger\"].log('ADTS AAC with AES-128-CBC frame encryption found in unencrypted stream');\n\n break;\n }\n\n /* falls through */\n\n case 0x0f:\n // ISO/IEC 13818-7 ADTS AAC (MPEG-2 lower bit-rate audio)\n // logger.log('AAC PID:' + pid);\n if (result.audio === -1) {\n result.audio = pid;\n }\n\n break;\n // Packetized metadata (ID3)\n\n case 0x15:\n // logger.log('ID3 PID:' + pid);\n if (result.id3 === -1) {\n result.id3 = pid;\n }\n\n break;\n\n case 0xdb:\n // SAMPLE-AES AVC\n if (!isSampleAes) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_7__[\"logger\"].log('H.264 with AES-128-CBC slice encryption found in unencrypted stream');\n\n break;\n }\n\n /* falls through */\n\n case 0x1b:\n // ITU-T Rec. H.264 and ISO/IEC 14496-10 (lower bit-rate video)\n // logger.log('AVC PID:' + pid);\n if (result.avc === -1) {\n result.avc = pid;\n }\n\n break;\n // ISO/IEC 11172-3 (MPEG-1 audio)\n // or ISO/IEC 13818-3 (MPEG-2 halved sample rate audio)\n\n case 0x03:\n case 0x04:\n // logger.log('MPEG PID:' + pid);\n if (!mpegSupported) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_7__[\"logger\"].log('MPEG audio found, not supported in this browser');\n } else if (result.audio === -1) {\n result.audio = pid;\n result.isAAC = false;\n }\n\n break;\n\n case 0x24:\n _utils_logger__WEBPACK_IMPORTED_MODULE_7__[\"logger\"].warn('Unsupported HEVC stream type found');\n\n break;\n\n default:\n // logger.log('unknown stream type:' + data[offset]);\n break;\n } // move to the next table entry\n // skip past the elementary stream descriptors, if present\n\n\n offset += ((data[offset + 3] & 0x0f) << 8 | data[offset + 4]) + 5;\n }\n\n return result;\n }\n\n function parsePES(stream) {\n var i = 0;\n var frag;\n var pesLen;\n var pesHdrLen;\n var pesPts;\n var pesDts;\n var data = stream.data; // safety check\n\n if (!stream || stream.size === 0) {\n return null;\n } // we might need up to 19 bytes to read PES header\n // if first chunk of data is less than 19 bytes, let's merge it with following ones until we get 19 bytes\n // usually only one merge is needed (and this is rare ...)\n\n\n while (data[0].length < 19 && data.length > 1) {\n var newData = new Uint8Array(data[0].length + data[1].length);\n newData.set(data[0]);\n newData.set(data[1], data[0].length);\n data[0] = newData;\n data.splice(1, 1);\n } // retrieve PTS/DTS from first fragment\n\n\n frag = data[0];\n var pesPrefix = (frag[0] << 16) + (frag[1] << 8) + frag[2];\n\n if (pesPrefix === 1) {\n pesLen = (frag[4] << 8) + frag[5]; // if PES parsed length is not zero and greater than total received length, stop parsing. PES might be truncated\n // minus 6 : PES header size\n\n if (pesLen && pesLen > stream.size - 6) {\n return null;\n }\n\n var pesFlags = frag[7];\n\n if (pesFlags & 0xc0) {\n /* PES header described here : http://dvd.sourceforge.net/dvdinfo/pes-hdr.html\n as PTS / DTS is 33 bit we cannot use bitwise operator in JS,\n as Bitwise operators treat their operands as a sequence of 32 bits */\n pesPts = (frag[9] & 0x0e) * 536870912 + // 1 << 29\n (frag[10] & 0xff) * 4194304 + // 1 << 22\n (frag[11] & 0xfe) * 16384 + // 1 << 14\n (frag[12] & 0xff) * 128 + // 1 << 7\n (frag[13] & 0xfe) / 2;\n\n if (pesFlags & 0x40) {\n pesDts = (frag[14] & 0x0e) * 536870912 + // 1 << 29\n (frag[15] & 0xff) * 4194304 + // 1 << 22\n (frag[16] & 0xfe) * 16384 + // 1 << 14\n (frag[17] & 0xff) * 128 + // 1 << 7\n (frag[18] & 0xfe) / 2;\n\n if (pesPts - pesDts > 60 * 90000) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_7__[\"logger\"].warn(Math.round((pesPts - pesDts) / 90000) + \"s delta between PTS and DTS, align them\");\n\n pesPts = pesDts;\n }\n } else {\n pesDts = pesPts;\n }\n }\n\n pesHdrLen = frag[8]; // 9 bytes : 6 bytes for PES header + 3 bytes for PES extension\n\n var payloadStartOffset = pesHdrLen + 9;\n\n if (stream.size <= payloadStartOffset) {\n return null;\n }\n\n stream.size -= payloadStartOffset; // reassemble PES packet\n\n var pesData = new Uint8Array(stream.size);\n\n for (var j = 0, dataLen = data.length; j < dataLen; j++) {\n frag = data[j];\n var len = frag.byteLength;\n\n if (payloadStartOffset) {\n if (payloadStartOffset > len) {\n // trim full frag if PES header bigger than frag\n payloadStartOffset -= len;\n continue;\n } else {\n // trim partial frag if PES header smaller than frag\n frag = frag.subarray(payloadStartOffset);\n len -= payloadStartOffset;\n payloadStartOffset = 0;\n }\n }\n\n pesData.set(frag, i);\n i += len;\n }\n\n if (pesLen) {\n // payload size : remove PES header + PES extension\n pesLen -= pesHdrLen + 3;\n }\n\n return {\n data: pesData,\n pts: pesPts,\n dts: pesDts,\n len: pesLen\n };\n }\n\n return null;\n }\n\n function pushAccessUnit(avcSample, avcTrack) {\n if (avcSample.units.length && avcSample.frame) {\n // if sample does not have PTS/DTS, patch with last sample PTS/DTS\n if (avcSample.pts === undefined) {\n var samples = avcTrack.samples;\n var nbSamples = samples.length;\n\n if (nbSamples) {\n var lastSample = samples[nbSamples - 1];\n avcSample.pts = lastSample.pts;\n avcSample.dts = lastSample.dts;\n } else {\n // dropping samples, no timestamp found\n avcTrack.dropped++;\n return;\n }\n }\n\n avcTrack.samples.push(avcSample);\n }\n\n if (avcSample.debug.length) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_7__[\"logger\"].log(avcSample.pts + '/' + avcSample.dts + ':' + avcSample.debug);\n }\n }\n\n function insertSampleInOrder(arr, data) {\n var len = arr.length;\n\n if (len > 0) {\n if (data.pts >= arr[len - 1].pts) {\n arr.push(data);\n } else {\n for (var pos = len - 1; pos >= 0; pos--) {\n if (data.pts < arr[pos].pts) {\n arr.splice(pos, 0, data);\n break;\n }\n }\n }\n } else {\n arr.push(data);\n }\n }\n /**\n * remove Emulation Prevention bytes from a RBSP\n */\n\n\n function discardEPB(data) {\n var length = data.byteLength;\n var EPBPositions = [];\n var i = 1; // Find all `Emulation Prevention Bytes`\n\n while (i < length - 2) {\n if (data[i] === 0 && data[i + 1] === 0 && data[i + 2] === 0x03) {\n EPBPositions.push(i + 2);\n i += 2;\n } else {\n i++;\n }\n } // If no Emulation Prevention Bytes were found just return the original\n // array\n\n\n if (EPBPositions.length === 0) {\n return data;\n } // Create a new array to hold the NAL unit data\n\n\n var newLength = length - EPBPositions.length;\n var newData = new Uint8Array(newLength);\n var sourceIndex = 0;\n\n for (i = 0; i < newLength; sourceIndex++, i++) {\n if (sourceIndex === EPBPositions[0]) {\n // Skip this byte\n sourceIndex++; // Remove this position index\n\n EPBPositions.shift();\n }\n\n newData[i] = data[sourceIndex];\n }\n\n return newData;\n }\n /* harmony default export */\n\n\n __webpack_exports__[\"default\"] = TSDemuxer;\n /***/\n },\n\n /***/\n \"./src/errors.ts\":\n /*!***********************!*\\\n !*** ./src/errors.ts ***!\n \\***********************/\n\n /*! exports provided: ErrorTypes, ErrorDetails */\n\n /***/\n function srcErrorsTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"ErrorTypes\", function () {\n return ErrorTypes;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"ErrorDetails\", function () {\n return ErrorDetails;\n });\n\n var ErrorTypes;\n /**\n * @enum {ErrorDetails}\n * @typedef {string} ErrorDetail\n */\n\n (function (ErrorTypes) {\n ErrorTypes[\"NETWORK_ERROR\"] = \"networkError\";\n ErrorTypes[\"MEDIA_ERROR\"] = \"mediaError\";\n ErrorTypes[\"KEY_SYSTEM_ERROR\"] = \"keySystemError\";\n ErrorTypes[\"MUX_ERROR\"] = \"muxError\";\n ErrorTypes[\"OTHER_ERROR\"] = \"otherError\";\n })(ErrorTypes || (ErrorTypes = {}));\n\n var ErrorDetails;\n\n (function (ErrorDetails) {\n ErrorDetails[\"KEY_SYSTEM_NO_KEYS\"] = \"keySystemNoKeys\";\n ErrorDetails[\"KEY_SYSTEM_NO_ACCESS\"] = \"keySystemNoAccess\";\n ErrorDetails[\"KEY_SYSTEM_NO_SESSION\"] = \"keySystemNoSession\";\n ErrorDetails[\"KEY_SYSTEM_LICENSE_REQUEST_FAILED\"] = \"keySystemLicenseRequestFailed\";\n ErrorDetails[\"KEY_SYSTEM_NO_INIT_DATA\"] = \"keySystemNoInitData\";\n ErrorDetails[\"MANIFEST_LOAD_ERROR\"] = \"manifestLoadError\";\n ErrorDetails[\"MANIFEST_LOAD_TIMEOUT\"] = \"manifestLoadTimeOut\";\n ErrorDetails[\"MANIFEST_PARSING_ERROR\"] = \"manifestParsingError\";\n ErrorDetails[\"MANIFEST_INCOMPATIBLE_CODECS_ERROR\"] = \"manifestIncompatibleCodecsError\";\n ErrorDetails[\"LEVEL_EMPTY_ERROR\"] = \"levelEmptyError\";\n ErrorDetails[\"LEVEL_LOAD_ERROR\"] = \"levelLoadError\";\n ErrorDetails[\"LEVEL_LOAD_TIMEOUT\"] = \"levelLoadTimeOut\";\n ErrorDetails[\"LEVEL_SWITCH_ERROR\"] = \"levelSwitchError\";\n ErrorDetails[\"AUDIO_TRACK_LOAD_ERROR\"] = \"audioTrackLoadError\";\n ErrorDetails[\"AUDIO_TRACK_LOAD_TIMEOUT\"] = \"audioTrackLoadTimeOut\";\n ErrorDetails[\"SUBTITLE_LOAD_ERROR\"] = \"subtitleTrackLoadError\";\n ErrorDetails[\"SUBTITLE_TRACK_LOAD_TIMEOUT\"] = \"subtitleTrackLoadTimeOut\";\n ErrorDetails[\"FRAG_LOAD_ERROR\"] = \"fragLoadError\";\n ErrorDetails[\"FRAG_LOAD_TIMEOUT\"] = \"fragLoadTimeOut\";\n ErrorDetails[\"FRAG_DECRYPT_ERROR\"] = \"fragDecryptError\";\n ErrorDetails[\"FRAG_PARSING_ERROR\"] = \"fragParsingError\";\n ErrorDetails[\"REMUX_ALLOC_ERROR\"] = \"remuxAllocError\";\n ErrorDetails[\"KEY_LOAD_ERROR\"] = \"keyLoadError\";\n ErrorDetails[\"KEY_LOAD_TIMEOUT\"] = \"keyLoadTimeOut\";\n ErrorDetails[\"BUFFER_ADD_CODEC_ERROR\"] = \"bufferAddCodecError\";\n ErrorDetails[\"BUFFER_INCOMPATIBLE_CODECS_ERROR\"] = \"bufferIncompatibleCodecsError\";\n ErrorDetails[\"BUFFER_APPEND_ERROR\"] = \"bufferAppendError\";\n ErrorDetails[\"BUFFER_APPENDING_ERROR\"] = \"bufferAppendingError\";\n ErrorDetails[\"BUFFER_STALLED_ERROR\"] = \"bufferStalledError\";\n ErrorDetails[\"BUFFER_FULL_ERROR\"] = \"bufferFullError\";\n ErrorDetails[\"BUFFER_SEEK_OVER_HOLE\"] = \"bufferSeekOverHole\";\n ErrorDetails[\"BUFFER_NUDGE_ON_STALL\"] = \"bufferNudgeOnStall\";\n ErrorDetails[\"INTERNAL_EXCEPTION\"] = \"internalException\";\n ErrorDetails[\"INTERNAL_ABORTED\"] = \"aborted\";\n ErrorDetails[\"UNKNOWN\"] = \"unknown\";\n })(ErrorDetails || (ErrorDetails = {}));\n /***/\n\n },\n\n /***/\n \"./src/events.ts\":\n /*!***********************!*\\\n !*** ./src/events.ts ***!\n \\***********************/\n\n /*! exports provided: Events */\n\n /***/\n function srcEventsTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"Events\", function () {\n return Events;\n });\n /**\n * @readonly\n * @enum {string}\n */\n\n\n var Events;\n\n (function (Events) {\n Events[\"MEDIA_ATTACHING\"] = \"hlsMediaAttaching\";\n Events[\"MEDIA_ATTACHED\"] = \"hlsMediaAttached\";\n Events[\"MEDIA_DETACHING\"] = \"hlsMediaDetaching\";\n Events[\"MEDIA_DETACHED\"] = \"hlsMediaDetached\";\n Events[\"BUFFER_RESET\"] = \"hlsBufferReset\";\n Events[\"BUFFER_CODECS\"] = \"hlsBufferCodecs\";\n Events[\"BUFFER_CREATED\"] = \"hlsBufferCreated\";\n Events[\"BUFFER_APPENDING\"] = \"hlsBufferAppending\";\n Events[\"BUFFER_APPENDED\"] = \"hlsBufferAppended\";\n Events[\"BUFFER_EOS\"] = \"hlsBufferEos\";\n Events[\"BUFFER_FLUSHING\"] = \"hlsBufferFlushing\";\n Events[\"BUFFER_FLUSHED\"] = \"hlsBufferFlushed\";\n Events[\"MANIFEST_LOADING\"] = \"hlsManifestLoading\";\n Events[\"MANIFEST_LOADED\"] = \"hlsManifestLoaded\";\n Events[\"MANIFEST_PARSED\"] = \"hlsManifestParsed\";\n Events[\"LEVEL_SWITCHING\"] = \"hlsLevelSwitching\";\n Events[\"LEVEL_SWITCHED\"] = \"hlsLevelSwitched\";\n Events[\"LEVEL_LOADING\"] = \"hlsLevelLoading\";\n Events[\"LEVEL_LOADED\"] = \"hlsLevelLoaded\";\n Events[\"LEVEL_UPDATED\"] = \"hlsLevelUpdated\";\n Events[\"LEVEL_PTS_UPDATED\"] = \"hlsLevelPtsUpdated\";\n Events[\"LEVELS_UPDATED\"] = \"hlsLevelsUpdated\";\n Events[\"AUDIO_TRACKS_UPDATED\"] = \"hlsAudioTracksUpdated\";\n Events[\"AUDIO_TRACK_SWITCHING\"] = \"hlsAudioTrackSwitching\";\n Events[\"AUDIO_TRACK_SWITCHED\"] = \"hlsAudioTrackSwitched\";\n Events[\"AUDIO_TRACK_LOADING\"] = \"hlsAudioTrackLoading\";\n Events[\"AUDIO_TRACK_LOADED\"] = \"hlsAudioTrackLoaded\";\n Events[\"SUBTITLE_TRACKS_UPDATED\"] = \"hlsSubtitleTracksUpdated\";\n Events[\"SUBTITLE_TRACKS_CLEARED\"] = \"hlsSubtitleTracksCleared\";\n Events[\"SUBTITLE_TRACK_SWITCH\"] = \"hlsSubtitleTrackSwitch\";\n Events[\"SUBTITLE_TRACK_LOADING\"] = \"hlsSubtitleTrackLoading\";\n Events[\"SUBTITLE_TRACK_LOADED\"] = \"hlsSubtitleTrackLoaded\";\n Events[\"SUBTITLE_FRAG_PROCESSED\"] = \"hlsSubtitleFragProcessed\";\n Events[\"CUES_PARSED\"] = \"hlsCuesParsed\";\n Events[\"NON_NATIVE_TEXT_TRACKS_FOUND\"] = \"hlsNonNativeTextTracksFound\";\n Events[\"INIT_PTS_FOUND\"] = \"hlsInitPtsFound\";\n Events[\"FRAG_LOADING\"] = \"hlsFragLoading\";\n Events[\"FRAG_LOAD_EMERGENCY_ABORTED\"] = \"hlsFragLoadEmergencyAborted\";\n Events[\"FRAG_LOADED\"] = \"hlsFragLoaded\";\n Events[\"FRAG_DECRYPTED\"] = \"hlsFragDecrypted\";\n Events[\"FRAG_PARSING_INIT_SEGMENT\"] = \"hlsFragParsingInitSegment\";\n Events[\"FRAG_PARSING_USERDATA\"] = \"hlsFragParsingUserdata\";\n Events[\"FRAG_PARSING_METADATA\"] = \"hlsFragParsingMetadata\";\n Events[\"FRAG_PARSED\"] = \"hlsFragParsed\";\n Events[\"FRAG_BUFFERED\"] = \"hlsFragBuffered\";\n Events[\"FRAG_CHANGED\"] = \"hlsFragChanged\";\n Events[\"FPS_DROP\"] = \"hlsFpsDrop\";\n Events[\"FPS_DROP_LEVEL_CAPPING\"] = \"hlsFpsDropLevelCapping\";\n Events[\"ERROR\"] = \"hlsError\";\n Events[\"DESTROYING\"] = \"hlsDestroying\";\n Events[\"KEY_LOADING\"] = \"hlsKeyLoading\";\n Events[\"KEY_LOADED\"] = \"hlsKeyLoaded\";\n Events[\"LIVE_BACK_BUFFER_REACHED\"] = \"hlsLiveBackBufferReached\";\n Events[\"BACK_BUFFER_REACHED\"] = \"hlsBackBufferReached\";\n })(Events || (Events = {}));\n /***/\n\n },\n\n /***/\n \"./src/hls.ts\":\n /*!********************!*\\\n !*** ./src/hls.ts ***!\n \\********************/\n\n /*! exports provided: default */\n\n /***/\n function srcHlsTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"default\", function () {\n return Hls;\n });\n /* harmony import */\n\n\n var url_toolkit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! url-toolkit */\n \"./node_modules/url-toolkit/src/url-toolkit.js\");\n /* harmony import */\n\n\n var url_toolkit__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(url_toolkit__WEBPACK_IMPORTED_MODULE_0__);\n /* harmony import */\n\n\n var _loader_playlist_loader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ./loader/playlist-loader */\n \"./src/loader/playlist-loader.ts\");\n /* harmony import */\n\n\n var _loader_key_loader__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ./loader/key-loader */\n \"./src/loader/key-loader.ts\");\n /* harmony import */\n\n\n var _controller_id3_track_controller__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\n /*! ./controller/id3-track-controller */\n \"./src/controller/id3-track-controller.ts\");\n /* harmony import */\n\n\n var _controller_latency_controller__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\n /*! ./controller/latency-controller */\n \"./src/controller/latency-controller.ts\");\n /* harmony import */\n\n\n var _controller_level_controller__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(\n /*! ./controller/level-controller */\n \"./src/controller/level-controller.ts\");\n /* harmony import */\n\n\n var _controller_fragment_tracker__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(\n /*! ./controller/fragment-tracker */\n \"./src/controller/fragment-tracker.ts\");\n /* harmony import */\n\n\n var _controller_stream_controller__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(\n /*! ./controller/stream-controller */\n \"./src/controller/stream-controller.ts\");\n /* harmony import */\n\n\n var _is_supported__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(\n /*! ./is-supported */\n \"./src/is-supported.ts\");\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(\n /*! ./utils/logger */\n \"./src/utils/logger.ts\");\n /* harmony import */\n\n\n var _config__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(\n /*! ./config */\n \"./src/config.ts\");\n /* harmony import */\n\n\n var eventemitter3__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(\n /*! eventemitter3 */\n \"./node_modules/eventemitter3/index.js\");\n /* harmony import */\n\n\n var eventemitter3__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(eventemitter3__WEBPACK_IMPORTED_MODULE_11__);\n /* harmony import */\n\n\n var _events__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(\n /*! ./events */\n \"./src/events.ts\");\n /* harmony import */\n\n\n var _errors__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(\n /*! ./errors */\n \"./src/errors.ts\");\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n /**\n * @module Hls\n * @class\n * @constructor\n */\n\n\n var Hls = /*#__PURE__*/function () {\n Hls.isSupported = function isSupported() {\n return Object(_is_supported__WEBPACK_IMPORTED_MODULE_8__[\"isSupported\"])();\n };\n /**\n * Creates an instance of an HLS client that can attach to exactly one `HTMLMediaElement`.\n *\n * @constructs Hls\n * @param {HlsConfig} config\n */\n\n\n function Hls(userConfig) {\n if (userConfig === void 0) {\n userConfig = {};\n }\n\n this.config = void 0;\n this.userConfig = void 0;\n this.coreComponents = void 0;\n this.networkControllers = void 0;\n this._emitter = new eventemitter3__WEBPACK_IMPORTED_MODULE_11__[\"EventEmitter\"]();\n this._autoLevelCapping = void 0;\n this.abrController = void 0;\n this.bufferController = void 0;\n this.capLevelController = void 0;\n this.latencyController = void 0;\n this.levelController = void 0;\n this.streamController = void 0;\n this.audioTrackController = void 0;\n this.subtitleTrackController = void 0;\n this.emeController = void 0;\n this.cmcdController = void 0;\n this._media = null;\n this.url = null;\n var config = this.config = Object(_config__WEBPACK_IMPORTED_MODULE_10__[\"mergeConfig\"])(Hls.DefaultConfig, userConfig);\n this.userConfig = userConfig;\n Object(_utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"enableLogs\"])(config.debug);\n this._autoLevelCapping = -1;\n\n if (config.progressive) {\n Object(_config__WEBPACK_IMPORTED_MODULE_10__[\"enableStreamingMode\"])(config);\n } // core controllers and network loaders\n\n\n var ConfigAbrController = config.abrController,\n ConfigBufferController = config.bufferController,\n ConfigCapLevelController = config.capLevelController,\n ConfigFpsController = config.fpsController;\n var abrController = this.abrController = new ConfigAbrController(this);\n var bufferController = this.bufferController = new ConfigBufferController(this);\n var capLevelController = this.capLevelController = new ConfigCapLevelController(this);\n var fpsController = new ConfigFpsController(this);\n var playListLoader = new _loader_playlist_loader__WEBPACK_IMPORTED_MODULE_1__[\"default\"](this);\n var keyLoader = new _loader_key_loader__WEBPACK_IMPORTED_MODULE_2__[\"default\"](this);\n var id3TrackController = new _controller_id3_track_controller__WEBPACK_IMPORTED_MODULE_3__[\"default\"](this); // network controllers\n\n var levelController = this.levelController = new _controller_level_controller__WEBPACK_IMPORTED_MODULE_5__[\"default\"](this); // FragmentTracker must be defined before StreamController because the order of event handling is important\n\n var fragmentTracker = new _controller_fragment_tracker__WEBPACK_IMPORTED_MODULE_6__[\"FragmentTracker\"](this);\n var streamController = this.streamController = new _controller_stream_controller__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this, fragmentTracker); // Cap level controller uses streamController to flush the buffer\n\n capLevelController.setStreamController(streamController); // fpsController uses streamController to switch when frames are being dropped\n\n fpsController.setStreamController(streamController);\n var networkControllers = [levelController, streamController];\n this.networkControllers = networkControllers;\n var coreComponents = [playListLoader, keyLoader, abrController, bufferController, capLevelController, fpsController, id3TrackController, fragmentTracker];\n this.audioTrackController = this.createController(config.audioTrackController, null, networkControllers);\n this.createController(config.audioStreamController, fragmentTracker, networkControllers); // subtitleTrackController must be defined before because the order of event handling is important\n\n this.subtitleTrackController = this.createController(config.subtitleTrackController, null, networkControllers);\n this.createController(config.subtitleStreamController, fragmentTracker, networkControllers);\n this.createController(config.timelineController, null, coreComponents);\n this.emeController = this.createController(config.emeController, null, coreComponents);\n this.cmcdController = this.createController(config.cmcdController, null, coreComponents);\n this.latencyController = this.createController(_controller_latency_controller__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null, coreComponents);\n this.coreComponents = coreComponents;\n }\n\n var _proto = Hls.prototype;\n\n _proto.createController = function createController(ControllerClass, fragmentTracker, components) {\n if (ControllerClass) {\n var controllerInstance = fragmentTracker ? new ControllerClass(this, fragmentTracker) : new ControllerClass(this);\n\n if (components) {\n components.push(controllerInstance);\n }\n\n return controllerInstance;\n }\n\n return null;\n } // Delegate the EventEmitter through the public API of Hls.js\n ;\n\n _proto.on = function on(event, listener, context) {\n if (context === void 0) {\n context = this;\n }\n\n this._emitter.on(event, listener, context);\n };\n\n _proto.once = function once(event, listener, context) {\n if (context === void 0) {\n context = this;\n }\n\n this._emitter.once(event, listener, context);\n };\n\n _proto.removeAllListeners = function removeAllListeners(event) {\n this._emitter.removeAllListeners(event);\n };\n\n _proto.off = function off(event, listener, context, once) {\n if (context === void 0) {\n context = this;\n }\n\n this._emitter.off(event, listener, context, once);\n };\n\n _proto.listeners = function listeners(event) {\n return this._emitter.listeners(event);\n };\n\n _proto.emit = function emit(event, name, eventObject) {\n return this._emitter.emit(event, name, eventObject);\n };\n\n _proto.trigger = function trigger(event, eventObject) {\n if (this.config.debug) {\n return this.emit(event, event, eventObject);\n } else {\n try {\n return this.emit(event, event, eventObject);\n } catch (e) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].error('An internal error happened while handling event ' + event + '. Error message: \"' + e.message + '\". Here is a stacktrace:', e);\n\n this.trigger(_events__WEBPACK_IMPORTED_MODULE_12__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorTypes\"].OTHER_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorDetails\"].INTERNAL_EXCEPTION,\n fatal: false,\n event: event,\n error: e\n });\n }\n }\n\n return false;\n };\n\n _proto.listenerCount = function listenerCount(event) {\n return this._emitter.listenerCount(event);\n }\n /**\n * Dispose of the instance\n */\n ;\n\n _proto.destroy = function destroy() {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log('destroy');\n\n this.trigger(_events__WEBPACK_IMPORTED_MODULE_12__[\"Events\"].DESTROYING, undefined);\n this.detachMedia();\n this.removeAllListeners();\n this._autoLevelCapping = -1;\n this.url = null;\n this.networkControllers.forEach(function (component) {\n return component.destroy();\n });\n this.networkControllers.length = 0;\n this.coreComponents.forEach(function (component) {\n return component.destroy();\n });\n this.coreComponents.length = 0;\n }\n /**\n * Attaches Hls.js to a media element\n * @param {HTMLMediaElement} media\n */\n ;\n\n _proto.attachMedia = function attachMedia(media) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log('attachMedia');\n\n this._media = media;\n this.trigger(_events__WEBPACK_IMPORTED_MODULE_12__[\"Events\"].MEDIA_ATTACHING, {\n media: media\n });\n }\n /**\n * Detach Hls.js from the media\n */\n ;\n\n _proto.detachMedia = function detachMedia() {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log('detachMedia');\n\n this.trigger(_events__WEBPACK_IMPORTED_MODULE_12__[\"Events\"].MEDIA_DETACHING, undefined);\n this._media = null;\n }\n /**\n * Set the source URL. Can be relative or absolute.\n * @param {string} url\n */\n ;\n\n _proto.loadSource = function loadSource(url) {\n this.stopLoad();\n var media = this.media;\n var loadedSource = this.url;\n var loadingSource = this.url = url_toolkit__WEBPACK_IMPORTED_MODULE_0__[\"buildAbsoluteURL\"](self.location.href, url, {\n alwaysNormalize: true\n });\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log(\"loadSource:\" + loadingSource);\n\n if (media && loadedSource && loadedSource !== loadingSource && this.bufferController.hasSourceTypes()) {\n this.detachMedia();\n this.attachMedia(media);\n } // when attaching to a source URL, trigger a playlist load\n\n\n this.trigger(_events__WEBPACK_IMPORTED_MODULE_12__[\"Events\"].MANIFEST_LOADING, {\n url: url\n });\n }\n /**\n * Start loading data from the stream source.\n * Depending on default config, client starts loading automatically when a source is set.\n *\n * @param {number} startPosition Set the start position to stream from\n * @default -1 None (from earliest point)\n */\n ;\n\n _proto.startLoad = function startLoad(startPosition) {\n if (startPosition === void 0) {\n startPosition = -1;\n }\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log(\"startLoad(\" + startPosition + \")\");\n\n this.networkControllers.forEach(function (controller) {\n controller.startLoad(startPosition);\n });\n }\n /**\n * Stop loading of any stream data.\n */\n ;\n\n _proto.stopLoad = function stopLoad() {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log('stopLoad');\n\n this.networkControllers.forEach(function (controller) {\n controller.stopLoad();\n });\n }\n /**\n * Swap through possible audio codecs in the stream (for example to switch from stereo to 5.1)\n */\n ;\n\n _proto.swapAudioCodec = function swapAudioCodec() {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log('swapAudioCodec');\n\n this.streamController.swapAudioCodec();\n }\n /**\n * When the media-element fails, this allows to detach and then re-attach it\n * as one call (convenience method).\n *\n * Automatic recovery of media-errors by this process is configurable.\n */\n ;\n\n _proto.recoverMediaError = function recoverMediaError() {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log('recoverMediaError');\n\n var media = this._media;\n this.detachMedia();\n\n if (media) {\n this.attachMedia(media);\n }\n };\n\n _proto.removeLevel = function removeLevel(levelIndex, urlId) {\n if (urlId === void 0) {\n urlId = 0;\n }\n\n this.levelController.removeLevel(levelIndex, urlId);\n }\n /**\n * @type {Level[]}\n */\n ;\n\n _createClass(Hls, [{\n key: \"levels\",\n get: function get() {\n var levels = this.levelController.levels;\n return levels ? levels : [];\n }\n /**\n * Index of quality level currently played\n * @type {number}\n */\n\n }, {\n key: \"currentLevel\",\n get: function get() {\n return this.streamController.currentLevel;\n }\n /**\n * Set quality level index immediately .\n * This will flush the current buffer to replace the quality asap.\n * That means playback will interrupt at least shortly to re-buffer and re-sync eventually.\n * @type {number} -1 for automatic level selection\n */\n ,\n set: function set(newLevel) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log(\"set currentLevel:\" + newLevel);\n\n this.loadLevel = newLevel;\n this.abrController.clearTimer();\n this.streamController.immediateLevelSwitch();\n }\n /**\n * Index of next quality level loaded as scheduled by stream controller.\n * @type {number}\n */\n\n }, {\n key: \"nextLevel\",\n get: function get() {\n return this.streamController.nextLevel;\n }\n /**\n * Set quality level index for next loaded data.\n * This will switch the video quality asap, without interrupting playback.\n * May abort current loading of data, and flush parts of buffer (outside currently played fragment region).\n * @type {number} -1 for automatic level selection\n */\n ,\n set: function set(newLevel) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log(\"set nextLevel:\" + newLevel);\n\n this.levelController.manualLevel = newLevel;\n this.streamController.nextLevelSwitch();\n }\n /**\n * Return the quality level of the currently or last (of none is loaded currently) segment\n * @type {number}\n */\n\n }, {\n key: \"loadLevel\",\n get: function get() {\n return this.levelController.level;\n }\n /**\n * Set quality level index for next loaded data in a conservative way.\n * This will switch the quality without flushing, but interrupt current loading.\n * Thus the moment when the quality switch will appear in effect will only be after the already existing buffer.\n * @type {number} newLevel -1 for automatic level selection\n */\n ,\n set: function set(newLevel) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log(\"set loadLevel:\" + newLevel);\n\n this.levelController.manualLevel = newLevel;\n }\n /**\n * get next quality level loaded\n * @type {number}\n */\n\n }, {\n key: \"nextLoadLevel\",\n get: function get() {\n return this.levelController.nextLoadLevel;\n }\n /**\n * Set quality level of next loaded segment in a fully \"non-destructive\" way.\n * Same as `loadLevel` but will wait for next switch (until current loading is done).\n * @type {number} level\n */\n ,\n set: function set(level) {\n this.levelController.nextLoadLevel = level;\n }\n /**\n * Return \"first level\": like a default level, if not set,\n * falls back to index of first level referenced in manifest\n * @type {number}\n */\n\n }, {\n key: \"firstLevel\",\n get: function get() {\n return Math.max(this.levelController.firstLevel, this.minAutoLevel);\n }\n /**\n * Sets \"first-level\", see getter.\n * @type {number}\n */\n ,\n set: function set(newLevel) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log(\"set firstLevel:\" + newLevel);\n\n this.levelController.firstLevel = newLevel;\n }\n /**\n * Return start level (level of first fragment that will be played back)\n * if not overrided by user, first level appearing in manifest will be used as start level\n * if -1 : automatic start level selection, playback will start from level matching download bandwidth\n * (determined from download of first segment)\n * @type {number}\n */\n\n }, {\n key: \"startLevel\",\n get: function get() {\n return this.levelController.startLevel;\n }\n /**\n * set start level (level of first fragment that will be played back)\n * if not overrided by user, first level appearing in manifest will be used as start level\n * if -1 : automatic start level selection, playback will start from level matching download bandwidth\n * (determined from download of first segment)\n * @type {number} newLevel\n */\n ,\n set: function set(newLevel) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log(\"set startLevel:\" + newLevel); // if not in automatic start level detection, ensure startLevel is greater than minAutoLevel\n\n\n if (newLevel !== -1) {\n newLevel = Math.max(newLevel, this.minAutoLevel);\n }\n\n this.levelController.startLevel = newLevel;\n }\n /**\n * Get the current setting for capLevelToPlayerSize\n *\n * @type {boolean}\n */\n\n }, {\n key: \"capLevelToPlayerSize\",\n get: function get() {\n return this.config.capLevelToPlayerSize;\n }\n /**\n * set dynamically set capLevelToPlayerSize against (`CapLevelController`)\n *\n * @type {boolean}\n */\n ,\n set: function set(shouldStartCapping) {\n var newCapLevelToPlayerSize = !!shouldStartCapping;\n\n if (newCapLevelToPlayerSize !== this.config.capLevelToPlayerSize) {\n if (newCapLevelToPlayerSize) {\n this.capLevelController.startCapping(); // If capping occurs, nextLevelSwitch will happen based on size.\n } else {\n this.capLevelController.stopCapping();\n this.autoLevelCapping = -1;\n this.streamController.nextLevelSwitch(); // Now we're uncapped, get the next level asap.\n }\n\n this.config.capLevelToPlayerSize = newCapLevelToPlayerSize;\n }\n }\n /**\n * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`)\n * @type {number}\n */\n\n }, {\n key: \"autoLevelCapping\",\n get: function get() {\n return this._autoLevelCapping;\n }\n /**\n * get bandwidth estimate\n * @type {number}\n */\n ,\n set:\n /**\n * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`)\n * @type {number}\n */\n function set(newLevel) {\n if (this._autoLevelCapping !== newLevel) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log(\"set autoLevelCapping:\" + newLevel);\n\n this._autoLevelCapping = newLevel;\n }\n }\n /**\n * True when automatic level selection enabled\n * @type {boolean}\n */\n\n }, {\n key: \"bandwidthEstimate\",\n get: function get() {\n var bwEstimator = this.abrController.bwEstimator;\n\n if (!bwEstimator) {\n return NaN;\n }\n\n return bwEstimator.getEstimate();\n }\n }, {\n key: \"autoLevelEnabled\",\n get: function get() {\n return this.levelController.manualLevel === -1;\n }\n /**\n * Level set manually (if any)\n * @type {number}\n */\n\n }, {\n key: \"manualLevel\",\n get: function get() {\n return this.levelController.manualLevel;\n }\n /**\n * min level selectable in auto mode according to config.minAutoBitrate\n * @type {number}\n */\n\n }, {\n key: \"minAutoLevel\",\n get: function get() {\n var levels = this.levels,\n minAutoBitrate = this.config.minAutoBitrate;\n if (!levels) return 0;\n var len = levels.length;\n\n for (var i = 0; i < len; i++) {\n if (levels[i].maxBitrate > minAutoBitrate) {\n return i;\n }\n }\n\n return 0;\n }\n /**\n * max level selectable in auto mode according to autoLevelCapping\n * @type {number}\n */\n\n }, {\n key: \"maxAutoLevel\",\n get: function get() {\n var levels = this.levels,\n autoLevelCapping = this.autoLevelCapping;\n var maxAutoLevel;\n\n if (autoLevelCapping === -1 && levels && levels.length) {\n maxAutoLevel = levels.length - 1;\n } else {\n maxAutoLevel = autoLevelCapping;\n }\n\n return maxAutoLevel;\n }\n /**\n * next automatically selected quality level\n * @type {number}\n */\n\n }, {\n key: \"nextAutoLevel\",\n get: function get() {\n // ensure next auto level is between min and max auto level\n return Math.min(Math.max(this.abrController.nextAutoLevel, this.minAutoLevel), this.maxAutoLevel);\n }\n /**\n * this setter is used to force next auto level.\n * this is useful to force a switch down in auto mode:\n * in case of load error on level N, hls.js can set nextAutoLevel to N-1 for example)\n * forced value is valid for one fragment. upon successful frag loading at forced level,\n * this value will be resetted to -1 by ABR controller.\n * @type {number}\n */\n ,\n set: function set(nextLevel) {\n this.abrController.nextAutoLevel = Math.max(this.minAutoLevel, nextLevel);\n }\n /**\n * @type {AudioTrack[]}\n */\n\n }, {\n key: \"audioTracks\",\n get: function get() {\n var audioTrackController = this.audioTrackController;\n return audioTrackController ? audioTrackController.audioTracks : [];\n }\n /**\n * index of the selected audio track (index in audio track lists)\n * @type {number}\n */\n\n }, {\n key: \"audioTrack\",\n get: function get() {\n var audioTrackController = this.audioTrackController;\n return audioTrackController ? audioTrackController.audioTrack : -1;\n }\n /**\n * selects an audio track, based on its index in audio track lists\n * @type {number}\n */\n ,\n set: function set(audioTrackId) {\n var audioTrackController = this.audioTrackController;\n\n if (audioTrackController) {\n audioTrackController.audioTrack = audioTrackId;\n }\n }\n /**\n * get alternate subtitle tracks list from playlist\n * @type {MediaPlaylist[]}\n */\n\n }, {\n key: \"subtitleTracks\",\n get: function get() {\n var subtitleTrackController = this.subtitleTrackController;\n return subtitleTrackController ? subtitleTrackController.subtitleTracks : [];\n }\n /**\n * index of the selected subtitle track (index in subtitle track lists)\n * @type {number}\n */\n\n }, {\n key: \"subtitleTrack\",\n get: function get() {\n var subtitleTrackController = this.subtitleTrackController;\n return subtitleTrackController ? subtitleTrackController.subtitleTrack : -1;\n },\n set:\n /**\n * select an subtitle track, based on its index in subtitle track lists\n * @type {number}\n */\n function set(subtitleTrackId) {\n var subtitleTrackController = this.subtitleTrackController;\n\n if (subtitleTrackController) {\n subtitleTrackController.subtitleTrack = subtitleTrackId;\n }\n }\n /**\n * @type {boolean}\n */\n\n }, {\n key: \"media\",\n get: function get() {\n return this._media;\n }\n }, {\n key: \"subtitleDisplay\",\n get: function get() {\n var subtitleTrackController = this.subtitleTrackController;\n return subtitleTrackController ? subtitleTrackController.subtitleDisplay : false;\n }\n /**\n * Enable/disable subtitle display rendering\n * @type {boolean}\n */\n ,\n set: function set(value) {\n var subtitleTrackController = this.subtitleTrackController;\n\n if (subtitleTrackController) {\n subtitleTrackController.subtitleDisplay = value;\n }\n }\n /**\n * get mode for Low-Latency HLS loading\n * @type {boolean}\n */\n\n }, {\n key: \"lowLatencyMode\",\n get: function get() {\n return this.config.lowLatencyMode;\n }\n /**\n * Enable/disable Low-Latency HLS part playlist and segment loading, and start live streams at playlist PART-HOLD-BACK rather than HOLD-BACK.\n * @type {boolean}\n */\n ,\n set: function set(mode) {\n this.config.lowLatencyMode = mode;\n }\n /**\n * position (in seconds) of live sync point (ie edge of live position minus safety delay defined by ```hls.config.liveSyncDuration```)\n * @type {number}\n */\n\n }, {\n key: \"liveSyncPosition\",\n get: function get() {\n return this.latencyController.liveSyncPosition;\n }\n /**\n * estimated position (in seconds) of live edge (ie edge of live playlist plus time sync playlist advanced)\n * returns 0 before first playlist is loaded\n * @type {number}\n */\n\n }, {\n key: \"latency\",\n get: function get() {\n return this.latencyController.latency;\n }\n /**\n * maximum distance from the edge before the player seeks forward to ```hls.liveSyncPosition```\n * configured using ```liveMaxLatencyDurationCount``` (multiple of target duration) or ```liveMaxLatencyDuration```\n * returns 0 before first playlist is loaded\n * @type {number}\n */\n\n }, {\n key: \"maxLatency\",\n get: function get() {\n return this.latencyController.maxLatency;\n }\n /**\n * target distance from the edge as calculated by the latency controller\n * @type {number}\n */\n\n }, {\n key: \"targetLatency\",\n get: function get() {\n return this.latencyController.targetLatency;\n }\n /**\n * the rate at which the edge of the current live playlist is advancing or 1 if there is none\n * @type {number}\n */\n\n }, {\n key: \"drift\",\n get: function get() {\n return this.latencyController.drift;\n }\n /**\n * set to true when startLoad is called before MANIFEST_PARSED event\n * @type {boolean}\n */\n\n }, {\n key: \"forceStartLoad\",\n get: function get() {\n return this.streamController.forceStartLoad;\n }\n }], [{\n key: \"version\",\n get: function get() {\n return \"1.1.5\";\n }\n }, {\n key: \"Events\",\n get: function get() {\n return _events__WEBPACK_IMPORTED_MODULE_12__[\"Events\"];\n }\n }, {\n key: \"ErrorTypes\",\n get: function get() {\n return _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorTypes\"];\n }\n }, {\n key: \"ErrorDetails\",\n get: function get() {\n return _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorDetails\"];\n }\n }, {\n key: \"DefaultConfig\",\n get: function get() {\n if (!Hls.defaultConfig) {\n return _config__WEBPACK_IMPORTED_MODULE_10__[\"hlsDefaultConfig\"];\n }\n\n return Hls.defaultConfig;\n }\n /**\n * @type {HlsConfig}\n */\n ,\n set: function set(defaultConfig) {\n Hls.defaultConfig = defaultConfig;\n }\n }]);\n\n return Hls;\n }();\n\n Hls.defaultConfig = void 0;\n /***/\n },\n\n /***/\n \"./src/is-supported.ts\":\n /*!*****************************!*\\\n !*** ./src/is-supported.ts ***!\n \\*****************************/\n\n /*! exports provided: isSupported, changeTypeSupported */\n\n /***/\n function srcIsSupportedTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"isSupported\", function () {\n return isSupported;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"changeTypeSupported\", function () {\n return changeTypeSupported;\n });\n /* harmony import */\n\n\n var _utils_mediasource_helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./utils/mediasource-helper */\n \"./src/utils/mediasource-helper.ts\");\n\n function getSourceBuffer() {\n return self.SourceBuffer || self.WebKitSourceBuffer;\n }\n\n function isSupported() {\n var mediaSource = Object(_utils_mediasource_helper__WEBPACK_IMPORTED_MODULE_0__[\"getMediaSource\"])();\n\n if (!mediaSource) {\n return false;\n }\n\n var sourceBuffer = getSourceBuffer();\n var isTypeSupported = mediaSource && typeof mediaSource.isTypeSupported === 'function' && mediaSource.isTypeSupported('video/mp4; codecs=\"avc1.42E01E,mp4a.40.2\"'); // if SourceBuffer is exposed ensure its API is valid\n // safari and old version of Chrome doe not expose SourceBuffer globally so checking SourceBuffer.prototype is impossible\n\n var sourceBufferValidAPI = !sourceBuffer || sourceBuffer.prototype && typeof sourceBuffer.prototype.appendBuffer === 'function' && typeof sourceBuffer.prototype.remove === 'function';\n return !!isTypeSupported && !!sourceBufferValidAPI;\n }\n\n function changeTypeSupported() {\n var _sourceBuffer$prototy;\n\n var sourceBuffer = getSourceBuffer();\n return typeof (sourceBuffer === null || sourceBuffer === void 0 ? void 0 : (_sourceBuffer$prototy = sourceBuffer.prototype) === null || _sourceBuffer$prototy === void 0 ? void 0 : _sourceBuffer$prototy.changeType) === 'function';\n }\n /***/\n\n },\n\n /***/\n \"./src/loader/fragment-loader.ts\":\n /*!***************************************!*\\\n !*** ./src/loader/fragment-loader.ts ***!\n \\***************************************/\n\n /*! exports provided: default, LoadError */\n\n /***/\n function srcLoaderFragmentLoaderTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"default\", function () {\n return FragmentLoader;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"LoadError\", function () {\n return LoadError;\n });\n /* harmony import */\n\n\n var _home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./src/polyfills/number */\n \"./src/polyfills/number.ts\");\n /* harmony import */\n\n\n var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ../errors */\n \"./src/errors.ts\");\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n }\n\n function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n }\n\n function _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n }\n\n function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n }\n\n function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n }\n\n var MIN_CHUNK_SIZE = Math.pow(2, 17); // 128kb\n\n var FragmentLoader = /*#__PURE__*/function () {\n function FragmentLoader(config) {\n this.config = void 0;\n this.loader = null;\n this.partLoadTimeout = -1;\n this.config = config;\n }\n\n var _proto = FragmentLoader.prototype;\n\n _proto.destroy = function destroy() {\n if (this.loader) {\n this.loader.destroy();\n this.loader = null;\n }\n };\n\n _proto.abort = function abort() {\n if (this.loader) {\n // Abort the loader for current fragment. Only one may load at any given time\n this.loader.abort();\n }\n };\n\n _proto.load = function load(frag, _onProgress) {\n var _this = this;\n\n var url = frag.url;\n\n if (!url) {\n return Promise.reject(new LoadError({\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].FRAG_LOAD_ERROR,\n fatal: false,\n frag: frag,\n networkDetails: null\n }, \"Fragment does not have a \" + (url ? 'part list' : 'url')));\n }\n\n this.abort();\n var config = this.config;\n var FragmentILoader = config.fLoader;\n var DefaultILoader = config.loader;\n return new Promise(function (resolve, reject) {\n if (_this.loader) {\n _this.loader.destroy();\n }\n\n var loader = _this.loader = frag.loader = FragmentILoader ? new FragmentILoader(config) : new DefaultILoader(config);\n var loaderContext = createLoaderContext(frag);\n var loaderConfig = {\n timeout: config.fragLoadingTimeOut,\n maxRetry: 0,\n retryDelay: 0,\n maxRetryDelay: config.fragLoadingMaxRetryTimeout,\n highWaterMark: MIN_CHUNK_SIZE\n }; // Assign frag stats to the loader's stats reference\n\n frag.stats = loader.stats;\n loader.load(loaderContext, loaderConfig, {\n onSuccess: function onSuccess(response, stats, context, networkDetails) {\n _this.resetLoader(frag, loader);\n\n resolve({\n frag: frag,\n part: null,\n payload: response.data,\n networkDetails: networkDetails\n });\n },\n onError: function onError(response, context, networkDetails) {\n _this.resetLoader(frag, loader);\n\n reject(new LoadError({\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].FRAG_LOAD_ERROR,\n fatal: false,\n frag: frag,\n response: response,\n networkDetails: networkDetails\n }));\n },\n onAbort: function onAbort(stats, context, networkDetails) {\n _this.resetLoader(frag, loader);\n\n reject(new LoadError({\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].INTERNAL_ABORTED,\n fatal: false,\n frag: frag,\n networkDetails: networkDetails\n }));\n },\n onTimeout: function onTimeout(response, context, networkDetails) {\n _this.resetLoader(frag, loader);\n\n reject(new LoadError({\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].FRAG_LOAD_TIMEOUT,\n fatal: false,\n frag: frag,\n networkDetails: networkDetails\n }));\n },\n onProgress: function onProgress(stats, context, data, networkDetails) {\n if (_onProgress) {\n _onProgress({\n frag: frag,\n part: null,\n payload: data,\n networkDetails: networkDetails\n });\n }\n }\n });\n });\n };\n\n _proto.loadPart = function loadPart(frag, part, onProgress) {\n var _this2 = this;\n\n this.abort();\n var config = this.config;\n var FragmentILoader = config.fLoader;\n var DefaultILoader = config.loader;\n return new Promise(function (resolve, reject) {\n if (_this2.loader) {\n _this2.loader.destroy();\n }\n\n var loader = _this2.loader = frag.loader = FragmentILoader ? new FragmentILoader(config) : new DefaultILoader(config);\n var loaderContext = createLoaderContext(frag, part);\n var loaderConfig = {\n timeout: config.fragLoadingTimeOut,\n maxRetry: 0,\n retryDelay: 0,\n maxRetryDelay: config.fragLoadingMaxRetryTimeout,\n highWaterMark: MIN_CHUNK_SIZE\n }; // Assign part stats to the loader's stats reference\n\n part.stats = loader.stats;\n loader.load(loaderContext, loaderConfig, {\n onSuccess: function onSuccess(response, stats, context, networkDetails) {\n _this2.resetLoader(frag, loader);\n\n _this2.updateStatsFromPart(frag, part);\n\n var partLoadedData = {\n frag: frag,\n part: part,\n payload: response.data,\n networkDetails: networkDetails\n };\n onProgress(partLoadedData);\n resolve(partLoadedData);\n },\n onError: function onError(response, context, networkDetails) {\n _this2.resetLoader(frag, loader);\n\n reject(new LoadError({\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].FRAG_LOAD_ERROR,\n fatal: false,\n frag: frag,\n part: part,\n response: response,\n networkDetails: networkDetails\n }));\n },\n onAbort: function onAbort(stats, context, networkDetails) {\n frag.stats.aborted = part.stats.aborted;\n\n _this2.resetLoader(frag, loader);\n\n reject(new LoadError({\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].INTERNAL_ABORTED,\n fatal: false,\n frag: frag,\n part: part,\n networkDetails: networkDetails\n }));\n },\n onTimeout: function onTimeout(response, context, networkDetails) {\n _this2.resetLoader(frag, loader);\n\n reject(new LoadError({\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].FRAG_LOAD_TIMEOUT,\n fatal: false,\n frag: frag,\n part: part,\n networkDetails: networkDetails\n }));\n }\n });\n });\n };\n\n _proto.updateStatsFromPart = function updateStatsFromPart(frag, part) {\n var fragStats = frag.stats;\n var partStats = part.stats;\n var partTotal = partStats.total;\n fragStats.loaded += partStats.loaded;\n\n if (partTotal) {\n var estTotalParts = Math.round(frag.duration / part.duration);\n var estLoadedParts = Math.min(Math.round(fragStats.loaded / partTotal), estTotalParts);\n var estRemainingParts = estTotalParts - estLoadedParts;\n var estRemainingBytes = estRemainingParts * Math.round(fragStats.loaded / estLoadedParts);\n fragStats.total = fragStats.loaded + estRemainingBytes;\n } else {\n fragStats.total = Math.max(fragStats.loaded, fragStats.total);\n }\n\n var fragLoading = fragStats.loading;\n var partLoading = partStats.loading;\n\n if (fragLoading.start) {\n // add to fragment loader latency\n fragLoading.first += partLoading.first - partLoading.start;\n } else {\n fragLoading.start = partLoading.start;\n fragLoading.first = partLoading.first;\n }\n\n fragLoading.end = partLoading.end;\n };\n\n _proto.resetLoader = function resetLoader(frag, loader) {\n frag.loader = null;\n\n if (this.loader === loader) {\n self.clearTimeout(this.partLoadTimeout);\n this.loader = null;\n }\n\n loader.destroy();\n };\n\n return FragmentLoader;\n }();\n\n function createLoaderContext(frag, part) {\n if (part === void 0) {\n part = null;\n }\n\n var segment = part || frag;\n var loaderContext = {\n frag: frag,\n part: part,\n responseType: 'arraybuffer',\n url: segment.url,\n headers: {},\n rangeStart: 0,\n rangeEnd: 0\n };\n var start = segment.byteRangeStartOffset;\n var end = segment.byteRangeEndOffset;\n\n if (Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(start) && Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(end)) {\n loaderContext.rangeStart = start;\n loaderContext.rangeEnd = end;\n }\n\n return loaderContext;\n }\n\n var LoadError = /*#__PURE__*/function (_Error) {\n _inheritsLoose(LoadError, _Error);\n\n function LoadError(data) {\n var _this3;\n\n for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n params[_key - 1] = arguments[_key];\n }\n\n _this3 = _Error.call.apply(_Error, [this].concat(params)) || this;\n _this3.data = void 0;\n _this3.data = data;\n return _this3;\n }\n\n return LoadError;\n }( /*#__PURE__*/_wrapNativeSuper(Error));\n /***/\n\n },\n\n /***/\n \"./src/loader/fragment.ts\":\n /*!********************************!*\\\n !*** ./src/loader/fragment.ts ***!\n \\********************************/\n\n /*! exports provided: ElementaryStreamTypes, BaseSegment, Fragment, Part */\n\n /***/\n function srcLoaderFragmentTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"ElementaryStreamTypes\", function () {\n return ElementaryStreamTypes;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"BaseSegment\", function () {\n return BaseSegment;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"Fragment\", function () {\n return Fragment;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"Part\", function () {\n return Part;\n });\n /* harmony import */\n\n\n var _home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./src/polyfills/number */\n \"./src/polyfills/number.ts\");\n /* harmony import */\n\n\n var url_toolkit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! url-toolkit */\n \"./node_modules/url-toolkit/src/url-toolkit.js\");\n /* harmony import */\n\n\n var url_toolkit__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(url_toolkit__WEBPACK_IMPORTED_MODULE_1__);\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ../utils/logger */\n \"./src/utils/logger.ts\");\n /* harmony import */\n\n\n var _level_key__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\n /*! ./level-key */\n \"./src/loader/level-key.ts\");\n /* harmony import */\n\n\n var _load_stats__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\n /*! ./load-stats */\n \"./src/loader/load-stats.ts\");\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n var ElementaryStreamTypes;\n\n (function (ElementaryStreamTypes) {\n ElementaryStreamTypes[\"AUDIO\"] = \"audio\";\n ElementaryStreamTypes[\"VIDEO\"] = \"video\";\n ElementaryStreamTypes[\"AUDIOVIDEO\"] = \"audiovideo\";\n })(ElementaryStreamTypes || (ElementaryStreamTypes = {}));\n\n var BaseSegment = /*#__PURE__*/function () {\n // baseurl is the URL to the playlist\n // relurl is the portion of the URL that comes from inside the playlist.\n // Holds the types of data this fragment supports\n function BaseSegment(baseurl) {\n var _this$elementaryStrea;\n\n this._byteRange = null;\n this._url = null;\n this.baseurl = void 0;\n this.relurl = void 0;\n this.elementaryStreams = (_this$elementaryStrea = {}, _this$elementaryStrea[ElementaryStreamTypes.AUDIO] = null, _this$elementaryStrea[ElementaryStreamTypes.VIDEO] = null, _this$elementaryStrea[ElementaryStreamTypes.AUDIOVIDEO] = null, _this$elementaryStrea);\n this.baseurl = baseurl;\n } // setByteRange converts a EXT-X-BYTERANGE attribute into a two element array\n\n\n var _proto = BaseSegment.prototype;\n\n _proto.setByteRange = function setByteRange(value, previous) {\n var params = value.split('@', 2);\n var byteRange = [];\n\n if (params.length === 1) {\n byteRange[0] = previous ? previous.byteRangeEndOffset : 0;\n } else {\n byteRange[0] = parseInt(params[1]);\n }\n\n byteRange[1] = parseInt(params[0]) + byteRange[0];\n this._byteRange = byteRange;\n };\n\n _createClass(BaseSegment, [{\n key: \"byteRange\",\n get: function get() {\n if (!this._byteRange) {\n return [];\n }\n\n return this._byteRange;\n }\n }, {\n key: \"byteRangeStartOffset\",\n get: function get() {\n return this.byteRange[0];\n }\n }, {\n key: \"byteRangeEndOffset\",\n get: function get() {\n return this.byteRange[1];\n }\n }, {\n key: \"url\",\n get: function get() {\n if (!this._url && this.baseurl && this.relurl) {\n this._url = Object(url_toolkit__WEBPACK_IMPORTED_MODULE_1__[\"buildAbsoluteURL\"])(this.baseurl, this.relurl, {\n alwaysNormalize: true\n });\n }\n\n return this._url || '';\n },\n set: function set(value) {\n this._url = value;\n }\n }]);\n\n return BaseSegment;\n }();\n\n var Fragment = /*#__PURE__*/function (_BaseSegment) {\n _inheritsLoose(Fragment, _BaseSegment); // EXTINF has to be present for a m38 to be considered valid\n // sn notates the sequence number for a segment, and if set to a string can be 'initSegment'\n // levelkey is the EXT-X-KEY that applies to this segment for decryption\n // core difference from the private field _decryptdata is the lack of the initialized IV\n // _decryptdata will set the IV for this segment based on the segment number in the fragment\n // A string representing the fragment type\n // A reference to the loader. Set while the fragment is loading, and removed afterwards. Used to abort fragment loading\n // The level/track index to which the fragment belongs\n // The continuity counter of the fragment\n // The starting Presentation Time Stamp (PTS) of the fragment. Set after transmux complete.\n // The ending Presentation Time Stamp (PTS) of the fragment. Set after transmux complete.\n // The latest Presentation Time Stamp (PTS) appended to the buffer.\n // The starting Decode Time Stamp (DTS) of the fragment. Set after transmux complete.\n // The ending Decode Time Stamp (DTS) of the fragment. Set after transmux complete.\n // The start time of the fragment, as listed in the manifest. Updated after transmux complete.\n // Set by `updateFragPTSDTS` in level-helper\n // The maximum starting Presentation Time Stamp (audio/video PTS) of the fragment. Set after transmux complete.\n // The minimum ending Presentation Time Stamp (audio/video PTS) of the fragment. Set after transmux complete.\n // Load/parse timing information\n // A flag indicating whether the segment was downloaded in order to test bitrate, and was not buffered\n // #EXTINF segment title\n // The Media Initialization Section for this segment\n\n\n function Fragment(type, baseurl) {\n var _this;\n\n _this = _BaseSegment.call(this, baseurl) || this;\n _this._decryptdata = null;\n _this.rawProgramDateTime = null;\n _this.programDateTime = null;\n _this.tagList = [];\n _this.duration = 0;\n _this.sn = 0;\n _this.levelkey = void 0;\n _this.type = void 0;\n _this.loader = null;\n _this.level = -1;\n _this.cc = 0;\n _this.startPTS = void 0;\n _this.endPTS = void 0;\n _this.appendedPTS = void 0;\n _this.startDTS = void 0;\n _this.endDTS = void 0;\n _this.start = 0;\n _this.deltaPTS = void 0;\n _this.maxStartPTS = void 0;\n _this.minEndPTS = void 0;\n _this.stats = new _load_stats__WEBPACK_IMPORTED_MODULE_4__[\"LoadStats\"]();\n _this.urlId = 0;\n _this.data = void 0;\n _this.bitrateTest = false;\n _this.title = null;\n _this.initSegment = null;\n _this.type = type;\n return _this;\n }\n\n var _proto2 = Fragment.prototype;\n /**\n * Utility method for parseLevelPlaylist to create an initialization vector for a given segment\n * @param {number} segmentNumber - segment number to generate IV with\n * @returns {Uint8Array}\n */\n\n _proto2.createInitializationVector = function createInitializationVector(segmentNumber) {\n var uint8View = new Uint8Array(16);\n\n for (var i = 12; i < 16; i++) {\n uint8View[i] = segmentNumber >> 8 * (15 - i) & 0xff;\n }\n\n return uint8View;\n }\n /**\n * Utility method for parseLevelPlaylist to get a fragment's decryption data from the currently parsed encryption key data\n * @param levelkey - a playlist's encryption info\n * @param segmentNumber - the fragment's segment number\n * @returns {LevelKey} - an object to be applied as a fragment's decryptdata\n */\n ;\n\n _proto2.setDecryptDataFromLevelKey = function setDecryptDataFromLevelKey(levelkey, segmentNumber) {\n var decryptdata = levelkey;\n\n if ((levelkey === null || levelkey === void 0 ? void 0 : levelkey.method) === 'AES-128' && levelkey.uri && !levelkey.iv) {\n decryptdata = _level_key__WEBPACK_IMPORTED_MODULE_3__[\"LevelKey\"].fromURI(levelkey.uri);\n decryptdata.method = levelkey.method;\n decryptdata.iv = this.createInitializationVector(segmentNumber);\n decryptdata.keyFormat = 'identity';\n }\n\n return decryptdata;\n };\n\n _proto2.setElementaryStreamInfo = function setElementaryStreamInfo(type, startPTS, endPTS, startDTS, endDTS, partial) {\n if (partial === void 0) {\n partial = false;\n }\n\n var elementaryStreams = this.elementaryStreams;\n var info = elementaryStreams[type];\n\n if (!info) {\n elementaryStreams[type] = {\n startPTS: startPTS,\n endPTS: endPTS,\n startDTS: startDTS,\n endDTS: endDTS,\n partial: partial\n };\n return;\n }\n\n info.startPTS = Math.min(info.startPTS, startPTS);\n info.endPTS = Math.max(info.endPTS, endPTS);\n info.startDTS = Math.min(info.startDTS, startDTS);\n info.endDTS = Math.max(info.endDTS, endDTS);\n };\n\n _proto2.clearElementaryStreamInfo = function clearElementaryStreamInfo() {\n var elementaryStreams = this.elementaryStreams;\n elementaryStreams[ElementaryStreamTypes.AUDIO] = null;\n elementaryStreams[ElementaryStreamTypes.VIDEO] = null;\n elementaryStreams[ElementaryStreamTypes.AUDIOVIDEO] = null;\n };\n\n _createClass(Fragment, [{\n key: \"decryptdata\",\n get: function get() {\n if (!this.levelkey && !this._decryptdata) {\n return null;\n }\n\n if (!this._decryptdata && this.levelkey) {\n var sn = this.sn;\n\n if (typeof sn !== 'number') {\n // We are fetching decryption data for a initialization segment\n // If the segment was encrypted with AES-128\n // It must have an IV defined. We cannot substitute the Segment Number in.\n if (this.levelkey && this.levelkey.method === 'AES-128' && !this.levelkey.iv) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"missing IV for initialization segment with method=\\\"\" + this.levelkey.method + \"\\\" - compliance issue\");\n }\n /*\n Be converted to a Number.\n 'initSegment' will become NaN.\n NaN, which when converted through ToInt32() -> +0.\n ---\n Explicitly set sn to resulting value from implicit conversions 'initSegment' values for IV generation.\n */\n\n\n sn = 0;\n }\n\n this._decryptdata = this.setDecryptDataFromLevelKey(this.levelkey, sn);\n }\n\n return this._decryptdata;\n }\n }, {\n key: \"end\",\n get: function get() {\n return this.start + this.duration;\n }\n }, {\n key: \"endProgramDateTime\",\n get: function get() {\n if (this.programDateTime === null) {\n return null;\n }\n\n if (!Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(this.programDateTime)) {\n return null;\n }\n\n var duration = !Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(this.duration) ? 0 : this.duration;\n return this.programDateTime + duration * 1000;\n }\n }, {\n key: \"encrypted\",\n get: function get() {\n var _this$decryptdata; // At the m3u8-parser level we need to add support for manifest signalled keyformats\n // when we want the fragment to start reporting that it is encrypted.\n // Currently, keyFormat will only be set for identity keys\n\n\n if ((_this$decryptdata = this.decryptdata) !== null && _this$decryptdata !== void 0 && _this$decryptdata.keyFormat && this.decryptdata.uri) {\n return true;\n }\n\n return false;\n }\n }]);\n\n return Fragment;\n }(BaseSegment);\n\n var Part = /*#__PURE__*/function (_BaseSegment2) {\n _inheritsLoose(Part, _BaseSegment2);\n\n function Part(partAttrs, frag, baseurl, index, previous) {\n var _this2;\n\n _this2 = _BaseSegment2.call(this, baseurl) || this;\n _this2.fragOffset = 0;\n _this2.duration = 0;\n _this2.gap = false;\n _this2.independent = false;\n _this2.relurl = void 0;\n _this2.fragment = void 0;\n _this2.index = void 0;\n _this2.stats = new _load_stats__WEBPACK_IMPORTED_MODULE_4__[\"LoadStats\"]();\n _this2.duration = partAttrs.decimalFloatingPoint('DURATION');\n _this2.gap = partAttrs.bool('GAP');\n _this2.independent = partAttrs.bool('INDEPENDENT');\n _this2.relurl = partAttrs.enumeratedString('URI');\n _this2.fragment = frag;\n _this2.index = index;\n var byteRange = partAttrs.enumeratedString('BYTERANGE');\n\n if (byteRange) {\n _this2.setByteRange(byteRange, previous);\n }\n\n if (previous) {\n _this2.fragOffset = previous.fragOffset + previous.duration;\n }\n\n return _this2;\n }\n\n _createClass(Part, [{\n key: \"start\",\n get: function get() {\n return this.fragment.start + this.fragOffset;\n }\n }, {\n key: \"end\",\n get: function get() {\n return this.start + this.duration;\n }\n }, {\n key: \"loaded\",\n get: function get() {\n var elementaryStreams = this.elementaryStreams;\n return !!(elementaryStreams.audio || elementaryStreams.video || elementaryStreams.audiovideo);\n }\n }]);\n\n return Part;\n }(BaseSegment);\n /***/\n\n },\n\n /***/\n \"./src/loader/key-loader.ts\":\n /*!**********************************!*\\\n !*** ./src/loader/key-loader.ts ***!\n \\**********************************/\n\n /*! exports provided: default */\n\n /***/\n function srcLoaderKeyLoaderTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"default\", function () {\n return KeyLoader;\n });\n /* harmony import */\n\n\n var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ../events */\n \"./src/events.ts\");\n /* harmony import */\n\n\n var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ../errors */\n \"./src/errors.ts\");\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ../utils/logger */\n \"./src/utils/logger.ts\");\n /*\n * Decrypt key Loader\n */\n\n\n var KeyLoader = /*#__PURE__*/function () {\n function KeyLoader(hls) {\n this.hls = void 0;\n this.loaders = {};\n this.decryptkey = null;\n this.decrypturl = null;\n this.hls = hls;\n\n this._registerListeners();\n }\n\n var _proto = KeyLoader.prototype;\n\n _proto._registerListeners = function _registerListeners() {\n this.hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].KEY_LOADING, this.onKeyLoading, this);\n };\n\n _proto._unregisterListeners = function _unregisterListeners() {\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].KEY_LOADING, this.onKeyLoading);\n };\n\n _proto.destroy = function destroy() {\n this._unregisterListeners();\n\n for (var loaderName in this.loaders) {\n var loader = this.loaders[loaderName];\n\n if (loader) {\n loader.destroy();\n }\n }\n\n this.loaders = {};\n };\n\n _proto.onKeyLoading = function onKeyLoading(event, data) {\n var frag = data.frag;\n var type = frag.type;\n var loader = this.loaders[type];\n\n if (!frag.decryptdata) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn('Missing decryption data on fragment in onKeyLoading');\n\n return;\n } // Load the key if the uri is different from previous one, or if the decrypt key has not yet been retrieved\n\n\n var uri = frag.decryptdata.uri;\n\n if (uri !== this.decrypturl || this.decryptkey === null) {\n var config = this.hls.config;\n\n if (loader) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"abort previous key loader for type:\" + type);\n\n loader.abort();\n }\n\n if (!uri) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn('key uri is falsy');\n\n return;\n }\n\n var Loader = config.loader;\n var fragLoader = frag.loader = this.loaders[type] = new Loader(config);\n this.decrypturl = uri;\n this.decryptkey = null;\n var loaderContext = {\n url: uri,\n frag: frag,\n responseType: 'arraybuffer'\n }; // maxRetry is 0 so that instead of retrying the same key on the same variant multiple times,\n // key-loader will trigger an error and rely on stream-controller to handle retry logic.\n // this will also align retry logic with fragment-loader\n\n var loaderConfig = {\n timeout: config.fragLoadingTimeOut,\n maxRetry: 0,\n retryDelay: config.fragLoadingRetryDelay,\n maxRetryDelay: config.fragLoadingMaxRetryTimeout,\n highWaterMark: 0\n };\n var loaderCallbacks = {\n onSuccess: this.loadsuccess.bind(this),\n onError: this.loaderror.bind(this),\n onTimeout: this.loadtimeout.bind(this)\n };\n fragLoader.load(loaderContext, loaderConfig, loaderCallbacks);\n } else if (this.decryptkey) {\n // Return the key if it's already been loaded\n frag.decryptdata.key = this.decryptkey;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].KEY_LOADED, {\n frag: frag\n });\n }\n };\n\n _proto.loadsuccess = function loadsuccess(response, stats, context) {\n var frag = context.frag;\n\n if (!frag.decryptdata) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error('after key load, decryptdata unset');\n\n return;\n }\n\n this.decryptkey = frag.decryptdata.key = new Uint8Array(response.data); // detach fragment loader on load success\n\n frag.loader = null;\n delete this.loaders[frag.type];\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].KEY_LOADED, {\n frag: frag\n });\n };\n\n _proto.loaderror = function loaderror(response, context) {\n var frag = context.frag;\n var loader = frag.loader;\n\n if (loader) {\n loader.abort();\n }\n\n delete this.loaders[frag.type];\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_LOAD_ERROR,\n fatal: false,\n frag: frag,\n response: response\n });\n };\n\n _proto.loadtimeout = function loadtimeout(stats, context) {\n var frag = context.frag;\n var loader = frag.loader;\n\n if (loader) {\n loader.abort();\n }\n\n delete this.loaders[frag.type];\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_LOAD_TIMEOUT,\n fatal: false,\n frag: frag\n });\n };\n\n return KeyLoader;\n }();\n /***/\n\n },\n\n /***/\n \"./src/loader/level-details.ts\":\n /*!*************************************!*\\\n !*** ./src/loader/level-details.ts ***!\n \\*************************************/\n\n /*! exports provided: LevelDetails */\n\n /***/\n function srcLoaderLevelDetailsTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"LevelDetails\", function () {\n return LevelDetails;\n });\n /* harmony import */\n\n\n var _home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./src/polyfills/number */\n \"./src/polyfills/number.ts\");\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n var DEFAULT_TARGET_DURATION = 10;\n\n var LevelDetails = /*#__PURE__*/function () {\n // Manifest reload synchronization\n function LevelDetails(baseUrl) {\n this.PTSKnown = false;\n this.alignedSliding = false;\n this.averagetargetduration = void 0;\n this.endCC = 0;\n this.endSN = 0;\n this.fragments = void 0;\n this.fragmentHint = void 0;\n this.partList = null;\n this.live = true;\n this.ageHeader = 0;\n this.advancedDateTime = void 0;\n this.updated = true;\n this.advanced = true;\n this.availabilityDelay = void 0;\n this.misses = 0;\n this.needSidxRanges = false;\n this.startCC = 0;\n this.startSN = 0;\n this.startTimeOffset = null;\n this.targetduration = 0;\n this.totalduration = 0;\n this.type = null;\n this.url = void 0;\n this.m3u8 = '';\n this.version = null;\n this.canBlockReload = false;\n this.canSkipUntil = 0;\n this.canSkipDateRanges = false;\n this.skippedSegments = 0;\n this.recentlyRemovedDateranges = void 0;\n this.partHoldBack = 0;\n this.holdBack = 0;\n this.partTarget = 0;\n this.preloadHint = void 0;\n this.renditionReports = void 0;\n this.tuneInGoal = 0;\n this.deltaUpdateFailed = void 0;\n this.driftStartTime = 0;\n this.driftEndTime = 0;\n this.driftStart = 0;\n this.driftEnd = 0;\n this.fragments = [];\n this.url = baseUrl;\n }\n\n var _proto = LevelDetails.prototype;\n\n _proto.reloaded = function reloaded(previous) {\n if (!previous) {\n this.advanced = true;\n this.updated = true;\n return;\n }\n\n var partSnDiff = this.lastPartSn - previous.lastPartSn;\n var partIndexDiff = this.lastPartIndex - previous.lastPartIndex;\n this.updated = this.endSN !== previous.endSN || !!partIndexDiff || !!partSnDiff;\n this.advanced = this.endSN > previous.endSN || partSnDiff > 0 || partSnDiff === 0 && partIndexDiff > 0;\n\n if (this.updated || this.advanced) {\n this.misses = Math.floor(previous.misses * 0.6);\n } else {\n this.misses = previous.misses + 1;\n }\n\n this.availabilityDelay = previous.availabilityDelay;\n };\n\n _createClass(LevelDetails, [{\n key: \"hasProgramDateTime\",\n get: function get() {\n if (this.fragments.length) {\n return Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(this.fragments[this.fragments.length - 1].programDateTime);\n }\n\n return false;\n }\n }, {\n key: \"levelTargetDuration\",\n get: function get() {\n return this.averagetargetduration || this.targetduration || DEFAULT_TARGET_DURATION;\n }\n }, {\n key: \"drift\",\n get: function get() {\n var runTime = this.driftEndTime - this.driftStartTime;\n\n if (runTime > 0) {\n var runDuration = this.driftEnd - this.driftStart;\n return runDuration * 1000 / runTime;\n }\n\n return 1;\n }\n }, {\n key: \"edge\",\n get: function get() {\n return this.partEnd || this.fragmentEnd;\n }\n }, {\n key: \"partEnd\",\n get: function get() {\n var _this$partList;\n\n if ((_this$partList = this.partList) !== null && _this$partList !== void 0 && _this$partList.length) {\n return this.partList[this.partList.length - 1].end;\n }\n\n return this.fragmentEnd;\n }\n }, {\n key: \"fragmentEnd\",\n get: function get() {\n var _this$fragments;\n\n if ((_this$fragments = this.fragments) !== null && _this$fragments !== void 0 && _this$fragments.length) {\n return this.fragments[this.fragments.length - 1].end;\n }\n\n return 0;\n }\n }, {\n key: \"age\",\n get: function get() {\n if (this.advancedDateTime) {\n return Math.max(Date.now() - this.advancedDateTime, 0) / 1000;\n }\n\n return 0;\n }\n }, {\n key: \"lastPartIndex\",\n get: function get() {\n var _this$partList2;\n\n if ((_this$partList2 = this.partList) !== null && _this$partList2 !== void 0 && _this$partList2.length) {\n return this.partList[this.partList.length - 1].index;\n }\n\n return -1;\n }\n }, {\n key: \"lastPartSn\",\n get: function get() {\n var _this$partList3;\n\n if ((_this$partList3 = this.partList) !== null && _this$partList3 !== void 0 && _this$partList3.length) {\n return this.partList[this.partList.length - 1].fragment.sn;\n }\n\n return this.endSN;\n }\n }]);\n\n return LevelDetails;\n }();\n /***/\n\n },\n\n /***/\n \"./src/loader/level-key.ts\":\n /*!*********************************!*\\\n !*** ./src/loader/level-key.ts ***!\n \\*********************************/\n\n /*! exports provided: LevelKey */\n\n /***/\n function srcLoaderLevelKeyTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"LevelKey\", function () {\n return LevelKey;\n });\n /* harmony import */\n\n\n var url_toolkit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! url-toolkit */\n \"./node_modules/url-toolkit/src/url-toolkit.js\");\n /* harmony import */\n\n\n var url_toolkit__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(url_toolkit__WEBPACK_IMPORTED_MODULE_0__);\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n var LevelKey = /*#__PURE__*/function () {\n LevelKey.fromURL = function fromURL(baseUrl, relativeUrl) {\n return new LevelKey(baseUrl, relativeUrl);\n };\n\n LevelKey.fromURI = function fromURI(uri) {\n return new LevelKey(uri);\n };\n\n function LevelKey(absoluteOrBaseURI, relativeURL) {\n this._uri = null;\n this.method = null;\n this.keyFormat = null;\n this.keyFormatVersions = null;\n this.keyID = null;\n this.key = null;\n this.iv = null;\n\n if (relativeURL) {\n this._uri = Object(url_toolkit__WEBPACK_IMPORTED_MODULE_0__[\"buildAbsoluteURL\"])(absoluteOrBaseURI, relativeURL, {\n alwaysNormalize: true\n });\n } else {\n this._uri = absoluteOrBaseURI;\n }\n }\n\n _createClass(LevelKey, [{\n key: \"uri\",\n get: function get() {\n return this._uri;\n }\n }]);\n\n return LevelKey;\n }();\n /***/\n\n },\n\n /***/\n \"./src/loader/load-stats.ts\":\n /*!**********************************!*\\\n !*** ./src/loader/load-stats.ts ***!\n \\**********************************/\n\n /*! exports provided: LoadStats */\n\n /***/\n function srcLoaderLoadStatsTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"LoadStats\", function () {\n return LoadStats;\n });\n\n var LoadStats = function LoadStats() {\n this.aborted = false;\n this.loaded = 0;\n this.retry = 0;\n this.total = 0;\n this.chunkCount = 0;\n this.bwEstimate = 0;\n this.loading = {\n start: 0,\n first: 0,\n end: 0\n };\n this.parsing = {\n start: 0,\n end: 0\n };\n this.buffering = {\n start: 0,\n first: 0,\n end: 0\n };\n };\n /***/\n\n },\n\n /***/\n \"./src/loader/m3u8-parser.ts\":\n /*!***********************************!*\\\n !*** ./src/loader/m3u8-parser.ts ***!\n \\***********************************/\n\n /*! exports provided: default */\n\n /***/\n function srcLoaderM3u8ParserTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"default\", function () {\n return M3U8Parser;\n });\n /* harmony import */\n\n\n var _home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./src/polyfills/number */\n \"./src/polyfills/number.ts\");\n /* harmony import */\n\n\n var url_toolkit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! url-toolkit */\n \"./node_modules/url-toolkit/src/url-toolkit.js\");\n /* harmony import */\n\n\n var url_toolkit__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(url_toolkit__WEBPACK_IMPORTED_MODULE_1__);\n /* harmony import */\n\n\n var _fragment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ./fragment */\n \"./src/loader/fragment.ts\");\n /* harmony import */\n\n\n var _level_details__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\n /*! ./level-details */\n \"./src/loader/level-details.ts\");\n /* harmony import */\n\n\n var _level_key__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\n /*! ./level-key */\n \"./src/loader/level-key.ts\");\n /* harmony import */\n\n\n var _utils_attr_list__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(\n /*! ../utils/attr-list */\n \"./src/utils/attr-list.ts\");\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(\n /*! ../utils/logger */\n \"./src/utils/logger.ts\");\n /* harmony import */\n\n\n var _utils_codecs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(\n /*! ../utils/codecs */\n \"./src/utils/codecs.ts\"); // https://regex101.com is your friend\n\n\n var MASTER_PLAYLIST_REGEX = /#EXT-X-STREAM-INF:([^\\r\\n]*)(?:[\\r\\n](?:#[^\\r\\n]*)?)*([^\\r\\n]+)|#EXT-X-SESSION-DATA:([^\\r\\n]*)[\\r\\n]+/g;\n var MASTER_PLAYLIST_MEDIA_REGEX = /#EXT-X-MEDIA:(.*)/g;\n var LEVEL_PLAYLIST_REGEX_FAST = new RegExp([/#EXTINF:\\s*(\\d*(?:\\.\\d+)?)(?:,(.*)\\s+)?/.source, // duration (#EXTINF:,), group 1 => duration, group 2 => title\n /(?!#) *(\\S[\\S ]*)/.source, // segment URI, group 3 => the URI (note newline is not eaten)\n /#EXT-X-BYTERANGE:*(.+)/.source, // next segment's byterange, group 4 => range spec (x@y)\n /#EXT-X-PROGRAM-DATE-TIME:(.+)/.source, // next segment's program date/time group 5 => the datetime spec\n /#.*/.source // All other non-segment oriented tags will match with all groups empty\n ].join('|'), 'g');\n var LEVEL_PLAYLIST_REGEX_SLOW = new RegExp([/#(EXTM3U)/.source, /#EXT-X-(PLAYLIST-TYPE):(.+)/.source, /#EXT-X-(MEDIA-SEQUENCE): *(\\d+)/.source, /#EXT-X-(SKIP):(.+)/.source, /#EXT-X-(TARGETDURATION): *(\\d+)/.source, /#EXT-X-(KEY):(.+)/.source, /#EXT-X-(START):(.+)/.source, /#EXT-X-(ENDLIST)/.source, /#EXT-X-(DISCONTINUITY-SEQ)UENCE: *(\\d+)/.source, /#EXT-X-(DIS)CONTINUITY/.source, /#EXT-X-(VERSION):(\\d+)/.source, /#EXT-X-(MAP):(.+)/.source, /#EXT-X-(SERVER-CONTROL):(.+)/.source, /#EXT-X-(PART-INF):(.+)/.source, /#EXT-X-(GAP)/.source, /#EXT-X-(BITRATE):\\s*(\\d+)/.source, /#EXT-X-(PART):(.+)/.source, /#EXT-X-(PRELOAD-HINT):(.+)/.source, /#EXT-X-(RENDITION-REPORT):(.+)/.source, /(#)([^:]*):(.*)/.source, /(#)(.*)(?:.*)\\r?\\n?/.source].join('|'));\n var MP4_REGEX_SUFFIX = /\\.(mp4|m4s|m4v|m4a)$/i;\n\n function isMP4Url(url) {\n var _URLToolkit$parseURL$, _URLToolkit$parseURL;\n\n return MP4_REGEX_SUFFIX.test((_URLToolkit$parseURL$ = (_URLToolkit$parseURL = url_toolkit__WEBPACK_IMPORTED_MODULE_1__[\"parseURL\"](url)) === null || _URLToolkit$parseURL === void 0 ? void 0 : _URLToolkit$parseURL.path) != null ? _URLToolkit$parseURL$ : '');\n }\n\n var M3U8Parser = /*#__PURE__*/function () {\n function M3U8Parser() {}\n\n M3U8Parser.findGroup = function findGroup(groups, mediaGroupId) {\n for (var i = 0; i < groups.length; i++) {\n var group = groups[i];\n\n if (group.id === mediaGroupId) {\n return group;\n }\n }\n };\n\n M3U8Parser.convertAVC1ToAVCOTI = function convertAVC1ToAVCOTI(codec) {\n // Convert avc1 codec string from RFC-4281 to RFC-6381 for MediaSource.isTypeSupported\n var avcdata = codec.split('.');\n\n if (avcdata.length > 2) {\n var result = avcdata.shift() + '.';\n result += parseInt(avcdata.shift()).toString(16);\n result += ('000' + parseInt(avcdata.shift()).toString(16)).substr(-4);\n return result;\n }\n\n return codec;\n };\n\n M3U8Parser.resolve = function resolve(url, baseUrl) {\n return url_toolkit__WEBPACK_IMPORTED_MODULE_1__[\"buildAbsoluteURL\"](baseUrl, url, {\n alwaysNormalize: true\n });\n };\n\n M3U8Parser.parseMasterPlaylist = function parseMasterPlaylist(string, baseurl) {\n var levels = [];\n var sessionData = {};\n var hasSessionData = false;\n MASTER_PLAYLIST_REGEX.lastIndex = 0;\n var result;\n\n while ((result = MASTER_PLAYLIST_REGEX.exec(string)) != null) {\n if (result[1]) {\n // '#EXT-X-STREAM-INF' is found, parse level tag in group 1\n var attrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_5__[\"AttrList\"](result[1]);\n var level = {\n attrs: attrs,\n bitrate: attrs.decimalInteger('AVERAGE-BANDWIDTH') || attrs.decimalInteger('BANDWIDTH'),\n name: attrs.NAME,\n url: M3U8Parser.resolve(result[2], baseurl)\n };\n var resolution = attrs.decimalResolution('RESOLUTION');\n\n if (resolution) {\n level.width = resolution.width;\n level.height = resolution.height;\n }\n\n setCodecs((attrs.CODECS || '').split(/[ ,]+/).filter(function (c) {\n return c;\n }), level);\n\n if (level.videoCodec && level.videoCodec.indexOf('avc1') !== -1) {\n level.videoCodec = M3U8Parser.convertAVC1ToAVCOTI(level.videoCodec);\n }\n\n levels.push(level);\n } else if (result[3]) {\n // '#EXT-X-SESSION-DATA' is found, parse session data in group 3\n var sessionAttrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_5__[\"AttrList\"](result[3]);\n\n if (sessionAttrs['DATA-ID']) {\n hasSessionData = true;\n sessionData[sessionAttrs['DATA-ID']] = sessionAttrs;\n }\n }\n }\n\n return {\n levels: levels,\n sessionData: hasSessionData ? sessionData : null\n };\n };\n\n M3U8Parser.parseMasterPlaylistMedia = function parseMasterPlaylistMedia(string, baseurl, type, groups) {\n if (groups === void 0) {\n groups = [];\n }\n\n var result;\n var medias = [];\n var id = 0;\n MASTER_PLAYLIST_MEDIA_REGEX.lastIndex = 0;\n\n while ((result = MASTER_PLAYLIST_MEDIA_REGEX.exec(string)) !== null) {\n var attrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_5__[\"AttrList\"](result[1]);\n\n if (attrs.TYPE === type) {\n var media = {\n attrs: attrs,\n bitrate: 0,\n id: id++,\n groupId: attrs['GROUP-ID'],\n instreamId: attrs['INSTREAM-ID'],\n name: attrs.NAME || attrs.LANGUAGE || '',\n type: type,\n default: attrs.bool('DEFAULT'),\n autoselect: attrs.bool('AUTOSELECT'),\n forced: attrs.bool('FORCED'),\n lang: attrs.LANGUAGE,\n url: attrs.URI ? M3U8Parser.resolve(attrs.URI, baseurl) : ''\n };\n\n if (groups.length) {\n // If there are audio or text groups signalled in the manifest, let's look for a matching codec string for this track\n // If we don't find the track signalled, lets use the first audio groups codec we have\n // Acting as a best guess\n var groupCodec = M3U8Parser.findGroup(groups, media.groupId) || groups[0];\n assignCodec(media, groupCodec, 'audioCodec');\n assignCodec(media, groupCodec, 'textCodec');\n }\n\n medias.push(media);\n }\n }\n\n return medias;\n };\n\n M3U8Parser.parseLevelPlaylist = function parseLevelPlaylist(string, baseurl, id, type, levelUrlId) {\n var level = new _level_details__WEBPACK_IMPORTED_MODULE_3__[\"LevelDetails\"](baseurl);\n var fragments = level.fragments; // The most recent init segment seen (applies to all subsequent segments)\n\n var currentInitSegment = null;\n var currentSN = 0;\n var currentPart = 0;\n var totalduration = 0;\n var discontinuityCounter = 0;\n var prevFrag = null;\n var frag = new _fragment__WEBPACK_IMPORTED_MODULE_2__[\"Fragment\"](type, baseurl);\n var result;\n var i;\n var levelkey;\n var firstPdtIndex = -1;\n var createNextFrag = false;\n LEVEL_PLAYLIST_REGEX_FAST.lastIndex = 0;\n level.m3u8 = string;\n\n while ((result = LEVEL_PLAYLIST_REGEX_FAST.exec(string)) !== null) {\n if (createNextFrag) {\n createNextFrag = false;\n frag = new _fragment__WEBPACK_IMPORTED_MODULE_2__[\"Fragment\"](type, baseurl); // setup the next fragment for part loading\n\n frag.start = totalduration;\n frag.sn = currentSN;\n frag.cc = discontinuityCounter;\n frag.level = id;\n\n if (currentInitSegment) {\n frag.initSegment = currentInitSegment;\n frag.rawProgramDateTime = currentInitSegment.rawProgramDateTime;\n }\n }\n\n var duration = result[1];\n\n if (duration) {\n // INF\n frag.duration = parseFloat(duration); // avoid sliced strings https://github.com/video-dev/hls.js/issues/939\n\n var title = (' ' + result[2]).slice(1);\n frag.title = title || null;\n frag.tagList.push(title ? ['INF', duration, title] : ['INF', duration]);\n } else if (result[3]) {\n // url\n if (Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(frag.duration)) {\n frag.start = totalduration;\n\n if (levelkey) {\n frag.levelkey = levelkey;\n }\n\n frag.sn = currentSN;\n frag.level = id;\n frag.cc = discontinuityCounter;\n frag.urlId = levelUrlId;\n fragments.push(frag); // avoid sliced strings https://github.com/video-dev/hls.js/issues/939\n\n frag.relurl = (' ' + result[3]).slice(1);\n assignProgramDateTime(frag, prevFrag);\n prevFrag = frag;\n totalduration += frag.duration;\n currentSN++;\n currentPart = 0;\n createNextFrag = true;\n }\n } else if (result[4]) {\n // X-BYTERANGE\n var data = (' ' + result[4]).slice(1);\n\n if (prevFrag) {\n frag.setByteRange(data, prevFrag);\n } else {\n frag.setByteRange(data);\n }\n } else if (result[5]) {\n // PROGRAM-DATE-TIME\n // avoid sliced strings https://github.com/video-dev/hls.js/issues/939\n frag.rawProgramDateTime = (' ' + result[5]).slice(1);\n frag.tagList.push(['PROGRAM-DATE-TIME', frag.rawProgramDateTime]);\n\n if (firstPdtIndex === -1) {\n firstPdtIndex = fragments.length;\n }\n } else {\n result = result[0].match(LEVEL_PLAYLIST_REGEX_SLOW);\n\n if (!result) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].warn('No matches on slow regex match for level playlist!');\n\n continue;\n }\n\n for (i = 1; i < result.length; i++) {\n if (typeof result[i] !== 'undefined') {\n break;\n }\n } // avoid sliced strings https://github.com/video-dev/hls.js/issues/939\n\n\n var tag = (' ' + result[i]).slice(1);\n var value1 = (' ' + result[i + 1]).slice(1);\n var value2 = result[i + 2] ? (' ' + result[i + 2]).slice(1) : '';\n\n switch (tag) {\n case 'PLAYLIST-TYPE':\n level.type = value1.toUpperCase();\n break;\n\n case 'MEDIA-SEQUENCE':\n currentSN = level.startSN = parseInt(value1);\n break;\n\n case 'SKIP':\n {\n var skipAttrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_5__[\"AttrList\"](value1);\n var skippedSegments = skipAttrs.decimalInteger('SKIPPED-SEGMENTS');\n\n if (Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(skippedSegments)) {\n level.skippedSegments = skippedSegments; // This will result in fragments[] containing undefined values, which we will fill in with `mergeDetails`\n\n for (var _i = skippedSegments; _i--;) {\n fragments.unshift(null);\n }\n\n currentSN += skippedSegments;\n }\n\n var recentlyRemovedDateranges = skipAttrs.enumeratedString('RECENTLY-REMOVED-DATERANGES');\n\n if (recentlyRemovedDateranges) {\n level.recentlyRemovedDateranges = recentlyRemovedDateranges.split('\\t');\n }\n\n break;\n }\n\n case 'TARGETDURATION':\n level.targetduration = parseFloat(value1);\n break;\n\n case 'VERSION':\n level.version = parseInt(value1);\n break;\n\n case 'EXTM3U':\n break;\n\n case 'ENDLIST':\n level.live = false;\n break;\n\n case '#':\n if (value1 || value2) {\n frag.tagList.push(value2 ? [value1, value2] : [value1]);\n }\n\n break;\n\n case 'DIS':\n discontinuityCounter++;\n\n /* falls through */\n\n case 'GAP':\n frag.tagList.push([tag]);\n break;\n\n case 'BITRATE':\n frag.tagList.push([tag, value1]);\n break;\n\n case 'DISCONTINUITY-SEQ':\n discontinuityCounter = parseInt(value1);\n break;\n\n case 'KEY':\n {\n var _keyAttrs$enumeratedS; // https://tools.ietf.org/html/rfc8216#section-4.3.2.4\n\n\n var keyAttrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_5__[\"AttrList\"](value1);\n var decryptmethod = keyAttrs.enumeratedString('METHOD');\n var decrypturi = keyAttrs.URI;\n var decryptiv = keyAttrs.hexadecimalInteger('IV');\n var decryptkeyformatversions = keyAttrs.enumeratedString('KEYFORMATVERSIONS');\n var decryptkeyid = keyAttrs.enumeratedString('KEYID'); // From RFC: This attribute is OPTIONAL; its absence indicates an implicit value of \"identity\".\n\n var decryptkeyformat = (_keyAttrs$enumeratedS = keyAttrs.enumeratedString('KEYFORMAT')) != null ? _keyAttrs$enumeratedS : 'identity';\n var unsupportedKnownKeyformatsInManifest = ['com.apple.streamingkeydelivery', 'com.microsoft.playready', 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed', // widevine (v2)\n 'com.widevine' // earlier widevine (v1)\n ];\n\n if (unsupportedKnownKeyformatsInManifest.indexOf(decryptkeyformat) > -1) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].warn(\"Keyformat \" + decryptkeyformat + \" is not supported from the manifest\");\n\n continue;\n } else if (decryptkeyformat !== 'identity') {\n // We are supposed to skip keys we don't understand.\n // As we currently only officially support identity keys\n // from the manifest we shouldn't save any other key.\n continue;\n } // TODO: multiple keys can be defined on a fragment, and we need to support this\n // for clients that support both playready and widevine\n\n\n if (decryptmethod) {\n // TODO: need to determine if the level key is actually a relative URL\n // if it isn't, then we should instead construct the LevelKey using fromURI.\n levelkey = _level_key__WEBPACK_IMPORTED_MODULE_4__[\"LevelKey\"].fromURL(baseurl, decrypturi);\n\n if (decrypturi && ['AES-128', 'SAMPLE-AES', 'SAMPLE-AES-CENC'].indexOf(decryptmethod) >= 0) {\n levelkey.method = decryptmethod;\n levelkey.keyFormat = decryptkeyformat;\n\n if (decryptkeyid) {\n levelkey.keyID = decryptkeyid;\n }\n\n if (decryptkeyformatversions) {\n levelkey.keyFormatVersions = decryptkeyformatversions;\n } // Initialization Vector (IV)\n\n\n levelkey.iv = decryptiv;\n }\n }\n\n break;\n }\n\n case 'START':\n {\n var startAttrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_5__[\"AttrList\"](value1);\n var startTimeOffset = startAttrs.decimalFloatingPoint('TIME-OFFSET'); // TIME-OFFSET can be 0\n\n if (Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(startTimeOffset)) {\n level.startTimeOffset = startTimeOffset;\n }\n\n break;\n }\n\n case 'MAP':\n {\n var mapAttrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_5__[\"AttrList\"](value1);\n frag.relurl = mapAttrs.URI;\n\n if (mapAttrs.BYTERANGE) {\n frag.setByteRange(mapAttrs.BYTERANGE);\n }\n\n frag.level = id;\n frag.sn = 'initSegment';\n\n if (levelkey) {\n frag.levelkey = levelkey;\n }\n\n frag.initSegment = null;\n currentInitSegment = frag;\n createNextFrag = true;\n break;\n }\n\n case 'SERVER-CONTROL':\n {\n var serverControlAttrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_5__[\"AttrList\"](value1);\n level.canBlockReload = serverControlAttrs.bool('CAN-BLOCK-RELOAD');\n level.canSkipUntil = serverControlAttrs.optionalFloat('CAN-SKIP-UNTIL', 0);\n level.canSkipDateRanges = level.canSkipUntil > 0 && serverControlAttrs.bool('CAN-SKIP-DATERANGES');\n level.partHoldBack = serverControlAttrs.optionalFloat('PART-HOLD-BACK', 0);\n level.holdBack = serverControlAttrs.optionalFloat('HOLD-BACK', 0);\n break;\n }\n\n case 'PART-INF':\n {\n var partInfAttrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_5__[\"AttrList\"](value1);\n level.partTarget = partInfAttrs.decimalFloatingPoint('PART-TARGET');\n break;\n }\n\n case 'PART':\n {\n var partList = level.partList;\n\n if (!partList) {\n partList = level.partList = [];\n }\n\n var previousFragmentPart = currentPart > 0 ? partList[partList.length - 1] : undefined;\n var index = currentPart++;\n var part = new _fragment__WEBPACK_IMPORTED_MODULE_2__[\"Part\"](new _utils_attr_list__WEBPACK_IMPORTED_MODULE_5__[\"AttrList\"](value1), frag, baseurl, index, previousFragmentPart);\n partList.push(part);\n frag.duration += part.duration;\n break;\n }\n\n case 'PRELOAD-HINT':\n {\n var preloadHintAttrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_5__[\"AttrList\"](value1);\n level.preloadHint = preloadHintAttrs;\n break;\n }\n\n case 'RENDITION-REPORT':\n {\n var renditionReportAttrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_5__[\"AttrList\"](value1);\n level.renditionReports = level.renditionReports || [];\n level.renditionReports.push(renditionReportAttrs);\n break;\n }\n\n default:\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].warn(\"line parsed but not handled: \" + result);\n\n break;\n }\n }\n }\n\n if (prevFrag && !prevFrag.relurl) {\n fragments.pop();\n totalduration -= prevFrag.duration;\n\n if (level.partList) {\n level.fragmentHint = prevFrag;\n }\n } else if (level.partList) {\n assignProgramDateTime(frag, prevFrag);\n frag.cc = discontinuityCounter;\n level.fragmentHint = frag;\n }\n\n var fragmentLength = fragments.length;\n var firstFragment = fragments[0];\n var lastFragment = fragments[fragmentLength - 1];\n totalduration += level.skippedSegments * level.targetduration;\n\n if (totalduration > 0 && fragmentLength && lastFragment) {\n level.averagetargetduration = totalduration / fragmentLength;\n var lastSn = lastFragment.sn;\n level.endSN = lastSn !== 'initSegment' ? lastSn : 0;\n\n if (firstFragment) {\n level.startCC = firstFragment.cc;\n\n if (!firstFragment.initSegment) {\n // this is a bit lurky but HLS really has no other way to tell us\n // if the fragments are TS or MP4, except if we download them :/\n // but this is to be able to handle SIDX.\n if (level.fragments.every(function (frag) {\n return frag.relurl && isMP4Url(frag.relurl);\n })) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].warn('MP4 fragments found but no init segment (probably no MAP, incomplete M3U8), trying to fetch SIDX');\n\n frag = new _fragment__WEBPACK_IMPORTED_MODULE_2__[\"Fragment\"](type, baseurl);\n frag.relurl = lastFragment.relurl;\n frag.level = id;\n frag.sn = 'initSegment';\n firstFragment.initSegment = frag;\n level.needSidxRanges = true;\n }\n }\n }\n } else {\n level.endSN = 0;\n level.startCC = 0;\n }\n\n if (level.fragmentHint) {\n totalduration += level.fragmentHint.duration;\n }\n\n level.totalduration = totalduration;\n level.endCC = discontinuityCounter;\n /**\n * Backfill any missing PDT values\n * \"If the first EXT-X-PROGRAM-DATE-TIME tag in a Playlist appears after\n * one or more Media Segment URIs, the client SHOULD extrapolate\n * backward from that tag (using EXTINF durations and/or media\n * timestamps) to associate dates with those segments.\"\n * We have already extrapolated forward, but all fragments up to the first instance of PDT do not have their PDTs\n * computed.\n */\n\n if (firstPdtIndex > 0) {\n backfillProgramDateTimes(fragments, firstPdtIndex);\n }\n\n return level;\n };\n\n return M3U8Parser;\n }();\n\n function setCodecs(codecs, level) {\n ['video', 'audio', 'text'].forEach(function (type) {\n var filtered = codecs.filter(function (codec) {\n return Object(_utils_codecs__WEBPACK_IMPORTED_MODULE_7__[\"isCodecType\"])(codec, type);\n });\n\n if (filtered.length) {\n var preferred = filtered.filter(function (codec) {\n return codec.lastIndexOf('avc1', 0) === 0 || codec.lastIndexOf('mp4a', 0) === 0;\n });\n level[type + \"Codec\"] = preferred.length > 0 ? preferred[0] : filtered[0]; // remove from list\n\n codecs = codecs.filter(function (codec) {\n return filtered.indexOf(codec) === -1;\n });\n }\n });\n level.unknownCodecs = codecs;\n }\n\n function assignCodec(media, groupItem, codecProperty) {\n var codecValue = groupItem[codecProperty];\n\n if (codecValue) {\n media[codecProperty] = codecValue;\n }\n }\n\n function backfillProgramDateTimes(fragments, firstPdtIndex) {\n var fragPrev = fragments[firstPdtIndex];\n\n for (var i = firstPdtIndex; i--;) {\n var frag = fragments[i]; // Exit on delta-playlist skipped segments\n\n if (!frag) {\n return;\n }\n\n frag.programDateTime = fragPrev.programDateTime - frag.duration * 1000;\n fragPrev = frag;\n }\n }\n\n function assignProgramDateTime(frag, prevFrag) {\n if (frag.rawProgramDateTime) {\n frag.programDateTime = Date.parse(frag.rawProgramDateTime);\n } else if (prevFrag !== null && prevFrag !== void 0 && prevFrag.programDateTime) {\n frag.programDateTime = prevFrag.endProgramDateTime;\n }\n\n if (!Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(frag.programDateTime)) {\n frag.programDateTime = null;\n frag.rawProgramDateTime = null;\n }\n }\n /***/\n\n },\n\n /***/\n \"./src/loader/playlist-loader.ts\":\n /*!***************************************!*\\\n !*** ./src/loader/playlist-loader.ts ***!\n \\***************************************/\n\n /*! exports provided: default */\n\n /***/\n function srcLoaderPlaylistLoaderTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony import */\n\n\n var _home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./src/polyfills/number */\n \"./src/polyfills/number.ts\");\n /* harmony import */\n\n\n var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ../events */\n \"./src/events.ts\");\n /* harmony import */\n\n\n var _errors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ../errors */\n \"./src/errors.ts\");\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\n /*! ../utils/logger */\n \"./src/utils/logger.ts\");\n /* harmony import */\n\n\n var _utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\n /*! ../utils/mp4-tools */\n \"./src/utils/mp4-tools.ts\");\n /* harmony import */\n\n\n var _m3u8_parser__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(\n /*! ./m3u8-parser */\n \"./src/loader/m3u8-parser.ts\");\n /* harmony import */\n\n\n var _types_loader__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(\n /*! ../types/loader */\n \"./src/types/loader.ts\");\n /* harmony import */\n\n\n var _utils_attr_list__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(\n /*! ../utils/attr-list */\n \"./src/utils/attr-list.ts\");\n /**\n * PlaylistLoader - delegate for media manifest/playlist loading tasks. Takes care of parsing media to internal data-models.\n *\n * Once loaded, dispatches events with parsed data-models of manifest/levels/audio/subtitle tracks.\n *\n * Uses loader(s) set in config to do actual internal loading of resource tasks.\n *\n * @module\n *\n */\n\n\n function mapContextToLevelType(context) {\n var type = context.type;\n\n switch (type) {\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].AUDIO_TRACK:\n return _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].AUDIO;\n\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].SUBTITLE_TRACK:\n return _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].SUBTITLE;\n\n default:\n return _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN;\n }\n }\n\n function getResponseUrl(response, context) {\n var url = response.url; // responseURL not supported on some browsers (it is used to detect URL redirection)\n // data-uri mode also not supported (but no need to detect redirection)\n\n if (url === undefined || url.indexOf('data:') === 0) {\n // fallback to initial URL\n url = context.url;\n }\n\n return url;\n }\n\n var PlaylistLoader = /*#__PURE__*/function () {\n function PlaylistLoader(hls) {\n this.hls = void 0;\n this.loaders = Object.create(null);\n this.hls = hls;\n this.registerListeners();\n }\n\n var _proto = PlaylistLoader.prototype;\n\n _proto.registerListeners = function registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_LOADING, this.onLevelLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this);\n };\n\n _proto.unregisterListeners = function unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_LOADING, this.onLevelLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this);\n }\n /**\n * Returns defaults or configured loader-type overloads (pLoader and loader config params)\n */\n ;\n\n _proto.createInternalLoader = function createInternalLoader(context) {\n var config = this.hls.config;\n var PLoader = config.pLoader;\n var Loader = config.loader;\n var InternalLoader = PLoader || Loader;\n var loader = new InternalLoader(config);\n context.loader = loader;\n this.loaders[context.type] = loader;\n return loader;\n };\n\n _proto.getInternalLoader = function getInternalLoader(context) {\n return this.loaders[context.type];\n };\n\n _proto.resetInternalLoader = function resetInternalLoader(contextType) {\n if (this.loaders[contextType]) {\n delete this.loaders[contextType];\n }\n }\n /**\n * Call `destroy` on all internal loader instances mapped (one per context type)\n */\n ;\n\n _proto.destroyInternalLoaders = function destroyInternalLoaders() {\n for (var contextType in this.loaders) {\n var loader = this.loaders[contextType];\n\n if (loader) {\n loader.destroy();\n }\n\n this.resetInternalLoader(contextType);\n }\n };\n\n _proto.destroy = function destroy() {\n this.unregisterListeners();\n this.destroyInternalLoaders();\n };\n\n _proto.onManifestLoading = function onManifestLoading(event, data) {\n var url = data.url;\n this.load({\n id: null,\n groupId: null,\n level: 0,\n responseType: 'text',\n type: _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].MANIFEST,\n url: url,\n deliveryDirectives: null\n });\n };\n\n _proto.onLevelLoading = function onLevelLoading(event, data) {\n var id = data.id,\n level = data.level,\n url = data.url,\n deliveryDirectives = data.deliveryDirectives;\n this.load({\n id: id,\n groupId: null,\n level: level,\n responseType: 'text',\n type: _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].LEVEL,\n url: url,\n deliveryDirectives: deliveryDirectives\n });\n };\n\n _proto.onAudioTrackLoading = function onAudioTrackLoading(event, data) {\n var id = data.id,\n groupId = data.groupId,\n url = data.url,\n deliveryDirectives = data.deliveryDirectives;\n this.load({\n id: id,\n groupId: groupId,\n level: null,\n responseType: 'text',\n type: _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].AUDIO_TRACK,\n url: url,\n deliveryDirectives: deliveryDirectives\n });\n };\n\n _proto.onSubtitleTrackLoading = function onSubtitleTrackLoading(event, data) {\n var id = data.id,\n groupId = data.groupId,\n url = data.url,\n deliveryDirectives = data.deliveryDirectives;\n this.load({\n id: id,\n groupId: groupId,\n level: null,\n responseType: 'text',\n type: _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].SUBTITLE_TRACK,\n url: url,\n deliveryDirectives: deliveryDirectives\n });\n };\n\n _proto.load = function load(context) {\n var _context$deliveryDire;\n\n var config = this.hls.config; // logger.debug(`[playlist-loader]: Loading playlist of type ${context.type}, level: ${context.level}, id: ${context.id}`);\n // Check if a loader for this context already exists\n\n var loader = this.getInternalLoader(context);\n\n if (loader) {\n var loaderContext = loader.context;\n\n if (loaderContext && loaderContext.url === context.url) {\n // same URL can't overlap\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].trace('[playlist-loader]: playlist request ongoing');\n\n return;\n }\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].log(\"[playlist-loader]: aborting previous loader for type: \" + context.type);\n\n loader.abort();\n }\n\n var maxRetry;\n var timeout;\n var retryDelay;\n var maxRetryDelay; // apply different configs for retries depending on\n // context (manifest, level, audio/subs playlist)\n\n switch (context.type) {\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].MANIFEST:\n maxRetry = config.manifestLoadingMaxRetry;\n timeout = config.manifestLoadingTimeOut;\n retryDelay = config.manifestLoadingRetryDelay;\n maxRetryDelay = config.manifestLoadingMaxRetryTimeout;\n break;\n\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].LEVEL:\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].AUDIO_TRACK:\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].SUBTITLE_TRACK:\n // Manage retries in Level/Track Controller\n maxRetry = 0;\n timeout = config.levelLoadingTimeOut;\n break;\n\n default:\n maxRetry = config.levelLoadingMaxRetry;\n timeout = config.levelLoadingTimeOut;\n retryDelay = config.levelLoadingRetryDelay;\n maxRetryDelay = config.levelLoadingMaxRetryTimeout;\n break;\n }\n\n loader = this.createInternalLoader(context); // Override level/track timeout for LL-HLS requests\n // (the default of 10000ms is counter productive to blocking playlist reload requests)\n\n if ((_context$deliveryDire = context.deliveryDirectives) !== null && _context$deliveryDire !== void 0 && _context$deliveryDire.part) {\n var levelDetails;\n\n if (context.type === _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].LEVEL && context.level !== null) {\n levelDetails = this.hls.levels[context.level].details;\n } else if (context.type === _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].AUDIO_TRACK && context.id !== null) {\n levelDetails = this.hls.audioTracks[context.id].details;\n } else if (context.type === _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].SUBTITLE_TRACK && context.id !== null) {\n levelDetails = this.hls.subtitleTracks[context.id].details;\n }\n\n if (levelDetails) {\n var partTarget = levelDetails.partTarget;\n var targetDuration = levelDetails.targetduration;\n\n if (partTarget && targetDuration) {\n timeout = Math.min(Math.max(partTarget * 3, targetDuration * 0.8) * 1000, timeout);\n }\n }\n }\n\n var loaderConfig = {\n timeout: timeout,\n maxRetry: maxRetry,\n retryDelay: retryDelay,\n maxRetryDelay: maxRetryDelay,\n highWaterMark: 0\n };\n var loaderCallbacks = {\n onSuccess: this.loadsuccess.bind(this),\n onError: this.loaderror.bind(this),\n onTimeout: this.loadtimeout.bind(this)\n }; // logger.debug(`[playlist-loader]: Calling internal loader delegate for URL: ${context.url}`);\n\n loader.load(context, loaderConfig, loaderCallbacks);\n };\n\n _proto.loadsuccess = function loadsuccess(response, stats, context, networkDetails) {\n if (networkDetails === void 0) {\n networkDetails = null;\n }\n\n if (context.isSidxRequest) {\n this.handleSidxRequest(response, context);\n this.handlePlaylistLoaded(response, stats, context, networkDetails);\n return;\n }\n\n this.resetInternalLoader(context.type);\n var string = response.data; // Validate if it is an M3U8 at all\n\n if (string.indexOf('#EXTM3U') !== 0) {\n this.handleManifestParsingError(response, context, 'no EXTM3U delimiter', networkDetails);\n return;\n }\n\n stats.parsing.start = performance.now(); // Check if chunk-list or master. handle empty chunk list case (first EXTINF not signaled, but TARGETDURATION present)\n\n if (string.indexOf('#EXTINF:') > 0 || string.indexOf('#EXT-X-TARGETDURATION:') > 0) {\n this.handleTrackOrLevelPlaylist(response, stats, context, networkDetails);\n } else {\n this.handleMasterPlaylist(response, stats, context, networkDetails);\n }\n };\n\n _proto.loaderror = function loaderror(response, context, networkDetails) {\n if (networkDetails === void 0) {\n networkDetails = null;\n }\n\n this.handleNetworkError(context, networkDetails, false, response);\n };\n\n _proto.loadtimeout = function loadtimeout(stats, context, networkDetails) {\n if (networkDetails === void 0) {\n networkDetails = null;\n }\n\n this.handleNetworkError(context, networkDetails, true);\n };\n\n _proto.handleMasterPlaylist = function handleMasterPlaylist(response, stats, context, networkDetails) {\n var hls = this.hls;\n var string = response.data;\n var url = getResponseUrl(response, context);\n\n var _M3U8Parser$parseMast = _m3u8_parser__WEBPACK_IMPORTED_MODULE_5__[\"default\"].parseMasterPlaylist(string, url),\n levels = _M3U8Parser$parseMast.levels,\n sessionData = _M3U8Parser$parseMast.sessionData;\n\n if (!levels.length) {\n this.handleManifestParsingError(response, context, 'no level found in manifest', networkDetails);\n return;\n } // multi level playlist, parse level info\n\n\n var audioGroups = levels.map(function (level) {\n return {\n id: level.attrs.AUDIO,\n audioCodec: level.audioCodec\n };\n });\n var subtitleGroups = levels.map(function (level) {\n return {\n id: level.attrs.SUBTITLES,\n textCodec: level.textCodec\n };\n });\n\n var audioTracks = _m3u8_parser__WEBPACK_IMPORTED_MODULE_5__[\"default\"].parseMasterPlaylistMedia(string, url, 'AUDIO', audioGroups);\n\n var subtitles = _m3u8_parser__WEBPACK_IMPORTED_MODULE_5__[\"default\"].parseMasterPlaylistMedia(string, url, 'SUBTITLES', subtitleGroups);\n\n var captions = _m3u8_parser__WEBPACK_IMPORTED_MODULE_5__[\"default\"].parseMasterPlaylistMedia(string, url, 'CLOSED-CAPTIONS');\n\n if (audioTracks.length) {\n // check if we have found an audio track embedded in main playlist (audio track without URI attribute)\n var embeddedAudioFound = audioTracks.some(function (audioTrack) {\n return !audioTrack.url;\n }); // if no embedded audio track defined, but audio codec signaled in quality level,\n // we need to signal this main audio track this could happen with playlists with\n // alt audio rendition in which quality levels (main)\n // contains both audio+video. but with mixed audio track not signaled\n\n if (!embeddedAudioFound && levels[0].audioCodec && !levels[0].attrs.AUDIO) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].log('[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one');\n\n audioTracks.unshift({\n type: 'main',\n name: 'main',\n default: false,\n autoselect: false,\n forced: false,\n id: -1,\n attrs: new _utils_attr_list__WEBPACK_IMPORTED_MODULE_7__[\"AttrList\"]({}),\n bitrate: 0,\n url: ''\n });\n }\n }\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADED, {\n levels: levels,\n audioTracks: audioTracks,\n subtitles: subtitles,\n captions: captions,\n url: url,\n stats: stats,\n networkDetails: networkDetails,\n sessionData: sessionData\n });\n };\n\n _proto.handleTrackOrLevelPlaylist = function handleTrackOrLevelPlaylist(response, stats, context, networkDetails) {\n var hls = this.hls;\n var id = context.id,\n level = context.level,\n type = context.type;\n var url = getResponseUrl(response, context);\n var levelUrlId = Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(id) ? id : 0;\n var levelId = Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(level) ? level : levelUrlId;\n var levelType = mapContextToLevelType(context);\n\n var levelDetails = _m3u8_parser__WEBPACK_IMPORTED_MODULE_5__[\"default\"].parseLevelPlaylist(response.data, url, levelId, levelType, levelUrlId);\n\n if (!levelDetails.fragments.length) {\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].LEVEL_EMPTY_ERROR,\n fatal: false,\n url: url,\n reason: 'no fragments found in level',\n level: typeof context.level === 'number' ? context.level : undefined\n });\n return;\n } // We have done our first request (Manifest-type) and receive\n // not a master playlist but a chunk-list (track/level)\n // We fire the manifest-loaded event anyway with the parsed level-details\n // by creating a single-level structure for it.\n\n\n if (type === _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].MANIFEST) {\n var singleLevel = {\n attrs: new _utils_attr_list__WEBPACK_IMPORTED_MODULE_7__[\"AttrList\"]({}),\n bitrate: 0,\n details: levelDetails,\n name: '',\n url: url\n };\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADED, {\n levels: [singleLevel],\n audioTracks: [],\n url: url,\n stats: stats,\n networkDetails: networkDetails,\n sessionData: null\n });\n } // save parsing time\n\n\n stats.parsing.end = performance.now(); // in case we need SIDX ranges\n // return early after calling load for\n // the SIDX box.\n\n if (levelDetails.needSidxRanges) {\n var _levelDetails$fragmen;\n\n var sidxUrl = (_levelDetails$fragmen = levelDetails.fragments[0].initSegment) === null || _levelDetails$fragmen === void 0 ? void 0 : _levelDetails$fragmen.url;\n this.load({\n url: sidxUrl,\n isSidxRequest: true,\n type: type,\n level: level,\n levelDetails: levelDetails,\n id: id,\n groupId: null,\n rangeStart: 0,\n rangeEnd: 2048,\n responseType: 'arraybuffer',\n deliveryDirectives: null\n });\n return;\n } // extend the context with the new levelDetails property\n\n\n context.levelDetails = levelDetails;\n this.handlePlaylistLoaded(response, stats, context, networkDetails);\n };\n\n _proto.handleSidxRequest = function handleSidxRequest(response, context) {\n var sidxInfo = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__[\"parseSegmentIndex\"])(new Uint8Array(response.data)); // if provided fragment does not contain sidx, early return\n\n if (!sidxInfo) {\n return;\n }\n\n var sidxReferences = sidxInfo.references;\n var levelDetails = context.levelDetails;\n sidxReferences.forEach(function (segmentRef, index) {\n var segRefInfo = segmentRef.info;\n var frag = levelDetails.fragments[index];\n\n if (frag.byteRange.length === 0) {\n frag.setByteRange(String(1 + segRefInfo.end - segRefInfo.start) + '@' + String(segRefInfo.start));\n }\n\n if (frag.initSegment) {\n frag.initSegment.setByteRange(String(sidxInfo.moovEndOffset) + '@0');\n }\n });\n };\n\n _proto.handleManifestParsingError = function handleManifestParsingError(response, context, reason, networkDetails) {\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].MANIFEST_PARSING_ERROR,\n fatal: context.type === _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].MANIFEST,\n url: response.url,\n reason: reason,\n response: response,\n context: context,\n networkDetails: networkDetails\n });\n };\n\n _proto.handleNetworkError = function handleNetworkError(context, networkDetails, timeout, response) {\n if (timeout === void 0) {\n timeout = false;\n }\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn(\"[playlist-loader]: A network \" + (timeout ? 'timeout' : 'error') + \" occurred while loading \" + context.type + \" level: \" + context.level + \" id: \" + context.id + \" group-id: \\\"\" + context.groupId + \"\\\"\");\n\n var details = _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].UNKNOWN;\n var fatal = false;\n var loader = this.getInternalLoader(context);\n\n switch (context.type) {\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].MANIFEST:\n details = timeout ? _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].MANIFEST_LOAD_TIMEOUT : _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].MANIFEST_LOAD_ERROR;\n fatal = true;\n break;\n\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].LEVEL:\n details = timeout ? _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].LEVEL_LOAD_TIMEOUT : _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].LEVEL_LOAD_ERROR;\n fatal = false;\n break;\n\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].AUDIO_TRACK:\n details = timeout ? _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].AUDIO_TRACK_LOAD_TIMEOUT : _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].AUDIO_TRACK_LOAD_ERROR;\n fatal = false;\n break;\n\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].SUBTITLE_TRACK:\n details = timeout ? _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].SUBTITLE_TRACK_LOAD_TIMEOUT : _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].SUBTITLE_LOAD_ERROR;\n fatal = false;\n break;\n }\n\n if (loader) {\n this.resetInternalLoader(context.type);\n }\n\n var errorData = {\n type: _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorTypes\"].NETWORK_ERROR,\n details: details,\n fatal: fatal,\n url: context.url,\n loader: loader,\n context: context,\n networkDetails: networkDetails\n };\n\n if (response) {\n errorData.response = response;\n }\n\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, errorData);\n };\n\n _proto.handlePlaylistLoaded = function handlePlaylistLoaded(response, stats, context, networkDetails) {\n var type = context.type,\n level = context.level,\n id = context.id,\n groupId = context.groupId,\n loader = context.loader,\n levelDetails = context.levelDetails,\n deliveryDirectives = context.deliveryDirectives;\n\n if (!(levelDetails !== null && levelDetails !== void 0 && levelDetails.targetduration)) {\n this.handleManifestParsingError(response, context, 'invalid target duration', networkDetails);\n return;\n }\n\n if (!loader) {\n return;\n }\n\n if (levelDetails.live) {\n if (loader.getCacheAge) {\n levelDetails.ageHeader = loader.getCacheAge() || 0;\n }\n\n if (!loader.getCacheAge || isNaN(levelDetails.ageHeader)) {\n levelDetails.ageHeader = 0;\n }\n }\n\n switch (type) {\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].MANIFEST:\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].LEVEL:\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_LOADED, {\n details: levelDetails,\n level: level || 0,\n id: id || 0,\n stats: stats,\n networkDetails: networkDetails,\n deliveryDirectives: deliveryDirectives\n });\n break;\n\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].AUDIO_TRACK:\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].AUDIO_TRACK_LOADED, {\n details: levelDetails,\n id: id || 0,\n groupId: groupId || '',\n stats: stats,\n networkDetails: networkDetails,\n deliveryDirectives: deliveryDirectives\n });\n break;\n\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].SUBTITLE_TRACK:\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_TRACK_LOADED, {\n details: levelDetails,\n id: id || 0,\n groupId: groupId || '',\n stats: stats,\n networkDetails: networkDetails,\n deliveryDirectives: deliveryDirectives\n });\n break;\n }\n };\n\n return PlaylistLoader;\n }();\n /* harmony default export */\n\n\n __webpack_exports__[\"default\"] = PlaylistLoader;\n /***/\n },\n\n /***/\n \"./src/polyfills/number.ts\":\n /*!*********************************!*\\\n !*** ./src/polyfills/number.ts ***!\n \\*********************************/\n\n /*! exports provided: isFiniteNumber, MAX_SAFE_INTEGER */\n\n /***/\n function srcPolyfillsNumberTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"isFiniteNumber\", function () {\n return isFiniteNumber;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"MAX_SAFE_INTEGER\", function () {\n return MAX_SAFE_INTEGER;\n });\n\n var isFiniteNumber = Number.isFinite || function (value) {\n return typeof value === 'number' && isFinite(value);\n };\n\n var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\n /***/\n },\n\n /***/\n \"./src/remux/aac-helper.ts\":\n /*!*********************************!*\\\n !*** ./src/remux/aac-helper.ts ***!\n \\*********************************/\n\n /*! exports provided: default */\n\n /***/\n function srcRemuxAacHelperTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /**\n * AAC helper\n */\n\n\n var AAC = /*#__PURE__*/function () {\n function AAC() {}\n\n AAC.getSilentFrame = function getSilentFrame(codec, channelCount) {\n switch (codec) {\n case 'mp4a.40.2':\n if (channelCount === 1) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x23, 0x80]);\n } else if (channelCount === 2) {\n return new Uint8Array([0x21, 0x00, 0x49, 0x90, 0x02, 0x19, 0x00, 0x23, 0x80]);\n } else if (channelCount === 3) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x8e]);\n } else if (channelCount === 4) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x80, 0x2c, 0x80, 0x08, 0x02, 0x38]);\n } else if (channelCount === 5) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x38]);\n } else if (channelCount === 6) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x00, 0xb2, 0x00, 0x20, 0x08, 0xe0]);\n }\n\n break;\n // handle HE-AAC below (mp4a.40.5 / mp4a.40.29)\n\n default:\n if (channelCount === 1) {\n // ffmpeg -y -f lavfi -i \"aevalsrc=0:d=0.05\" -c:a libfdk_aac -profile:a aac_he -b:a 4k output.aac && hexdump -v -e '16/1 \"0x%x,\" \"\\n\"' -v output.aac\n return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x4e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x1c, 0x6, 0xf1, 0xc1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);\n } else if (channelCount === 2) {\n // ffmpeg -y -f lavfi -i \"aevalsrc=0|0:d=0.05\" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 \"0x%x,\" \"\\n\"' -v output.aac\n return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);\n } else if (channelCount === 3) {\n // ffmpeg -y -f lavfi -i \"aevalsrc=0|0|0:d=0.05\" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 \"0x%x,\" \"\\n\"' -v output.aac\n return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);\n }\n\n break;\n }\n\n return undefined;\n };\n\n return AAC;\n }();\n /* harmony default export */\n\n\n __webpack_exports__[\"default\"] = AAC;\n /***/\n },\n\n /***/\n \"./src/remux/mp4-generator.ts\":\n /*!************************************!*\\\n !*** ./src/remux/mp4-generator.ts ***!\n \\************************************/\n\n /*! exports provided: default */\n\n /***/\n function srcRemuxMp4GeneratorTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /**\n * Generate MP4 Box\n */\n\n\n var UINT32_MAX = Math.pow(2, 32) - 1;\n\n var MP4 = /*#__PURE__*/function () {\n function MP4() {}\n\n MP4.init = function init() {\n MP4.types = {\n avc1: [],\n // codingname\n avcC: [],\n btrt: [],\n dinf: [],\n dref: [],\n esds: [],\n ftyp: [],\n hdlr: [],\n mdat: [],\n mdhd: [],\n mdia: [],\n mfhd: [],\n minf: [],\n moof: [],\n moov: [],\n mp4a: [],\n '.mp3': [],\n mvex: [],\n mvhd: [],\n pasp: [],\n sdtp: [],\n stbl: [],\n stco: [],\n stsc: [],\n stsd: [],\n stsz: [],\n stts: [],\n tfdt: [],\n tfhd: [],\n traf: [],\n trak: [],\n trun: [],\n trex: [],\n tkhd: [],\n vmhd: [],\n smhd: []\n };\n var i;\n\n for (i in MP4.types) {\n if (MP4.types.hasOwnProperty(i)) {\n MP4.types[i] = [i.charCodeAt(0), i.charCodeAt(1), i.charCodeAt(2), i.charCodeAt(3)];\n }\n }\n\n var videoHdlr = new Uint8Array([0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0x76, 0x69, 0x64, 0x65, // handler_type: 'vide'\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x56, 0x69, 0x64, 0x65, 0x6f, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'VideoHandler'\n ]);\n var audioHdlr = new Uint8Array([0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0x73, 0x6f, 0x75, 0x6e, // handler_type: 'soun'\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'SoundHandler'\n ]);\n MP4.HDLR_TYPES = {\n video: videoHdlr,\n audio: audioHdlr\n };\n var dref = new Uint8Array([0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x01, // entry_count\n 0x00, 0x00, 0x00, 0x0c, // entry_size\n 0x75, 0x72, 0x6c, 0x20, // 'url' type\n 0x00, // version 0\n 0x00, 0x00, 0x01 // entry_flags\n ]);\n var stco = new Uint8Array([0x00, // version\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00 // entry_count\n ]);\n MP4.STTS = MP4.STSC = MP4.STCO = stco;\n MP4.STSZ = new Uint8Array([0x00, // version\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, // sample_size\n 0x00, 0x00, 0x00, 0x00 // sample_count\n ]);\n MP4.VMHD = new Uint8Array([0x00, // version\n 0x00, 0x00, 0x01, // flags\n 0x00, 0x00, // graphicsmode\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // opcolor\n ]);\n MP4.SMHD = new Uint8Array([0x00, // version\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, // balance\n 0x00, 0x00 // reserved\n ]);\n MP4.STSD = new Uint8Array([0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x01]); // entry_count\n\n var majorBrand = new Uint8Array([105, 115, 111, 109]); // isom\n\n var avc1Brand = new Uint8Array([97, 118, 99, 49]); // avc1\n\n var minorVersion = new Uint8Array([0, 0, 0, 1]);\n MP4.FTYP = MP4.box(MP4.types.ftyp, majorBrand, minorVersion, majorBrand, avc1Brand);\n MP4.DINF = MP4.box(MP4.types.dinf, MP4.box(MP4.types.dref, dref));\n };\n\n MP4.box = function box(type) {\n var size = 8;\n\n for (var _len = arguments.length, payload = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n payload[_key - 1] = arguments[_key];\n }\n\n var i = payload.length;\n var len = i; // calculate the total size we need to allocate\n\n while (i--) {\n size += payload[i].byteLength;\n }\n\n var result = new Uint8Array(size);\n result[0] = size >> 24 & 0xff;\n result[1] = size >> 16 & 0xff;\n result[2] = size >> 8 & 0xff;\n result[3] = size & 0xff;\n result.set(type, 4); // copy the payload into the result\n\n for (i = 0, size = 8; i < len; i++) {\n // copy payload[i] array @ offset size\n result.set(payload[i], size);\n size += payload[i].byteLength;\n }\n\n return result;\n };\n\n MP4.hdlr = function hdlr(type) {\n return MP4.box(MP4.types.hdlr, MP4.HDLR_TYPES[type]);\n };\n\n MP4.mdat = function mdat(data) {\n return MP4.box(MP4.types.mdat, data);\n };\n\n MP4.mdhd = function mdhd(timescale, duration) {\n duration *= timescale;\n var upperWordDuration = Math.floor(duration / (UINT32_MAX + 1));\n var lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1));\n return MP4.box(MP4.types.mdhd, new Uint8Array([0x01, // version 1\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, // creation_time\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // modification_time\n timescale >> 24 & 0xff, timescale >> 16 & 0xff, timescale >> 8 & 0xff, timescale & 0xff, // timescale\n upperWordDuration >> 24, upperWordDuration >> 16 & 0xff, upperWordDuration >> 8 & 0xff, upperWordDuration & 0xff, lowerWordDuration >> 24, lowerWordDuration >> 16 & 0xff, lowerWordDuration >> 8 & 0xff, lowerWordDuration & 0xff, 0x55, 0xc4, // 'und' language (undetermined)\n 0x00, 0x00]));\n };\n\n MP4.mdia = function mdia(track) {\n return MP4.box(MP4.types.mdia, MP4.mdhd(track.timescale, track.duration), MP4.hdlr(track.type), MP4.minf(track));\n };\n\n MP4.mfhd = function mfhd(sequenceNumber) {\n return MP4.box(MP4.types.mfhd, new Uint8Array([0x00, 0x00, 0x00, 0x00, // flags\n sequenceNumber >> 24, sequenceNumber >> 16 & 0xff, sequenceNumber >> 8 & 0xff, sequenceNumber & 0xff // sequence_number\n ]));\n };\n\n MP4.minf = function minf(track) {\n if (track.type === 'audio') {\n return MP4.box(MP4.types.minf, MP4.box(MP4.types.smhd, MP4.SMHD), MP4.DINF, MP4.stbl(track));\n } else {\n return MP4.box(MP4.types.minf, MP4.box(MP4.types.vmhd, MP4.VMHD), MP4.DINF, MP4.stbl(track));\n }\n };\n\n MP4.moof = function moof(sn, baseMediaDecodeTime, track) {\n return MP4.box(MP4.types.moof, MP4.mfhd(sn), MP4.traf(track, baseMediaDecodeTime));\n }\n /**\n * @param tracks... (optional) {array} the tracks associated with this movie\n */\n ;\n\n MP4.moov = function moov(tracks) {\n var i = tracks.length;\n var boxes = [];\n\n while (i--) {\n boxes[i] = MP4.trak(tracks[i]);\n }\n\n return MP4.box.apply(null, [MP4.types.moov, MP4.mvhd(tracks[0].timescale, tracks[0].duration)].concat(boxes).concat(MP4.mvex(tracks)));\n };\n\n MP4.mvex = function mvex(tracks) {\n var i = tracks.length;\n var boxes = [];\n\n while (i--) {\n boxes[i] = MP4.trex(tracks[i]);\n }\n\n return MP4.box.apply(null, [MP4.types.mvex].concat(boxes));\n };\n\n MP4.mvhd = function mvhd(timescale, duration) {\n duration *= timescale;\n var upperWordDuration = Math.floor(duration / (UINT32_MAX + 1));\n var lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1));\n var bytes = new Uint8Array([0x01, // version 1\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, // creation_time\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // modification_time\n timescale >> 24 & 0xff, timescale >> 16 & 0xff, timescale >> 8 & 0xff, timescale & 0xff, // timescale\n upperWordDuration >> 24, upperWordDuration >> 16 & 0xff, upperWordDuration >> 8 & 0xff, upperWordDuration & 0xff, lowerWordDuration >> 24, lowerWordDuration >> 16 & 0xff, lowerWordDuration >> 8 & 0xff, lowerWordDuration & 0xff, 0x00, 0x01, 0x00, 0x00, // 1.0 rate\n 0x01, 0x00, // 1.0 volume\n 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // transformation: unity matrix\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0xff, 0xff, 0xff, 0xff // next_track_ID\n ]);\n return MP4.box(MP4.types.mvhd, bytes);\n };\n\n MP4.sdtp = function sdtp(track) {\n var samples = track.samples || [];\n var bytes = new Uint8Array(4 + samples.length);\n var i;\n var flags; // leave the full box header (4 bytes) all zero\n // write the sample table\n\n for (i = 0; i < samples.length; i++) {\n flags = samples[i].flags;\n bytes[i + 4] = flags.dependsOn << 4 | flags.isDependedOn << 2 | flags.hasRedundancy;\n }\n\n return MP4.box(MP4.types.sdtp, bytes);\n };\n\n MP4.stbl = function stbl(track) {\n return MP4.box(MP4.types.stbl, MP4.stsd(track), MP4.box(MP4.types.stts, MP4.STTS), MP4.box(MP4.types.stsc, MP4.STSC), MP4.box(MP4.types.stsz, MP4.STSZ), MP4.box(MP4.types.stco, MP4.STCO));\n };\n\n MP4.avc1 = function avc1(track) {\n var sps = [];\n var pps = [];\n var i;\n var data;\n var len; // assemble the SPSs\n\n for (i = 0; i < track.sps.length; i++) {\n data = track.sps[i];\n len = data.byteLength;\n sps.push(len >>> 8 & 0xff);\n sps.push(len & 0xff); // SPS\n\n sps = sps.concat(Array.prototype.slice.call(data));\n } // assemble the PPSs\n\n\n for (i = 0; i < track.pps.length; i++) {\n data = track.pps[i];\n len = data.byteLength;\n pps.push(len >>> 8 & 0xff);\n pps.push(len & 0xff);\n pps = pps.concat(Array.prototype.slice.call(data));\n }\n\n var avcc = MP4.box(MP4.types.avcC, new Uint8Array([0x01, // version\n sps[3], // profile\n sps[4], // profile compat\n sps[5], // level\n 0xfc | 3, // lengthSizeMinusOne, hard-coded to 4 bytes\n 0xe0 | track.sps.length // 3bit reserved (111) + numOfSequenceParameterSets\n ].concat(sps).concat([track.pps.length // numOfPictureParameterSets\n ]).concat(pps))); // \"PPS\"\n\n var width = track.width;\n var height = track.height;\n var hSpacing = track.pixelRatio[0];\n var vSpacing = track.pixelRatio[1];\n return MP4.box(MP4.types.avc1, new Uint8Array([0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, // data_reference_index\n 0x00, 0x00, // pre_defined\n 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // pre_defined\n width >> 8 & 0xff, width & 0xff, // width\n height >> 8 & 0xff, height & 0xff, // height\n 0x00, 0x48, 0x00, 0x00, // horizresolution\n 0x00, 0x48, 0x00, 0x00, // vertresolution\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, // frame_count\n 0x12, 0x64, 0x61, 0x69, 0x6c, // dailymotion/hls.js\n 0x79, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x68, 0x6c, 0x73, 0x2e, 0x6a, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // compressorname\n 0x00, 0x18, // depth = 24\n 0x11, 0x11]), // pre_defined = -1\n avcc, MP4.box(MP4.types.btrt, new Uint8Array([0x00, 0x1c, 0x9c, 0x80, // bufferSizeDB\n 0x00, 0x2d, 0xc6, 0xc0, // maxBitrate\n 0x00, 0x2d, 0xc6, 0xc0])), // avgBitrate\n MP4.box(MP4.types.pasp, new Uint8Array([hSpacing >> 24, // hSpacing\n hSpacing >> 16 & 0xff, hSpacing >> 8 & 0xff, hSpacing & 0xff, vSpacing >> 24, // vSpacing\n vSpacing >> 16 & 0xff, vSpacing >> 8 & 0xff, vSpacing & 0xff])));\n };\n\n MP4.esds = function esds(track) {\n var configlen = track.config.length;\n return new Uint8Array([0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x03, // descriptor_type\n 0x17 + configlen, // length\n 0x00, 0x01, // es_id\n 0x00, // stream_priority\n 0x04, // descriptor_type\n 0x0f + configlen, // length\n 0x40, // codec : mpeg4_audio\n 0x15, // stream_type\n 0x00, 0x00, 0x00, // buffer_size\n 0x00, 0x00, 0x00, 0x00, // maxBitrate\n 0x00, 0x00, 0x00, 0x00, // avgBitrate\n 0x05 // descriptor_type\n ].concat([configlen]).concat(track.config).concat([0x06, 0x01, 0x02])); // GASpecificConfig)); // length + audio config descriptor\n };\n\n MP4.mp4a = function mp4a(track) {\n var samplerate = track.samplerate;\n return MP4.box(MP4.types.mp4a, new Uint8Array([0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, // data_reference_index\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, track.channelCount, // channelcount\n 0x00, 0x10, // sampleSize:16bits\n 0x00, 0x00, 0x00, 0x00, // reserved2\n samplerate >> 8 & 0xff, samplerate & 0xff, //\n 0x00, 0x00]), MP4.box(MP4.types.esds, MP4.esds(track)));\n };\n\n MP4.mp3 = function mp3(track) {\n var samplerate = track.samplerate;\n return MP4.box(MP4.types['.mp3'], new Uint8Array([0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, // data_reference_index\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, track.channelCount, // channelcount\n 0x00, 0x10, // sampleSize:16bits\n 0x00, 0x00, 0x00, 0x00, // reserved2\n samplerate >> 8 & 0xff, samplerate & 0xff, //\n 0x00, 0x00]));\n };\n\n MP4.stsd = function stsd(track) {\n if (track.type === 'audio') {\n if (!track.isAAC && track.codec === 'mp3') {\n return MP4.box(MP4.types.stsd, MP4.STSD, MP4.mp3(track));\n }\n\n return MP4.box(MP4.types.stsd, MP4.STSD, MP4.mp4a(track));\n } else {\n return MP4.box(MP4.types.stsd, MP4.STSD, MP4.avc1(track));\n }\n };\n\n MP4.tkhd = function tkhd(track) {\n var id = track.id;\n var duration = track.duration * track.timescale;\n var width = track.width;\n var height = track.height;\n var upperWordDuration = Math.floor(duration / (UINT32_MAX + 1));\n var lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1));\n return MP4.box(MP4.types.tkhd, new Uint8Array([0x01, // version 1\n 0x00, 0x00, 0x07, // flags\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, // creation_time\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // modification_time\n id >> 24 & 0xff, id >> 16 & 0xff, id >> 8 & 0xff, id & 0xff, // track_ID\n 0x00, 0x00, 0x00, 0x00, // reserved\n upperWordDuration >> 24, upperWordDuration >> 16 & 0xff, upperWordDuration >> 8 & 0xff, upperWordDuration & 0xff, lowerWordDuration >> 24, lowerWordDuration >> 16 & 0xff, lowerWordDuration >> 8 & 0xff, lowerWordDuration & 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, // layer\n 0x00, 0x00, // alternate_group\n 0x00, 0x00, // non-audio track volume\n 0x00, 0x00, // reserved\n 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // transformation: unity matrix\n width >> 8 & 0xff, width & 0xff, 0x00, 0x00, // width\n height >> 8 & 0xff, height & 0xff, 0x00, 0x00 // height\n ]));\n };\n\n MP4.traf = function traf(track, baseMediaDecodeTime) {\n var sampleDependencyTable = MP4.sdtp(track);\n var id = track.id;\n var upperWordBaseMediaDecodeTime = Math.floor(baseMediaDecodeTime / (UINT32_MAX + 1));\n var lowerWordBaseMediaDecodeTime = Math.floor(baseMediaDecodeTime % (UINT32_MAX + 1));\n return MP4.box(MP4.types.traf, MP4.box(MP4.types.tfhd, new Uint8Array([0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n id >> 24, id >> 16 & 0xff, id >> 8 & 0xff, id & 0xff // track_ID\n ])), MP4.box(MP4.types.tfdt, new Uint8Array([0x01, // version 1\n 0x00, 0x00, 0x00, // flags\n upperWordBaseMediaDecodeTime >> 24, upperWordBaseMediaDecodeTime >> 16 & 0xff, upperWordBaseMediaDecodeTime >> 8 & 0xff, upperWordBaseMediaDecodeTime & 0xff, lowerWordBaseMediaDecodeTime >> 24, lowerWordBaseMediaDecodeTime >> 16 & 0xff, lowerWordBaseMediaDecodeTime >> 8 & 0xff, lowerWordBaseMediaDecodeTime & 0xff])), MP4.trun(track, sampleDependencyTable.length + 16 + // tfhd\n 20 + // tfdt\n 8 + // traf header\n 16 + // mfhd\n 8 + // moof header\n 8), // mdat header\n sampleDependencyTable);\n }\n /**\n * Generate a track box.\n * @param track {object} a track definition\n * @return {Uint8Array} the track box\n */\n ;\n\n MP4.trak = function trak(track) {\n track.duration = track.duration || 0xffffffff;\n return MP4.box(MP4.types.trak, MP4.tkhd(track), MP4.mdia(track));\n };\n\n MP4.trex = function trex(track) {\n var id = track.id;\n return MP4.box(MP4.types.trex, new Uint8Array([0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n id >> 24, id >> 16 & 0xff, id >> 8 & 0xff, id & 0xff, // track_ID\n 0x00, 0x00, 0x00, 0x01, // default_sample_description_index\n 0x00, 0x00, 0x00, 0x00, // default_sample_duration\n 0x00, 0x00, 0x00, 0x00, // default_sample_size\n 0x00, 0x01, 0x00, 0x01 // default_sample_flags\n ]));\n };\n\n MP4.trun = function trun(track, offset) {\n var samples = track.samples || [];\n var len = samples.length;\n var arraylen = 12 + 16 * len;\n var array = new Uint8Array(arraylen);\n var i;\n var sample;\n var duration;\n var size;\n var flags;\n var cts;\n offset += 8 + arraylen;\n array.set([0x00, // version 0\n 0x00, 0x0f, 0x01, // flags\n len >>> 24 & 0xff, len >>> 16 & 0xff, len >>> 8 & 0xff, len & 0xff, // sample_count\n offset >>> 24 & 0xff, offset >>> 16 & 0xff, offset >>> 8 & 0xff, offset & 0xff // data_offset\n ], 0);\n\n for (i = 0; i < len; i++) {\n sample = samples[i];\n duration = sample.duration;\n size = sample.size;\n flags = sample.flags;\n cts = sample.cts;\n array.set([duration >>> 24 & 0xff, duration >>> 16 & 0xff, duration >>> 8 & 0xff, duration & 0xff, // sample_duration\n size >>> 24 & 0xff, size >>> 16 & 0xff, size >>> 8 & 0xff, size & 0xff, // sample_size\n flags.isLeading << 2 | flags.dependsOn, flags.isDependedOn << 6 | flags.hasRedundancy << 4 | flags.paddingValue << 1 | flags.isNonSync, flags.degradPrio & 0xf0 << 8, flags.degradPrio & 0x0f, // sample_flags\n cts >>> 24 & 0xff, cts >>> 16 & 0xff, cts >>> 8 & 0xff, cts & 0xff // sample_composition_time_offset\n ], 12 + 16 * i);\n }\n\n return MP4.box(MP4.types.trun, array);\n };\n\n MP4.initSegment = function initSegment(tracks) {\n if (!MP4.types) {\n MP4.init();\n }\n\n var movie = MP4.moov(tracks);\n var result = new Uint8Array(MP4.FTYP.byteLength + movie.byteLength);\n result.set(MP4.FTYP);\n result.set(movie, MP4.FTYP.byteLength);\n return result;\n };\n\n return MP4;\n }();\n\n MP4.types = void 0;\n MP4.HDLR_TYPES = void 0;\n MP4.STTS = void 0;\n MP4.STSC = void 0;\n MP4.STCO = void 0;\n MP4.STSZ = void 0;\n MP4.VMHD = void 0;\n MP4.SMHD = void 0;\n MP4.STSD = void 0;\n MP4.FTYP = void 0;\n MP4.DINF = void 0;\n /* harmony default export */\n\n __webpack_exports__[\"default\"] = MP4;\n /***/\n },\n\n /***/\n \"./src/remux/mp4-remuxer.ts\":\n /*!**********************************!*\\\n !*** ./src/remux/mp4-remuxer.ts ***!\n \\**********************************/\n\n /*! exports provided: default, normalizePts */\n\n /***/\n function srcRemuxMp4RemuxerTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"default\", function () {\n return MP4Remuxer;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"normalizePts\", function () {\n return normalizePts;\n });\n /* harmony import */\n\n\n var _home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./src/polyfills/number */\n \"./src/polyfills/number.ts\");\n /* harmony import */\n\n\n var _aac_helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ./aac-helper */\n \"./src/remux/aac-helper.ts\");\n /* harmony import */\n\n\n var _mp4_generator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ./mp4-generator */\n \"./src/remux/mp4-generator.ts\");\n /* harmony import */\n\n\n var _events__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\n /*! ../events */\n \"./src/events.ts\");\n /* harmony import */\n\n\n var _errors__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\n /*! ../errors */\n \"./src/errors.ts\");\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(\n /*! ../utils/logger */\n \"./src/utils/logger.ts\");\n /* harmony import */\n\n\n var _types_loader__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(\n /*! ../types/loader */\n \"./src/types/loader.ts\");\n /* harmony import */\n\n\n var _utils_timescale_conversion__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(\n /*! ../utils/timescale-conversion */\n \"./src/utils/timescale-conversion.ts\");\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n var MAX_SILENT_FRAME_DURATION = 10 * 1000; // 10 seconds\n\n var AAC_SAMPLES_PER_FRAME = 1024;\n var MPEG_AUDIO_SAMPLE_PER_FRAME = 1152;\n var chromeVersion = null;\n var safariWebkitVersion = null;\n var requiresPositiveDts = false;\n\n var MP4Remuxer = /*#__PURE__*/function () {\n function MP4Remuxer(observer, config, typeSupported, vendor) {\n if (vendor === void 0) {\n vendor = '';\n }\n\n this.observer = void 0;\n this.config = void 0;\n this.typeSupported = void 0;\n this.ISGenerated = false;\n this._initPTS = void 0;\n this._initDTS = void 0;\n this.nextAvcDts = null;\n this.nextAudioPts = null;\n this.isAudioContiguous = false;\n this.isVideoContiguous = false;\n this.observer = observer;\n this.config = config;\n this.typeSupported = typeSupported;\n this.ISGenerated = false;\n\n if (chromeVersion === null) {\n var userAgent = navigator.userAgent || '';\n var result = userAgent.match(/Chrome\\/(\\d+)/i);\n chromeVersion = result ? parseInt(result[1]) : 0;\n }\n\n if (safariWebkitVersion === null) {\n var _result = navigator.userAgent.match(/Safari\\/(\\d+)/i);\n\n safariWebkitVersion = _result ? parseInt(_result[1]) : 0;\n }\n\n requiresPositiveDts = !!chromeVersion && chromeVersion < 75 || !!safariWebkitVersion && safariWebkitVersion < 600;\n }\n\n var _proto = MP4Remuxer.prototype;\n\n _proto.destroy = function destroy() {};\n\n _proto.resetTimeStamp = function resetTimeStamp(defaultTimeStamp) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].log('[mp4-remuxer]: initPTS & initDTS reset');\n\n this._initPTS = this._initDTS = defaultTimeStamp;\n };\n\n _proto.resetNextTimestamp = function resetNextTimestamp() {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].log('[mp4-remuxer]: reset next timestamp');\n\n this.isVideoContiguous = false;\n this.isAudioContiguous = false;\n };\n\n _proto.resetInitSegment = function resetInitSegment() {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].log('[mp4-remuxer]: ISGenerated flag reset');\n\n this.ISGenerated = false;\n };\n\n _proto.getVideoStartPts = function getVideoStartPts(videoSamples) {\n var rolloverDetected = false;\n var startPTS = videoSamples.reduce(function (minPTS, sample) {\n var delta = sample.pts - minPTS;\n\n if (delta < -4294967296) {\n // 2^32, see PTSNormalize for reasoning, but we're hitting a rollover here, and we don't want that to impact the timeOffset calculation\n rolloverDetected = true;\n return normalizePts(minPTS, sample.pts);\n } else if (delta > 0) {\n return minPTS;\n } else {\n return sample.pts;\n }\n }, videoSamples[0].pts);\n\n if (rolloverDetected) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].debug('PTS rollover detected');\n }\n\n return startPTS;\n };\n\n _proto.remux = function remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, accurateTimeOffset, flush, playlistType) {\n var video;\n var audio;\n var initSegment;\n var text;\n var id3;\n var independent;\n var audioTimeOffset = timeOffset;\n var videoTimeOffset = timeOffset; // If we're remuxing audio and video progressively, wait until we've received enough samples for each track before proceeding.\n // This is done to synchronize the audio and video streams. We know if the current segment will have samples if the \"pid\"\n // parameter is greater than -1. The pid is set when the PMT is parsed, which contains the tracks list.\n // However, if the initSegment has already been generated, or we've reached the end of a segment (flush),\n // then we can remux one track without waiting for the other.\n\n var hasAudio = audioTrack.pid > -1;\n var hasVideo = videoTrack.pid > -1;\n var length = videoTrack.samples.length;\n var enoughAudioSamples = audioTrack.samples.length > 0;\n var enoughVideoSamples = length > 1;\n var canRemuxAvc = (!hasAudio || enoughAudioSamples) && (!hasVideo || enoughVideoSamples) || this.ISGenerated || flush;\n\n if (canRemuxAvc) {\n if (!this.ISGenerated) {\n initSegment = this.generateIS(audioTrack, videoTrack, timeOffset);\n }\n\n var isVideoContiguous = this.isVideoContiguous;\n var firstKeyFrameIndex = -1;\n\n if (enoughVideoSamples) {\n firstKeyFrameIndex = findKeyframeIndex(videoTrack.samples);\n\n if (!isVideoContiguous && this.config.forceKeyFrameOnDiscontinuity) {\n independent = true;\n\n if (firstKeyFrameIndex > 0) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].warn(\"[mp4-remuxer]: Dropped \" + firstKeyFrameIndex + \" out of \" + length + \" video samples due to a missing keyframe\");\n\n var startPTS = this.getVideoStartPts(videoTrack.samples);\n videoTrack.samples = videoTrack.samples.slice(firstKeyFrameIndex);\n videoTrack.dropped += firstKeyFrameIndex;\n videoTimeOffset += (videoTrack.samples[0].pts - startPTS) / (videoTrack.timescale || 90000);\n } else if (firstKeyFrameIndex === -1) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].warn(\"[mp4-remuxer]: No keyframe found out of \" + length + \" video samples\");\n\n independent = false;\n }\n }\n }\n\n if (this.ISGenerated) {\n if (enoughAudioSamples && enoughVideoSamples) {\n // timeOffset is expected to be the offset of the first timestamp of this fragment (first DTS)\n // if first audio DTS is not aligned with first video DTS then we need to take that into account\n // when providing timeOffset to remuxAudio / remuxVideo. if we don't do that, there might be a permanent / small\n // drift between audio and video streams\n var _startPTS = this.getVideoStartPts(videoTrack.samples);\n\n var tsDelta = normalizePts(audioTrack.samples[0].pts, _startPTS) - _startPTS;\n\n var audiovideoTimestampDelta = tsDelta / videoTrack.inputTimeScale;\n audioTimeOffset += Math.max(0, audiovideoTimestampDelta);\n videoTimeOffset += Math.max(0, -audiovideoTimestampDelta);\n } // Purposefully remuxing audio before video, so that remuxVideo can use nextAudioPts, which is calculated in remuxAudio.\n\n\n if (enoughAudioSamples) {\n // if initSegment was generated without audio samples, regenerate it again\n if (!audioTrack.samplerate) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].warn('[mp4-remuxer]: regenerate InitSegment as audio detected');\n\n initSegment = this.generateIS(audioTrack, videoTrack, timeOffset);\n }\n\n audio = this.remuxAudio(audioTrack, audioTimeOffset, this.isAudioContiguous, accurateTimeOffset, hasVideo || enoughVideoSamples || playlistType === _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].AUDIO ? videoTimeOffset : undefined);\n\n if (enoughVideoSamples) {\n var audioTrackLength = audio ? audio.endPTS - audio.startPTS : 0; // if initSegment was generated without video samples, regenerate it again\n\n if (!videoTrack.inputTimeScale) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].warn('[mp4-remuxer]: regenerate InitSegment as video detected');\n\n initSegment = this.generateIS(audioTrack, videoTrack, timeOffset);\n }\n\n video = this.remuxVideo(videoTrack, videoTimeOffset, isVideoContiguous, audioTrackLength);\n }\n } else if (enoughVideoSamples) {\n video = this.remuxVideo(videoTrack, videoTimeOffset, isVideoContiguous, 0);\n }\n\n if (video) {\n video.firstKeyFrame = firstKeyFrameIndex;\n video.independent = firstKeyFrameIndex !== -1;\n }\n }\n } // Allow ID3 and text to remux, even if more audio/video samples are required\n\n\n if (this.ISGenerated) {\n if (id3Track.samples.length) {\n id3 = this.remuxID3(id3Track, timeOffset);\n }\n\n if (textTrack.samples.length) {\n text = this.remuxText(textTrack, timeOffset);\n }\n }\n\n return {\n audio: audio,\n video: video,\n initSegment: initSegment,\n independent: independent,\n text: text,\n id3: id3\n };\n };\n\n _proto.generateIS = function generateIS(audioTrack, videoTrack, timeOffset) {\n var audioSamples = audioTrack.samples;\n var videoSamples = videoTrack.samples;\n var typeSupported = this.typeSupported;\n var tracks = {};\n var computePTSDTS = !Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(this._initPTS);\n var container = 'audio/mp4';\n var initPTS;\n var initDTS;\n var timescale;\n\n if (computePTSDTS) {\n initPTS = initDTS = Infinity;\n }\n\n if (audioTrack.config && audioSamples.length) {\n // let's use audio sampling rate as MP4 time scale.\n // rationale is that there is a integer nb of audio frames per audio sample (1024 for AAC)\n // using audio sampling rate here helps having an integer MP4 frame duration\n // this avoids potential rounding issue and AV sync issue\n audioTrack.timescale = audioTrack.samplerate;\n\n if (!audioTrack.isAAC) {\n if (typeSupported.mpeg) {\n // Chrome and Safari\n container = 'audio/mpeg';\n audioTrack.codec = '';\n } else if (typeSupported.mp3) {\n // Firefox\n audioTrack.codec = 'mp3';\n }\n }\n\n tracks.audio = {\n id: 'audio',\n container: container,\n codec: audioTrack.codec,\n initSegment: !audioTrack.isAAC && typeSupported.mpeg ? new Uint8Array(0) : _mp4_generator__WEBPACK_IMPORTED_MODULE_2__[\"default\"].initSegment([audioTrack]),\n metadata: {\n channelCount: audioTrack.channelCount\n }\n };\n\n if (computePTSDTS) {\n timescale = audioTrack.inputTimeScale; // remember first PTS of this demuxing context. for audio, PTS = DTS\n\n initPTS = initDTS = audioSamples[0].pts - Math.round(timescale * timeOffset);\n }\n }\n\n if (videoTrack.sps && videoTrack.pps && videoSamples.length) {\n // let's use input time scale as MP4 video timescale\n // we use input time scale straight away to avoid rounding issues on frame duration / cts computation\n videoTrack.timescale = videoTrack.inputTimeScale;\n tracks.video = {\n id: 'main',\n container: 'video/mp4',\n codec: videoTrack.codec,\n initSegment: _mp4_generator__WEBPACK_IMPORTED_MODULE_2__[\"default\"].initSegment([videoTrack]),\n metadata: {\n width: videoTrack.width,\n height: videoTrack.height\n }\n };\n\n if (computePTSDTS) {\n timescale = videoTrack.inputTimeScale;\n var startPTS = this.getVideoStartPts(videoSamples);\n var startOffset = Math.round(timescale * timeOffset);\n initDTS = Math.min(initDTS, normalizePts(videoSamples[0].dts, startPTS) - startOffset);\n initPTS = Math.min(initPTS, startPTS - startOffset);\n }\n }\n\n if (Object.keys(tracks).length) {\n this.ISGenerated = true;\n\n if (computePTSDTS) {\n this._initPTS = initPTS;\n this._initDTS = initDTS;\n }\n\n return {\n tracks: tracks,\n initPTS: initPTS,\n timescale: timescale\n };\n }\n };\n\n _proto.remuxVideo = function remuxVideo(track, timeOffset, contiguous, audioTrackLength) {\n var timeScale = track.inputTimeScale;\n var inputSamples = track.samples;\n var outputSamples = [];\n var nbSamples = inputSamples.length;\n var initPTS = this._initPTS;\n var nextAvcDts = this.nextAvcDts;\n var offset = 8;\n var mp4SampleDuration;\n var firstDTS;\n var lastDTS;\n var minPTS = Number.POSITIVE_INFINITY;\n var maxPTS = Number.NEGATIVE_INFINITY;\n var ptsDtsShift = 0;\n var sortSamples = false; // if parsed fragment is contiguous with last one, let's use last DTS value as reference\n\n if (!contiguous || nextAvcDts === null) {\n var pts = timeOffset * timeScale;\n var cts = inputSamples[0].pts - normalizePts(inputSamples[0].dts, inputSamples[0].pts); // if not contiguous, let's use target timeOffset\n\n nextAvcDts = pts - cts;\n } // PTS is coded on 33bits, and can loop from -2^32 to 2^32\n // PTSNormalize will make PTS/DTS value monotonic, we use last known DTS value as reference value\n\n\n for (var i = 0; i < nbSamples; i++) {\n var sample = inputSamples[i];\n sample.pts = normalizePts(sample.pts - initPTS, nextAvcDts);\n sample.dts = normalizePts(sample.dts - initPTS, nextAvcDts);\n\n if (sample.dts > sample.pts) {\n var PTS_DTS_SHIFT_TOLERANCE_90KHZ = 90000 * 0.2;\n ptsDtsShift = Math.max(Math.min(ptsDtsShift, sample.pts - sample.dts), -1 * PTS_DTS_SHIFT_TOLERANCE_90KHZ);\n }\n\n if (sample.dts < inputSamples[i > 0 ? i - 1 : i].dts) {\n sortSamples = true;\n }\n } // sort video samples by DTS then PTS then demux id order\n\n\n if (sortSamples) {\n inputSamples.sort(function (a, b) {\n var deltadts = a.dts - b.dts;\n var deltapts = a.pts - b.pts;\n return deltadts || deltapts;\n });\n } // Get first/last DTS\n\n\n firstDTS = inputSamples[0].dts;\n lastDTS = inputSamples[inputSamples.length - 1].dts; // on Safari let's signal the same sample duration for all samples\n // sample duration (as expected by trun MP4 boxes), should be the delta between sample DTS\n // set this constant duration as being the avg delta between consecutive DTS.\n\n var averageSampleDuration = Math.round((lastDTS - firstDTS) / (nbSamples - 1)); // handle broken streams with PTS < DTS, tolerance up 0.2 seconds\n\n if (ptsDtsShift < 0) {\n if (ptsDtsShift < averageSampleDuration * -2) {\n // Fix for \"CNN special report, with CC\" in test-streams (including Safari browser)\n // With large PTS < DTS errors such as this, we want to correct CTS while maintaining increasing DTS values\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].warn(\"PTS < DTS detected in video samples, offsetting DTS from PTS by \" + Object(_utils_timescale_conversion__WEBPACK_IMPORTED_MODULE_7__[\"toMsFromMpegTsClock\"])(-averageSampleDuration, true) + \" ms\");\n\n var lastDts = ptsDtsShift;\n\n for (var _i = 0; _i < nbSamples; _i++) {\n inputSamples[_i].dts = lastDts = Math.max(lastDts, inputSamples[_i].pts - averageSampleDuration);\n inputSamples[_i].pts = Math.max(lastDts, inputSamples[_i].pts);\n }\n } else {\n // Fix for \"Custom IV with bad PTS DTS\" in test-streams\n // With smaller PTS < DTS errors we can simply move all DTS back. This increases CTS without causing buffer gaps or decode errors in Safari\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].warn(\"PTS < DTS detected in video samples, shifting DTS by \" + Object(_utils_timescale_conversion__WEBPACK_IMPORTED_MODULE_7__[\"toMsFromMpegTsClock\"])(ptsDtsShift, true) + \" ms to overcome this issue\");\n\n for (var _i2 = 0; _i2 < nbSamples; _i2++) {\n inputSamples[_i2].dts = inputSamples[_i2].dts + ptsDtsShift;\n }\n }\n\n firstDTS = inputSamples[0].dts;\n } // if fragment are contiguous, detect hole/overlapping between fragments\n\n\n if (contiguous) {\n // check timestamp continuity across consecutive fragments (this is to remove inter-fragment gap/hole)\n var delta = firstDTS - nextAvcDts;\n var foundHole = delta > averageSampleDuration;\n var foundOverlap = delta < -1;\n\n if (foundHole || foundOverlap) {\n if (foundHole) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].warn(\"AVC: \" + Object(_utils_timescale_conversion__WEBPACK_IMPORTED_MODULE_7__[\"toMsFromMpegTsClock\"])(delta, true) + \" ms (\" + delta + \"dts) hole between fragments detected, filling it\");\n } else {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].warn(\"AVC: \" + Object(_utils_timescale_conversion__WEBPACK_IMPORTED_MODULE_7__[\"toMsFromMpegTsClock\"])(-delta, true) + \" ms (\" + delta + \"dts) overlapping between fragments detected\");\n }\n\n firstDTS = nextAvcDts;\n var firstPTS = inputSamples[0].pts - delta;\n inputSamples[0].dts = firstDTS;\n inputSamples[0].pts = firstPTS;\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].log(\"Video: First PTS/DTS adjusted: \" + Object(_utils_timescale_conversion__WEBPACK_IMPORTED_MODULE_7__[\"toMsFromMpegTsClock\"])(firstPTS, true) + \"/\" + Object(_utils_timescale_conversion__WEBPACK_IMPORTED_MODULE_7__[\"toMsFromMpegTsClock\"])(firstDTS, true) + \", delta: \" + Object(_utils_timescale_conversion__WEBPACK_IMPORTED_MODULE_7__[\"toMsFromMpegTsClock\"])(delta, true) + \" ms\");\n }\n }\n\n if (requiresPositiveDts) {\n firstDTS = Math.max(0, firstDTS);\n }\n\n var nbNalu = 0;\n var naluLen = 0;\n\n for (var _i3 = 0; _i3 < nbSamples; _i3++) {\n // compute total/avc sample length and nb of NAL units\n var _sample = inputSamples[_i3];\n var units = _sample.units;\n var nbUnits = units.length;\n var sampleLen = 0;\n\n for (var j = 0; j < nbUnits; j++) {\n sampleLen += units[j].data.length;\n }\n\n naluLen += sampleLen;\n nbNalu += nbUnits;\n _sample.length = sampleLen; // normalize PTS/DTS\n // ensure sample monotonic DTS\n\n _sample.dts = Math.max(_sample.dts, firstDTS); // ensure that computed value is greater or equal than sample DTS\n\n _sample.pts = Math.max(_sample.pts, _sample.dts, 0);\n minPTS = Math.min(_sample.pts, minPTS);\n maxPTS = Math.max(_sample.pts, maxPTS);\n }\n\n lastDTS = inputSamples[nbSamples - 1].dts;\n /* concatenate the video data and construct the mdat in place\n (need 8 more bytes to fill length and mpdat type) */\n\n var mdatSize = naluLen + 4 * nbNalu + 8;\n var mdat;\n\n try {\n mdat = new Uint8Array(mdatSize);\n } catch (err) {\n this.observer.emit(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].ERROR, _events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_4__[\"ErrorTypes\"].MUX_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_4__[\"ErrorDetails\"].REMUX_ALLOC_ERROR,\n fatal: false,\n bytes: mdatSize,\n reason: \"fail allocating video mdat \" + mdatSize\n });\n return;\n }\n\n var view = new DataView(mdat.buffer);\n view.setUint32(0, mdatSize);\n mdat.set(_mp4_generator__WEBPACK_IMPORTED_MODULE_2__[\"default\"].types.mdat, 4);\n\n for (var _i4 = 0; _i4 < nbSamples; _i4++) {\n var avcSample = inputSamples[_i4];\n var avcSampleUnits = avcSample.units;\n var mp4SampleLength = 0; // convert NALU bitstream to MP4 format (prepend NALU with size field)\n\n for (var _j = 0, _nbUnits = avcSampleUnits.length; _j < _nbUnits; _j++) {\n var unit = avcSampleUnits[_j];\n var unitData = unit.data;\n var unitDataLen = unit.data.byteLength;\n view.setUint32(offset, unitDataLen);\n offset += 4;\n mdat.set(unitData, offset);\n offset += unitDataLen;\n mp4SampleLength += 4 + unitDataLen;\n } // expected sample duration is the Decoding Timestamp diff of consecutive samples\n\n\n if (_i4 < nbSamples - 1) {\n mp4SampleDuration = inputSamples[_i4 + 1].dts - avcSample.dts;\n } else {\n var config = this.config;\n var lastFrameDuration = avcSample.dts - inputSamples[_i4 > 0 ? _i4 - 1 : _i4].dts;\n\n if (config.stretchShortVideoTrack && this.nextAudioPts !== null) {\n // In some cases, a segment's audio track duration may exceed the video track duration.\n // Since we've already remuxed audio, and we know how long the audio track is, we look to\n // see if the delta to the next segment is longer than maxBufferHole.\n // If so, playback would potentially get stuck, so we artificially inflate\n // the duration of the last frame to minimize any potential gap between segments.\n var gapTolerance = Math.floor(config.maxBufferHole * timeScale);\n var deltaToFrameEnd = (audioTrackLength ? minPTS + audioTrackLength * timeScale : this.nextAudioPts) - avcSample.pts;\n\n if (deltaToFrameEnd > gapTolerance) {\n // We subtract lastFrameDuration from deltaToFrameEnd to try to prevent any video\n // frame overlap. maxBufferHole should be >> lastFrameDuration anyway.\n mp4SampleDuration = deltaToFrameEnd - lastFrameDuration;\n\n if (mp4SampleDuration < 0) {\n mp4SampleDuration = lastFrameDuration;\n }\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].log(\"[mp4-remuxer]: It is approximately \" + deltaToFrameEnd / 90 + \" ms to the next segment; using duration \" + mp4SampleDuration / 90 + \" ms for the last video frame.\");\n } else {\n mp4SampleDuration = lastFrameDuration;\n }\n } else {\n mp4SampleDuration = lastFrameDuration;\n }\n }\n\n var compositionTimeOffset = Math.round(avcSample.pts - avcSample.dts);\n outputSamples.push(new Mp4Sample(avcSample.key, mp4SampleDuration, mp4SampleLength, compositionTimeOffset));\n }\n\n if (outputSamples.length && chromeVersion && chromeVersion < 70) {\n // Chrome workaround, mark first sample as being a Random Access Point (keyframe) to avoid sourcebuffer append issue\n // https://code.google.com/p/chromium/issues/detail?id=229412\n var flags = outputSamples[0].flags;\n flags.dependsOn = 2;\n flags.isNonSync = 0;\n }\n\n console.assert(mp4SampleDuration !== undefined, 'mp4SampleDuration must be computed'); // next AVC sample DTS should be equal to last sample DTS + last sample duration (in PES timescale)\n\n this.nextAvcDts = nextAvcDts = lastDTS + mp4SampleDuration;\n this.isVideoContiguous = true;\n\n var moof = _mp4_generator__WEBPACK_IMPORTED_MODULE_2__[\"default\"].moof(track.sequenceNumber++, firstDTS, _extends({}, track, {\n samples: outputSamples\n }));\n\n var type = 'video';\n var data = {\n data1: moof,\n data2: mdat,\n startPTS: minPTS / timeScale,\n endPTS: (maxPTS + mp4SampleDuration) / timeScale,\n startDTS: firstDTS / timeScale,\n endDTS: nextAvcDts / timeScale,\n type: type,\n hasAudio: false,\n hasVideo: true,\n nb: outputSamples.length,\n dropped: track.dropped\n };\n track.samples = [];\n track.dropped = 0;\n console.assert(mdat.length, 'MDAT length must not be zero');\n return data;\n };\n\n _proto.remuxAudio = function remuxAudio(track, timeOffset, contiguous, accurateTimeOffset, videoTimeOffset) {\n var inputTimeScale = track.inputTimeScale;\n var mp4timeScale = track.samplerate ? track.samplerate : inputTimeScale;\n var scaleFactor = inputTimeScale / mp4timeScale;\n var mp4SampleDuration = track.isAAC ? AAC_SAMPLES_PER_FRAME : MPEG_AUDIO_SAMPLE_PER_FRAME;\n var inputSampleDuration = mp4SampleDuration * scaleFactor;\n var initPTS = this._initPTS;\n var rawMPEG = !track.isAAC && this.typeSupported.mpeg;\n var outputSamples = [];\n var inputSamples = track.samples;\n var offset = rawMPEG ? 0 : 8;\n var nextAudioPts = this.nextAudioPts || -1; // window.audioSamples ? window.audioSamples.push(inputSamples.map(s => s.pts)) : (window.audioSamples = [inputSamples.map(s => s.pts)]);\n // for audio samples, also consider consecutive fragments as being contiguous (even if a level switch occurs),\n // for sake of clarity:\n // consecutive fragments are frags with\n // - less than 100ms gaps between new time offset (if accurate) and next expected PTS OR\n // - less than 20 audio frames distance\n // contiguous fragments are consecutive fragments from same quality level (same level, new SN = old SN + 1)\n // this helps ensuring audio continuity\n // and this also avoids audio glitches/cut when switching quality, or reporting wrong duration on first audio frame\n\n var timeOffsetMpegTS = timeOffset * inputTimeScale;\n this.isAudioContiguous = contiguous = contiguous || inputSamples.length && nextAudioPts > 0 && (accurateTimeOffset && Math.abs(timeOffsetMpegTS - nextAudioPts) < 9000 || Math.abs(normalizePts(inputSamples[0].pts - initPTS, timeOffsetMpegTS) - nextAudioPts) < 20 * inputSampleDuration); // compute normalized PTS\n\n inputSamples.forEach(function (sample) {\n sample.pts = normalizePts(sample.pts - initPTS, timeOffsetMpegTS);\n });\n\n if (!contiguous || nextAudioPts < 0) {\n // filter out sample with negative PTS that are not playable anyway\n // if we don't remove these negative samples, they will shift all audio samples forward.\n // leading to audio overlap between current / next fragment\n inputSamples = inputSamples.filter(function (sample) {\n return sample.pts >= 0;\n }); // in case all samples have negative PTS, and have been filtered out, return now\n\n if (!inputSamples.length) {\n return;\n }\n\n if (videoTimeOffset === 0) {\n // Set the start to 0 to match video so that start gaps larger than inputSampleDuration are filled with silence\n nextAudioPts = 0;\n } else if (accurateTimeOffset) {\n // When not seeking, not live, and LevelDetails.PTSKnown, use fragment start as predicted next audio PTS\n nextAudioPts = Math.max(0, timeOffsetMpegTS);\n } else {\n // if frags are not contiguous and if we cant trust time offset, let's use first sample PTS as next audio PTS\n nextAudioPts = inputSamples[0].pts;\n }\n } // If the audio track is missing samples, the frames seem to get \"left-shifted\" within the\n // resulting mp4 segment, causing sync issues and leaving gaps at the end of the audio segment.\n // In an effort to prevent this from happening, we inject frames here where there are gaps.\n // When possible, we inject a silent frame; when that's not possible, we duplicate the last\n // frame.\n\n\n if (track.isAAC) {\n var alignedWithVideo = videoTimeOffset !== undefined;\n var maxAudioFramesDrift = this.config.maxAudioFramesDrift;\n\n for (var i = 0, nextPts = nextAudioPts; i < inputSamples.length; i++) {\n // First, let's see how far off this frame is from where we expect it to be\n var sample = inputSamples[i];\n var pts = sample.pts;\n var delta = pts - nextPts;\n var duration = Math.abs(1000 * delta / inputTimeScale); // When remuxing with video, if we're overlapping by more than a duration, drop this sample to stay in sync\n\n if (delta <= -maxAudioFramesDrift * inputSampleDuration && alignedWithVideo) {\n if (i === 0) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].warn(\"Audio frame @ \" + (pts / inputTimeScale).toFixed(3) + \"s overlaps nextAudioPts by \" + Math.round(1000 * delta / inputTimeScale) + \" ms.\");\n\n this.nextAudioPts = nextAudioPts = nextPts = pts;\n }\n } // eslint-disable-line brace-style\n // Insert missing frames if:\n // 1: We're more than maxAudioFramesDrift frame away\n // 2: Not more than MAX_SILENT_FRAME_DURATION away\n // 3: currentTime (aka nextPtsNorm) is not 0\n // 4: remuxing with video (videoTimeOffset !== undefined)\n else if (delta >= maxAudioFramesDrift * inputSampleDuration && duration < MAX_SILENT_FRAME_DURATION && alignedWithVideo) {\n var missing = Math.round(delta / inputSampleDuration); // Adjust nextPts so that silent samples are aligned with media pts. This will prevent media samples from\n // later being shifted if nextPts is based on timeOffset and delta is not a multiple of inputSampleDuration.\n\n nextPts = pts - missing * inputSampleDuration;\n\n if (nextPts < 0) {\n missing--;\n nextPts += inputSampleDuration;\n }\n\n if (i === 0) {\n this.nextAudioPts = nextAudioPts = nextPts;\n }\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].warn(\"[mp4-remuxer]: Injecting \" + missing + \" audio frame @ \" + (nextPts / inputTimeScale).toFixed(3) + \"s due to \" + Math.round(1000 * delta / inputTimeScale) + \" ms gap.\");\n\n for (var j = 0; j < missing; j++) {\n var newStamp = Math.max(nextPts, 0);\n\n var fillFrame = _aac_helper__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getSilentFrame(track.manifestCodec || track.codec, track.channelCount);\n\n if (!fillFrame) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].log('[mp4-remuxer]: Unable to get silent frame for given audio codec; duplicating last frame instead.');\n\n fillFrame = sample.unit.subarray();\n }\n\n inputSamples.splice(i, 0, {\n unit: fillFrame,\n pts: newStamp\n });\n nextPts += inputSampleDuration;\n i++;\n }\n }\n\n sample.pts = nextPts;\n nextPts += inputSampleDuration;\n }\n }\n\n var firstPTS = null;\n var lastPTS = null;\n var mdat;\n var mdatSize = 0;\n var sampleLength = inputSamples.length;\n\n while (sampleLength--) {\n mdatSize += inputSamples[sampleLength].unit.byteLength;\n }\n\n for (var _j2 = 0, _nbSamples = inputSamples.length; _j2 < _nbSamples; _j2++) {\n var audioSample = inputSamples[_j2];\n var unit = audioSample.unit;\n var _pts = audioSample.pts;\n\n if (lastPTS !== null) {\n // If we have more than one sample, set the duration of the sample to the \"real\" duration; the PTS diff with\n // the previous sample\n var prevSample = outputSamples[_j2 - 1];\n prevSample.duration = Math.round((_pts - lastPTS) / scaleFactor);\n } else {\n if (contiguous && track.isAAC) {\n // set PTS/DTS to expected PTS/DTS\n _pts = nextAudioPts;\n } // remember first PTS of our audioSamples\n\n\n firstPTS = _pts;\n\n if (mdatSize > 0) {\n /* concatenate the audio data and construct the mdat in place\n (need 8 more bytes to fill length and mdat type) */\n mdatSize += offset;\n\n try {\n mdat = new Uint8Array(mdatSize);\n } catch (err) {\n this.observer.emit(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].ERROR, _events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_4__[\"ErrorTypes\"].MUX_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_4__[\"ErrorDetails\"].REMUX_ALLOC_ERROR,\n fatal: false,\n bytes: mdatSize,\n reason: \"fail allocating audio mdat \" + mdatSize\n });\n return;\n }\n\n if (!rawMPEG) {\n var view = new DataView(mdat.buffer);\n view.setUint32(0, mdatSize);\n mdat.set(_mp4_generator__WEBPACK_IMPORTED_MODULE_2__[\"default\"].types.mdat, 4);\n }\n } else {\n // no audio samples\n return;\n }\n }\n\n mdat.set(unit, offset);\n var unitLen = unit.byteLength;\n offset += unitLen; // Default the sample's duration to the computed mp4SampleDuration, which will either be 1024 for AAC or 1152 for MPEG\n // In the case that we have 1 sample, this will be the duration. If we have more than one sample, the duration\n // becomes the PTS diff with the previous sample\n\n outputSamples.push(new Mp4Sample(true, mp4SampleDuration, unitLen, 0));\n lastPTS = _pts;\n } // We could end up with no audio samples if all input samples were overlapping with the previously remuxed ones\n\n\n var nbSamples = outputSamples.length;\n\n if (!nbSamples) {\n return;\n } // The next audio sample PTS should be equal to last sample PTS + duration\n\n\n var lastSample = outputSamples[outputSamples.length - 1];\n this.nextAudioPts = nextAudioPts = lastPTS + scaleFactor * lastSample.duration; // Set the track samples from inputSamples to outputSamples before remuxing\n\n var moof = rawMPEG ? new Uint8Array(0) : _mp4_generator__WEBPACK_IMPORTED_MODULE_2__[\"default\"].moof(track.sequenceNumber++, firstPTS / scaleFactor, _extends({}, track, {\n samples: outputSamples\n })); // Clear the track samples. This also clears the samples array in the demuxer, since the reference is shared\n\n track.samples = [];\n var start = firstPTS / inputTimeScale;\n var end = nextAudioPts / inputTimeScale;\n var type = 'audio';\n var audioData = {\n data1: moof,\n data2: mdat,\n startPTS: start,\n endPTS: end,\n startDTS: start,\n endDTS: end,\n type: type,\n hasAudio: true,\n hasVideo: false,\n nb: nbSamples\n };\n this.isAudioContiguous = true;\n console.assert(mdat.length, 'MDAT length must not be zero');\n return audioData;\n };\n\n _proto.remuxEmptyAudio = function remuxEmptyAudio(track, timeOffset, contiguous, videoData) {\n var inputTimeScale = track.inputTimeScale;\n var mp4timeScale = track.samplerate ? track.samplerate : inputTimeScale;\n var scaleFactor = inputTimeScale / mp4timeScale;\n var nextAudioPts = this.nextAudioPts; // sync with video's timestamp\n\n var startDTS = (nextAudioPts !== null ? nextAudioPts : videoData.startDTS * inputTimeScale) + this._initDTS;\n var endDTS = videoData.endDTS * inputTimeScale + this._initDTS; // one sample's duration value\n\n var frameDuration = scaleFactor * AAC_SAMPLES_PER_FRAME; // samples count of this segment's duration\n\n var nbSamples = Math.ceil((endDTS - startDTS) / frameDuration); // silent frame\n\n var silentFrame = _aac_helper__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getSilentFrame(track.manifestCodec || track.codec, track.channelCount);\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].warn('[mp4-remuxer]: remux empty Audio'); // Can't remux if we can't generate a silent frame...\n\n\n if (!silentFrame) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].trace('[mp4-remuxer]: Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec');\n\n return;\n }\n\n var samples = [];\n\n for (var i = 0; i < nbSamples; i++) {\n var stamp = startDTS + i * frameDuration;\n samples.push({\n unit: silentFrame,\n pts: stamp,\n dts: stamp\n });\n }\n\n track.samples = samples;\n return this.remuxAudio(track, timeOffset, contiguous, false);\n };\n\n _proto.remuxID3 = function remuxID3(track, timeOffset) {\n var length = track.samples.length;\n\n if (!length) {\n return;\n }\n\n var inputTimeScale = track.inputTimeScale;\n var initPTS = this._initPTS;\n var initDTS = this._initDTS;\n\n for (var index = 0; index < length; index++) {\n var sample = track.samples[index]; // setting id3 pts, dts to relative time\n // using this._initPTS and this._initDTS to calculate relative time\n\n sample.pts = normalizePts(sample.pts - initPTS, timeOffset * inputTimeScale) / inputTimeScale;\n sample.dts = normalizePts(sample.dts - initDTS, timeOffset * inputTimeScale) / inputTimeScale;\n }\n\n var samples = track.samples;\n track.samples = [];\n return {\n samples: samples\n };\n };\n\n _proto.remuxText = function remuxText(track, timeOffset) {\n var length = track.samples.length;\n\n if (!length) {\n return;\n }\n\n var inputTimeScale = track.inputTimeScale;\n var initPTS = this._initPTS;\n\n for (var index = 0; index < length; index++) {\n var sample = track.samples[index]; // setting text pts, dts to relative time\n // using this._initPTS and this._initDTS to calculate relative time\n\n sample.pts = normalizePts(sample.pts - initPTS, timeOffset * inputTimeScale) / inputTimeScale;\n }\n\n track.samples.sort(function (a, b) {\n return a.pts - b.pts;\n });\n var samples = track.samples;\n track.samples = [];\n return {\n samples: samples\n };\n };\n\n return MP4Remuxer;\n }();\n\n function normalizePts(value, reference) {\n var offset;\n\n if (reference === null) {\n return value;\n }\n\n if (reference < value) {\n // - 2^33\n offset = -8589934592;\n } else {\n // + 2^33\n offset = 8589934592;\n }\n /* PTS is 33bit (from 0 to 2^33 -1)\n if diff between value and reference is bigger than half of the amplitude (2^32) then it means that\n PTS looping occured. fill the gap */\n\n\n while (Math.abs(value - reference) > 4294967296) {\n value += offset;\n }\n\n return value;\n }\n\n function findKeyframeIndex(samples) {\n for (var i = 0; i < samples.length; i++) {\n if (samples[i].key) {\n return i;\n }\n }\n\n return -1;\n }\n\n var Mp4Sample = function Mp4Sample(isKeyframe, duration, size, cts) {\n this.size = void 0;\n this.duration = void 0;\n this.cts = void 0;\n this.flags = void 0;\n this.duration = duration;\n this.size = size;\n this.cts = cts;\n this.flags = new Mp4SampleFlags(isKeyframe);\n };\n\n var Mp4SampleFlags = function Mp4SampleFlags(isKeyframe) {\n this.isLeading = 0;\n this.isDependedOn = 0;\n this.hasRedundancy = 0;\n this.degradPrio = 0;\n this.dependsOn = 1;\n this.isNonSync = 1;\n this.dependsOn = isKeyframe ? 2 : 1;\n this.isNonSync = isKeyframe ? 0 : 1;\n };\n /***/\n\n },\n\n /***/\n \"./src/remux/passthrough-remuxer.ts\":\n /*!******************************************!*\\\n !*** ./src/remux/passthrough-remuxer.ts ***!\n \\******************************************/\n\n /*! exports provided: default */\n\n /***/\n function srcRemuxPassthroughRemuxerTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony import */\n\n\n var _home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./src/polyfills/number */\n \"./src/polyfills/number.ts\");\n /* harmony import */\n\n\n var _utils_mp4_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ../utils/mp4-tools */\n \"./src/utils/mp4-tools.ts\");\n /* harmony import */\n\n\n var _loader_fragment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ../loader/fragment */\n \"./src/loader/fragment.ts\");\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\n /*! ../utils/logger */\n \"./src/utils/logger.ts\");\n\n var PassThroughRemuxer = /*#__PURE__*/function () {\n function PassThroughRemuxer() {\n this.emitInitSegment = false;\n this.audioCodec = void 0;\n this.videoCodec = void 0;\n this.initData = void 0;\n this.initPTS = void 0;\n this.initTracks = void 0;\n this.lastEndDTS = null;\n }\n\n var _proto = PassThroughRemuxer.prototype;\n\n _proto.destroy = function destroy() {};\n\n _proto.resetTimeStamp = function resetTimeStamp(defaultInitPTS) {\n this.initPTS = defaultInitPTS;\n this.lastEndDTS = null;\n };\n\n _proto.resetNextTimestamp = function resetNextTimestamp() {\n this.lastEndDTS = null;\n };\n\n _proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec) {\n this.audioCodec = audioCodec;\n this.videoCodec = videoCodec;\n this.generateInitSegment(initSegment);\n this.emitInitSegment = true;\n };\n\n _proto.generateInitSegment = function generateInitSegment(initSegment) {\n var audioCodec = this.audioCodec,\n videoCodec = this.videoCodec;\n\n if (!initSegment || !initSegment.byteLength) {\n this.initTracks = undefined;\n this.initData = undefined;\n return;\n }\n\n var initData = this.initData = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_1__[\"parseInitSegment\"])(initSegment); // Get codec from initSegment or fallback to default\n\n if (!audioCodec) {\n audioCodec = getParsedTrackCodec(initData.audio, _loader_fragment__WEBPACK_IMPORTED_MODULE_2__[\"ElementaryStreamTypes\"].AUDIO);\n }\n\n if (!videoCodec) {\n videoCodec = getParsedTrackCodec(initData.video, _loader_fragment__WEBPACK_IMPORTED_MODULE_2__[\"ElementaryStreamTypes\"].VIDEO);\n }\n\n var tracks = {};\n\n if (initData.audio && initData.video) {\n tracks.audiovideo = {\n container: 'video/mp4',\n codec: audioCodec + ',' + videoCodec,\n initSegment: initSegment,\n id: 'main'\n };\n } else if (initData.audio) {\n tracks.audio = {\n container: 'audio/mp4',\n codec: audioCodec,\n initSegment: initSegment,\n id: 'audio'\n };\n } else if (initData.video) {\n tracks.video = {\n container: 'video/mp4',\n codec: videoCodec,\n initSegment: initSegment,\n id: 'main'\n };\n } else {\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn('[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes.');\n }\n\n this.initTracks = tracks;\n };\n\n _proto.remux = function remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset) {\n var initPTS = this.initPTS,\n lastEndDTS = this.lastEndDTS;\n var result = {\n audio: undefined,\n video: undefined,\n text: textTrack,\n id3: id3Track,\n initSegment: undefined\n }; // If we haven't yet set a lastEndDTS, or it was reset, set it to the provided timeOffset. We want to use the\n // lastEndDTS over timeOffset whenever possible; during progressive playback, the media source will not update\n // the media duration (which is what timeOffset is provided as) before we need to process the next chunk.\n\n if (!Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(lastEndDTS)) {\n lastEndDTS = this.lastEndDTS = timeOffset || 0;\n } // The binary segment data is added to the videoTrack in the mp4demuxer. We don't check to see if the data is only\n // audio or video (or both); adding it to video was an arbitrary choice.\n\n\n var data = videoTrack.samples;\n\n if (!data || !data.length) {\n return result;\n }\n\n var initSegment = {\n initPTS: undefined,\n timescale: 1\n };\n var initData = this.initData;\n\n if (!initData || !initData.length) {\n this.generateInitSegment(data);\n initData = this.initData;\n }\n\n if (!initData || !initData.length) {\n // We can't remux if the initSegment could not be generated\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn('[passthrough-remuxer.ts]: Failed to generate initSegment.');\n\n return result;\n }\n\n if (this.emitInitSegment) {\n initSegment.tracks = this.initTracks;\n this.emitInitSegment = false;\n }\n\n if (!Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(initPTS)) {\n this.initPTS = initSegment.initPTS = initPTS = computeInitPTS(initData, data, lastEndDTS);\n }\n\n var duration = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_1__[\"getDuration\"])(data, initData);\n var startDTS = lastEndDTS;\n var endDTS = duration + startDTS;\n Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_1__[\"offsetStartDTS\"])(initData, data, initPTS);\n\n if (duration > 0) {\n this.lastEndDTS = endDTS;\n } else {\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn('Duration parsed from mp4 should be greater than zero');\n\n this.resetNextTimestamp();\n }\n\n var hasAudio = !!initData.audio;\n var hasVideo = !!initData.video;\n var type = '';\n\n if (hasAudio) {\n type += 'audio';\n }\n\n if (hasVideo) {\n type += 'video';\n }\n\n var track = {\n data1: data,\n startPTS: startDTS,\n startDTS: startDTS,\n endPTS: endDTS,\n endDTS: endDTS,\n type: type,\n hasAudio: hasAudio,\n hasVideo: hasVideo,\n nb: 1,\n dropped: 0\n };\n result.audio = track.type === 'audio' ? track : undefined;\n result.video = track.type !== 'audio' ? track : undefined;\n result.text = textTrack;\n result.id3 = id3Track;\n result.initSegment = initSegment;\n return result;\n };\n\n return PassThroughRemuxer;\n }();\n\n var computeInitPTS = function computeInitPTS(initData, data, timeOffset) {\n return Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_1__[\"getStartDTS\"])(initData, data) - timeOffset;\n };\n\n function getParsedTrackCodec(track, type) {\n var parsedCodec = track === null || track === void 0 ? void 0 : track.codec;\n\n if (parsedCodec && parsedCodec.length > 4) {\n return parsedCodec;\n } // Since mp4-tools cannot parse full codec string (see 'TODO: Parse codec details'... in mp4-tools)\n // Provide defaults based on codec type\n // This allows for some playback of some fmp4 playlists without CODECS defined in manifest\n\n\n if (parsedCodec === 'hvc1') {\n return 'hvc1.1.c.L120.90';\n }\n\n if (parsedCodec === 'av01') {\n return 'av01.0.04M.08';\n }\n\n if (parsedCodec === 'avc1' || type === _loader_fragment__WEBPACK_IMPORTED_MODULE_2__[\"ElementaryStreamTypes\"].VIDEO) {\n return 'avc1.42e01e';\n }\n\n return 'mp4a.40.5';\n }\n /* harmony default export */\n\n\n __webpack_exports__[\"default\"] = PassThroughRemuxer;\n /***/\n },\n\n /***/\n \"./src/task-loop.ts\":\n /*!**************************!*\\\n !*** ./src/task-loop.ts ***!\n \\**************************/\n\n /*! exports provided: default */\n\n /***/\n function srcTaskLoopTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"default\", function () {\n return TaskLoop;\n });\n /**\n * Sub-class specialization of EventHandler base class.\n *\n * TaskLoop allows to schedule a task function being called (optionnaly repeatedly) on the main loop,\n * scheduled asynchroneously, avoiding recursive calls in the same tick.\n *\n * The task itself is implemented in `doTick`. It can be requested and called for single execution\n * using the `tick` method.\n *\n * It will be assured that the task execution method (`tick`) only gets called once per main loop \"tick\",\n * no matter how often it gets requested for execution. Execution in further ticks will be scheduled accordingly.\n *\n * If further execution requests have already been scheduled on the next tick, it can be checked with `hasNextTick`,\n * and cancelled with `clearNextTick`.\n *\n * The task can be scheduled as an interval repeatedly with a period as parameter (see `setInterval`, `clearInterval`).\n *\n * Sub-classes need to implement the `doTick` method which will effectively have the task execution routine.\n *\n * Further explanations:\n *\n * The baseclass has a `tick` method that will schedule the doTick call. It may be called synchroneously\n * only for a stack-depth of one. On re-entrant calls, sub-sequent calls are scheduled for next main loop ticks.\n *\n * When the task execution (`tick` method) is called in re-entrant way this is detected and\n * we are limiting the task execution per call stack to exactly one, but scheduling/post-poning further\n * task processing on the next main loop iteration (also known as \"next tick\" in the Node/JS runtime lingo).\n */\n\n\n var TaskLoop = /*#__PURE__*/function () {\n function TaskLoop() {\n this._boundTick = void 0;\n this._tickTimer = null;\n this._tickInterval = null;\n this._tickCallCount = 0;\n this._boundTick = this.tick.bind(this);\n }\n\n var _proto = TaskLoop.prototype;\n\n _proto.destroy = function destroy() {\n this.onHandlerDestroying();\n this.onHandlerDestroyed();\n };\n\n _proto.onHandlerDestroying = function onHandlerDestroying() {\n // clear all timers before unregistering from event bus\n this.clearNextTick();\n this.clearInterval();\n };\n\n _proto.onHandlerDestroyed = function onHandlerDestroyed() {}\n /**\n * @returns {boolean}\n */\n ;\n\n _proto.hasInterval = function hasInterval() {\n return !!this._tickInterval;\n }\n /**\n * @returns {boolean}\n */\n ;\n\n _proto.hasNextTick = function hasNextTick() {\n return !!this._tickTimer;\n }\n /**\n * @param {number} millis Interval time (ms)\n * @returns {boolean} True when interval has been scheduled, false when already scheduled (no effect)\n */\n ;\n\n _proto.setInterval = function setInterval(millis) {\n if (!this._tickInterval) {\n this._tickInterval = self.setInterval(this._boundTick, millis);\n return true;\n }\n\n return false;\n }\n /**\n * @returns {boolean} True when interval was cleared, false when none was set (no effect)\n */\n ;\n\n _proto.clearInterval = function clearInterval() {\n if (this._tickInterval) {\n self.clearInterval(this._tickInterval);\n this._tickInterval = null;\n return true;\n }\n\n return false;\n }\n /**\n * @returns {boolean} True when timeout was cleared, false when none was set (no effect)\n */\n ;\n\n _proto.clearNextTick = function clearNextTick() {\n if (this._tickTimer) {\n self.clearTimeout(this._tickTimer);\n this._tickTimer = null;\n return true;\n }\n\n return false;\n }\n /**\n * Will call the subclass doTick implementation in this main loop tick\n * or in the next one (via setTimeout(,0)) in case it has already been called\n * in this tick (in case this is a re-entrant call).\n */\n ;\n\n _proto.tick = function tick() {\n this._tickCallCount++;\n\n if (this._tickCallCount === 1) {\n this.doTick(); // re-entrant call to tick from previous doTick call stack\n // -> schedule a call on the next main loop iteration to process this task processing request\n\n if (this._tickCallCount > 1) {\n // make sure only one timer exists at any time at max\n this.tickImmediate();\n }\n\n this._tickCallCount = 0;\n }\n };\n\n _proto.tickImmediate = function tickImmediate() {\n this.clearNextTick();\n this._tickTimer = self.setTimeout(this._boundTick, 0);\n }\n /**\n * For subclass to implement task logic\n * @abstract\n */\n ;\n\n _proto.doTick = function doTick() {};\n\n return TaskLoop;\n }();\n /***/\n\n },\n\n /***/\n \"./src/types/cmcd.ts\":\n /*!***************************!*\\\n !*** ./src/types/cmcd.ts ***!\n \\***************************/\n\n /*! exports provided: CMCDVersion, CMCDObjectType, CMCDStreamingFormat, CMCDStreamType */\n\n /***/\n function srcTypesCmcdTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"CMCDVersion\", function () {\n return CMCDVersion;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"CMCDObjectType\", function () {\n return CMCDObjectType;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"CMCDStreamingFormat\", function () {\n return CMCDStreamingFormat;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"CMCDStreamType\", function () {\n return CMCDStreamType;\n });\n /**\n * CMCD spec version\n */\n\n\n var CMCDVersion = 1;\n /**\n * CMCD Object Type\n */\n\n var CMCDObjectType;\n /**\n * CMCD Streaming Format\n */\n\n (function (CMCDObjectType) {\n CMCDObjectType[\"MANIFEST\"] = \"m\";\n CMCDObjectType[\"AUDIO\"] = \"a\";\n CMCDObjectType[\"VIDEO\"] = \"v\";\n CMCDObjectType[\"MUXED\"] = \"av\";\n CMCDObjectType[\"INIT\"] = \"i\";\n CMCDObjectType[\"CAPTION\"] = \"c\";\n CMCDObjectType[\"TIMED_TEXT\"] = \"tt\";\n CMCDObjectType[\"KEY\"] = \"k\";\n CMCDObjectType[\"OTHER\"] = \"o\";\n })(CMCDObjectType || (CMCDObjectType = {}));\n\n var CMCDStreamingFormat;\n /**\n * CMCD Streaming Type\n */\n\n (function (CMCDStreamingFormat) {\n CMCDStreamingFormat[\"DASH\"] = \"d\";\n CMCDStreamingFormat[\"HLS\"] = \"h\";\n CMCDStreamingFormat[\"SMOOTH\"] = \"s\";\n CMCDStreamingFormat[\"OTHER\"] = \"o\";\n })(CMCDStreamingFormat || (CMCDStreamingFormat = {}));\n\n var CMCDStreamType;\n /**\n * CMCD Headers\n */\n\n (function (CMCDStreamType) {\n CMCDStreamType[\"VOD\"] = \"v\";\n CMCDStreamType[\"LIVE\"] = \"l\";\n })(CMCDStreamType || (CMCDStreamType = {}));\n /***/\n\n },\n\n /***/\n \"./src/types/level.ts\":\n /*!****************************!*\\\n !*** ./src/types/level.ts ***!\n \\****************************/\n\n /*! exports provided: HlsSkip, getSkipValue, HlsUrlParameters, Level */\n\n /***/\n function srcTypesLevelTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"HlsSkip\", function () {\n return HlsSkip;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"getSkipValue\", function () {\n return getSkipValue;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"HlsUrlParameters\", function () {\n return HlsUrlParameters;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"Level\", function () {\n return Level;\n });\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n var HlsSkip;\n\n (function (HlsSkip) {\n HlsSkip[\"No\"] = \"\";\n HlsSkip[\"Yes\"] = \"YES\";\n HlsSkip[\"v2\"] = \"v2\";\n })(HlsSkip || (HlsSkip = {}));\n\n function getSkipValue(details, msn) {\n var canSkipUntil = details.canSkipUntil,\n canSkipDateRanges = details.canSkipDateRanges,\n endSN = details.endSN;\n var snChangeGoal = msn !== undefined ? msn - endSN : 0;\n\n if (canSkipUntil && snChangeGoal < canSkipUntil) {\n if (canSkipDateRanges) {\n return HlsSkip.v2;\n }\n\n return HlsSkip.Yes;\n }\n\n return HlsSkip.No;\n }\n\n var HlsUrlParameters = /*#__PURE__*/function () {\n function HlsUrlParameters(msn, part, skip) {\n this.msn = void 0;\n this.part = void 0;\n this.skip = void 0;\n this.msn = msn;\n this.part = part;\n this.skip = skip;\n }\n\n var _proto = HlsUrlParameters.prototype;\n\n _proto.addDirectives = function addDirectives(uri) {\n var url = new self.URL(uri);\n\n if (this.msn !== undefined) {\n url.searchParams.set('_HLS_msn', this.msn.toString());\n }\n\n if (this.part !== undefined) {\n url.searchParams.set('_HLS_part', this.part.toString());\n }\n\n if (this.skip) {\n url.searchParams.set('_HLS_skip', this.skip);\n }\n\n return url.toString();\n };\n\n return HlsUrlParameters;\n }();\n\n var Level = /*#__PURE__*/function () {\n function Level(data) {\n this.attrs = void 0;\n this.audioCodec = void 0;\n this.bitrate = void 0;\n this.codecSet = void 0;\n this.height = void 0;\n this.id = void 0;\n this.name = void 0;\n this.videoCodec = void 0;\n this.width = void 0;\n this.unknownCodecs = void 0;\n this.audioGroupIds = void 0;\n this.details = void 0;\n this.fragmentError = 0;\n this.loadError = 0;\n this.loaded = void 0;\n this.realBitrate = 0;\n this.textGroupIds = void 0;\n this.url = void 0;\n this._urlId = 0;\n this.url = [data.url];\n this.attrs = data.attrs;\n this.bitrate = data.bitrate;\n\n if (data.details) {\n this.details = data.details;\n }\n\n this.id = data.id || 0;\n this.name = data.name;\n this.width = data.width || 0;\n this.height = data.height || 0;\n this.audioCodec = data.audioCodec;\n this.videoCodec = data.videoCodec;\n this.unknownCodecs = data.unknownCodecs;\n this.codecSet = [data.videoCodec, data.audioCodec].filter(function (c) {\n return c;\n }).join(',').replace(/\\.[^.,]+/g, '');\n }\n\n _createClass(Level, [{\n key: \"maxBitrate\",\n get: function get() {\n return Math.max(this.realBitrate, this.bitrate);\n }\n }, {\n key: \"uri\",\n get: function get() {\n return this.url[this._urlId] || '';\n }\n }, {\n key: \"urlId\",\n get: function get() {\n return this._urlId;\n },\n set: function set(value) {\n var newValue = value % this.url.length;\n\n if (this._urlId !== newValue) {\n this.details = undefined;\n this._urlId = newValue;\n }\n }\n }]);\n\n return Level;\n }();\n /***/\n\n },\n\n /***/\n \"./src/types/loader.ts\":\n /*!*****************************!*\\\n !*** ./src/types/loader.ts ***!\n \\*****************************/\n\n /*! exports provided: PlaylistContextType, PlaylistLevelType */\n\n /***/\n function srcTypesLoaderTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"PlaylistContextType\", function () {\n return PlaylistContextType;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"PlaylistLevelType\", function () {\n return PlaylistLevelType;\n });\n\n var PlaylistContextType;\n\n (function (PlaylistContextType) {\n PlaylistContextType[\"MANIFEST\"] = \"manifest\";\n PlaylistContextType[\"LEVEL\"] = \"level\";\n PlaylistContextType[\"AUDIO_TRACK\"] = \"audioTrack\";\n PlaylistContextType[\"SUBTITLE_TRACK\"] = \"subtitleTrack\";\n })(PlaylistContextType || (PlaylistContextType = {}));\n\n var PlaylistLevelType;\n\n (function (PlaylistLevelType) {\n PlaylistLevelType[\"MAIN\"] = \"main\";\n PlaylistLevelType[\"AUDIO\"] = \"audio\";\n PlaylistLevelType[\"SUBTITLE\"] = \"subtitle\";\n })(PlaylistLevelType || (PlaylistLevelType = {}));\n /***/\n\n },\n\n /***/\n \"./src/types/transmuxer.ts\":\n /*!*********************************!*\\\n !*** ./src/types/transmuxer.ts ***!\n \\*********************************/\n\n /*! exports provided: ChunkMetadata */\n\n /***/\n function srcTypesTransmuxerTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"ChunkMetadata\", function () {\n return ChunkMetadata;\n });\n\n var ChunkMetadata = function ChunkMetadata(level, sn, id, size, part, partial) {\n if (size === void 0) {\n size = 0;\n }\n\n if (part === void 0) {\n part = -1;\n }\n\n if (partial === void 0) {\n partial = false;\n }\n\n this.level = void 0;\n this.sn = void 0;\n this.part = void 0;\n this.id = void 0;\n this.size = void 0;\n this.partial = void 0;\n this.transmuxing = getNewPerformanceTiming();\n this.buffering = {\n audio: getNewPerformanceTiming(),\n video: getNewPerformanceTiming(),\n audiovideo: getNewPerformanceTiming()\n };\n this.level = level;\n this.sn = sn;\n this.id = id;\n this.size = size;\n this.part = part;\n this.partial = partial;\n };\n\n function getNewPerformanceTiming() {\n return {\n start: 0,\n executeStart: 0,\n executeEnd: 0,\n end: 0\n };\n }\n /***/\n\n },\n\n /***/\n \"./src/utils/attr-list.ts\":\n /*!********************************!*\\\n !*** ./src/utils/attr-list.ts ***!\n \\********************************/\n\n /*! exports provided: AttrList */\n\n /***/\n function srcUtilsAttrListTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"AttrList\", function () {\n return AttrList;\n });\n\n var DECIMAL_RESOLUTION_REGEX = /^(\\d+)x(\\d+)$/; // eslint-disable-line no-useless-escape\n\n var ATTR_LIST_REGEX = /\\s*(.+?)\\s*=((?:\\\".*?\\\")|.*?)(?:,|$)/g; // eslint-disable-line no-useless-escape\n // adapted from https://github.com/kanongil/node-m3u8parse/blob/master/attrlist.js\n\n var AttrList = /*#__PURE__*/function () {\n function AttrList(attrs) {\n if (typeof attrs === 'string') {\n attrs = AttrList.parseAttrList(attrs);\n }\n\n for (var attr in attrs) {\n if (attrs.hasOwnProperty(attr)) {\n this[attr] = attrs[attr];\n }\n }\n }\n\n var _proto = AttrList.prototype;\n\n _proto.decimalInteger = function decimalInteger(attrName) {\n var intValue = parseInt(this[attrName], 10);\n\n if (intValue > Number.MAX_SAFE_INTEGER) {\n return Infinity;\n }\n\n return intValue;\n };\n\n _proto.hexadecimalInteger = function hexadecimalInteger(attrName) {\n if (this[attrName]) {\n var stringValue = (this[attrName] || '0x').slice(2);\n stringValue = (stringValue.length & 1 ? '0' : '') + stringValue;\n var value = new Uint8Array(stringValue.length / 2);\n\n for (var i = 0; i < stringValue.length / 2; i++) {\n value[i] = parseInt(stringValue.slice(i * 2, i * 2 + 2), 16);\n }\n\n return value;\n } else {\n return null;\n }\n };\n\n _proto.hexadecimalIntegerAsNumber = function hexadecimalIntegerAsNumber(attrName) {\n var intValue = parseInt(this[attrName], 16);\n\n if (intValue > Number.MAX_SAFE_INTEGER) {\n return Infinity;\n }\n\n return intValue;\n };\n\n _proto.decimalFloatingPoint = function decimalFloatingPoint(attrName) {\n return parseFloat(this[attrName]);\n };\n\n _proto.optionalFloat = function optionalFloat(attrName, defaultValue) {\n var value = this[attrName];\n return value ? parseFloat(value) : defaultValue;\n };\n\n _proto.enumeratedString = function enumeratedString(attrName) {\n return this[attrName];\n };\n\n _proto.bool = function bool(attrName) {\n return this[attrName] === 'YES';\n };\n\n _proto.decimalResolution = function decimalResolution(attrName) {\n var res = DECIMAL_RESOLUTION_REGEX.exec(this[attrName]);\n\n if (res === null) {\n return undefined;\n }\n\n return {\n width: parseInt(res[1], 10),\n height: parseInt(res[2], 10)\n };\n };\n\n AttrList.parseAttrList = function parseAttrList(input) {\n var match;\n var attrs = {};\n var quote = '\"';\n ATTR_LIST_REGEX.lastIndex = 0;\n\n while ((match = ATTR_LIST_REGEX.exec(input)) !== null) {\n var value = match[2];\n\n if (value.indexOf(quote) === 0 && value.lastIndexOf(quote) === value.length - 1) {\n value = value.slice(1, -1);\n }\n\n attrs[match[1]] = value;\n }\n\n return attrs;\n };\n\n return AttrList;\n }();\n /***/\n\n },\n\n /***/\n \"./src/utils/binary-search.ts\":\n /*!************************************!*\\\n !*** ./src/utils/binary-search.ts ***!\n \\************************************/\n\n /*! exports provided: default */\n\n /***/\n function srcUtilsBinarySearchTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n\n var BinarySearch = {\n /**\n * Searches for an item in an array which matches a certain condition.\n * This requires the condition to only match one item in the array,\n * and for the array to be ordered.\n *\n * @param {Array} list The array to search.\n * @param {BinarySearchComparison} comparisonFn\n * Called and provided a candidate item as the first argument.\n * Should return:\n * > -1 if the item should be located at a lower index than the provided item.\n * > 1 if the item should be located at a higher index than the provided item.\n * > 0 if the item is the item you're looking for.\n *\n * @return {T | null} The object if it is found or null otherwise.\n */\n search: function search(list, comparisonFn) {\n var minIndex = 0;\n var maxIndex = list.length - 1;\n var currentIndex = null;\n var currentElement = null;\n\n while (minIndex <= maxIndex) {\n currentIndex = (minIndex + maxIndex) / 2 | 0;\n currentElement = list[currentIndex];\n var comparisonResult = comparisonFn(currentElement);\n\n if (comparisonResult > 0) {\n minIndex = currentIndex + 1;\n } else if (comparisonResult < 0) {\n maxIndex = currentIndex - 1;\n } else {\n return currentElement;\n }\n }\n\n return null;\n }\n };\n /* harmony default export */\n\n __webpack_exports__[\"default\"] = BinarySearch;\n /***/\n },\n\n /***/\n \"./src/utils/buffer-helper.ts\":\n /*!************************************!*\\\n !*** ./src/utils/buffer-helper.ts ***!\n \\************************************/\n\n /*! exports provided: BufferHelper */\n\n /***/\n function srcUtilsBufferHelperTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"BufferHelper\", function () {\n return BufferHelper;\n });\n /* harmony import */\n\n\n var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./logger */\n \"./src/utils/logger.ts\");\n /**\n * @module BufferHelper\n *\n * Providing methods dealing with buffer length retrieval for example.\n *\n * In general, a helper around HTML5 MediaElement TimeRanges gathered from `buffered` property.\n *\n * Also @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/buffered\n */\n\n\n var noopBuffered = {\n length: 0,\n start: function start() {\n return 0;\n },\n end: function end() {\n return 0;\n }\n };\n\n var BufferHelper = /*#__PURE__*/function () {\n function BufferHelper() {}\n /**\n * Return true if `media`'s buffered include `position`\n * @param {Bufferable} media\n * @param {number} position\n * @returns {boolean}\n */\n\n\n BufferHelper.isBuffered = function isBuffered(media, position) {\n try {\n if (media) {\n var buffered = BufferHelper.getBuffered(media);\n\n for (var i = 0; i < buffered.length; i++) {\n if (position >= buffered.start(i) && position <= buffered.end(i)) {\n return true;\n }\n }\n }\n } catch (error) {// this is to catch\n // InvalidStateError: Failed to read the 'buffered' property from 'SourceBuffer':\n // This SourceBuffer has been removed from the parent media source\n }\n\n return false;\n };\n\n BufferHelper.bufferInfo = function bufferInfo(media, pos, maxHoleDuration) {\n try {\n if (media) {\n var vbuffered = BufferHelper.getBuffered(media);\n var buffered = [];\n var i;\n\n for (i = 0; i < vbuffered.length; i++) {\n buffered.push({\n start: vbuffered.start(i),\n end: vbuffered.end(i)\n });\n }\n\n return this.bufferedInfo(buffered, pos, maxHoleDuration);\n }\n } catch (error) {// this is to catch\n // InvalidStateError: Failed to read the 'buffered' property from 'SourceBuffer':\n // This SourceBuffer has been removed from the parent media source\n }\n\n return {\n len: 0,\n start: pos,\n end: pos,\n nextStart: undefined\n };\n };\n\n BufferHelper.bufferedInfo = function bufferedInfo(buffered, pos, maxHoleDuration) {\n pos = Math.max(0, pos); // sort on buffer.start/smaller end (IE does not always return sorted buffered range)\n\n buffered.sort(function (a, b) {\n var diff = a.start - b.start;\n\n if (diff) {\n return diff;\n } else {\n return b.end - a.end;\n }\n });\n var buffered2 = [];\n\n if (maxHoleDuration) {\n // there might be some small holes between buffer time range\n // consider that holes smaller than maxHoleDuration are irrelevant and build another\n // buffer time range representations that discards those holes\n for (var i = 0; i < buffered.length; i++) {\n var buf2len = buffered2.length;\n\n if (buf2len) {\n var buf2end = buffered2[buf2len - 1].end; // if small hole (value between 0 or maxHoleDuration ) or overlapping (negative)\n\n if (buffered[i].start - buf2end < maxHoleDuration) {\n // merge overlapping time ranges\n // update lastRange.end only if smaller than item.end\n // e.g. [ 1, 15] with [ 2,8] => [ 1,15] (no need to modify lastRange.end)\n // whereas [ 1, 8] with [ 2,15] => [ 1,15] ( lastRange should switch from [1,8] to [1,15])\n if (buffered[i].end > buf2end) {\n buffered2[buf2len - 1].end = buffered[i].end;\n }\n } else {\n // big hole\n buffered2.push(buffered[i]);\n }\n } else {\n // first value\n buffered2.push(buffered[i]);\n }\n }\n } else {\n buffered2 = buffered;\n }\n\n var bufferLen = 0; // bufferStartNext can possibly be undefined based on the conditional logic below\n\n var bufferStartNext; // bufferStart and bufferEnd are buffer boundaries around current video position\n\n var bufferStart = pos;\n var bufferEnd = pos;\n\n for (var _i = 0; _i < buffered2.length; _i++) {\n var start = buffered2[_i].start;\n var end = buffered2[_i].end; // logger.log('buf start/end:' + buffered.start(i) + '/' + buffered.end(i));\n\n if (pos + maxHoleDuration >= start && pos < end) {\n // play position is inside this buffer TimeRange, retrieve end of buffer position and buffer length\n bufferStart = start;\n bufferEnd = end;\n bufferLen = bufferEnd - pos;\n } else if (pos + maxHoleDuration < start) {\n bufferStartNext = start;\n break;\n }\n }\n\n return {\n len: bufferLen,\n start: bufferStart || 0,\n end: bufferEnd || 0,\n nextStart: bufferStartNext\n };\n }\n /**\n * Safe method to get buffered property.\n * SourceBuffer.buffered may throw if SourceBuffer is removed from it's MediaSource\n */\n ;\n\n BufferHelper.getBuffered = function getBuffered(media) {\n try {\n return media.buffered;\n } catch (e) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"logger\"].log('failed to get media.buffered', e);\n\n return noopBuffered;\n }\n };\n\n return BufferHelper;\n }();\n /***/\n\n },\n\n /***/\n \"./src/utils/cea-608-parser.ts\":\n /*!*************************************!*\\\n !*** ./src/utils/cea-608-parser.ts ***!\n \\*************************************/\n\n /*! exports provided: Row, CaptionScreen, default */\n\n /***/\n function srcUtilsCea608ParserTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"Row\", function () {\n return Row;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"CaptionScreen\", function () {\n return CaptionScreen;\n });\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ../utils/logger */\n \"./src/utils/logger.ts\");\n /**\n *\n * This code was ported from the dash.js project at:\n * https://github.com/Dash-Industry-Forum/dash.js/blob/development/externals/cea608-parser.js\n * https://github.com/Dash-Industry-Forum/dash.js/commit/8269b26a761e0853bb21d78780ed945144ecdd4d#diff-71bc295a2d6b6b7093a1d3290d53a4b2\n *\n * The original copyright appears below:\n *\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2015-2016, DASH Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * 2. Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n /**\n * Exceptions from regular ASCII. CodePoints are mapped to UTF-16 codes\n */\n\n\n var specialCea608CharsCodes = {\n 0x2a: 0xe1,\n // lowercase a, acute accent\n 0x5c: 0xe9,\n // lowercase e, acute accent\n 0x5e: 0xed,\n // lowercase i, acute accent\n 0x5f: 0xf3,\n // lowercase o, acute accent\n 0x60: 0xfa,\n // lowercase u, acute accent\n 0x7b: 0xe7,\n // lowercase c with cedilla\n 0x7c: 0xf7,\n // division symbol\n 0x7d: 0xd1,\n // uppercase N tilde\n 0x7e: 0xf1,\n // lowercase n tilde\n 0x7f: 0x2588,\n // Full block\n // THIS BLOCK INCLUDES THE 16 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n // THAT COME FROM HI BYTE=0x11 AND LOW BETWEEN 0x30 AND 0x3F\n // THIS MEANS THAT \\x50 MUST BE ADDED TO THE VALUES\n 0x80: 0xae,\n // Registered symbol (R)\n 0x81: 0xb0,\n // degree sign\n 0x82: 0xbd,\n // 1/2 symbol\n 0x83: 0xbf,\n // Inverted (open) question mark\n 0x84: 0x2122,\n // Trademark symbol (TM)\n 0x85: 0xa2,\n // Cents symbol\n 0x86: 0xa3,\n // Pounds sterling\n 0x87: 0x266a,\n // Music 8'th note\n 0x88: 0xe0,\n // lowercase a, grave accent\n 0x89: 0x20,\n // transparent space (regular)\n 0x8a: 0xe8,\n // lowercase e, grave accent\n 0x8b: 0xe2,\n // lowercase a, circumflex accent\n 0x8c: 0xea,\n // lowercase e, circumflex accent\n 0x8d: 0xee,\n // lowercase i, circumflex accent\n 0x8e: 0xf4,\n // lowercase o, circumflex accent\n 0x8f: 0xfb,\n // lowercase u, circumflex accent\n // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n // THAT COME FROM HI BYTE=0x12 AND LOW BETWEEN 0x20 AND 0x3F\n 0x90: 0xc1,\n // capital letter A with acute\n 0x91: 0xc9,\n // capital letter E with acute\n 0x92: 0xd3,\n // capital letter O with acute\n 0x93: 0xda,\n // capital letter U with acute\n 0x94: 0xdc,\n // capital letter U with diaresis\n 0x95: 0xfc,\n // lowercase letter U with diaeresis\n 0x96: 0x2018,\n // opening single quote\n 0x97: 0xa1,\n // inverted exclamation mark\n 0x98: 0x2a,\n // asterisk\n 0x99: 0x2019,\n // closing single quote\n 0x9a: 0x2501,\n // box drawings heavy horizontal\n 0x9b: 0xa9,\n // copyright sign\n 0x9c: 0x2120,\n // Service mark\n 0x9d: 0x2022,\n // (round) bullet\n 0x9e: 0x201c,\n // Left double quotation mark\n 0x9f: 0x201d,\n // Right double quotation mark\n 0xa0: 0xc0,\n // uppercase A, grave accent\n 0xa1: 0xc2,\n // uppercase A, circumflex\n 0xa2: 0xc7,\n // uppercase C with cedilla\n 0xa3: 0xc8,\n // uppercase E, grave accent\n 0xa4: 0xca,\n // uppercase E, circumflex\n 0xa5: 0xcb,\n // capital letter E with diaresis\n 0xa6: 0xeb,\n // lowercase letter e with diaresis\n 0xa7: 0xce,\n // uppercase I, circumflex\n 0xa8: 0xcf,\n // uppercase I, with diaresis\n 0xa9: 0xef,\n // lowercase i, with diaresis\n 0xaa: 0xd4,\n // uppercase O, circumflex\n 0xab: 0xd9,\n // uppercase U, grave accent\n 0xac: 0xf9,\n // lowercase u, grave accent\n 0xad: 0xdb,\n // uppercase U, circumflex\n 0xae: 0xab,\n // left-pointing double angle quotation mark\n 0xaf: 0xbb,\n // right-pointing double angle quotation mark\n // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n // THAT COME FROM HI BYTE=0x13 AND LOW BETWEEN 0x20 AND 0x3F\n 0xb0: 0xc3,\n // Uppercase A, tilde\n 0xb1: 0xe3,\n // Lowercase a, tilde\n 0xb2: 0xcd,\n // Uppercase I, acute accent\n 0xb3: 0xcc,\n // Uppercase I, grave accent\n 0xb4: 0xec,\n // Lowercase i, grave accent\n 0xb5: 0xd2,\n // Uppercase O, grave accent\n 0xb6: 0xf2,\n // Lowercase o, grave accent\n 0xb7: 0xd5,\n // Uppercase O, tilde\n 0xb8: 0xf5,\n // Lowercase o, tilde\n 0xb9: 0x7b,\n // Open curly brace\n 0xba: 0x7d,\n // Closing curly brace\n 0xbb: 0x5c,\n // Backslash\n 0xbc: 0x5e,\n // Caret\n 0xbd: 0x5f,\n // Underscore\n 0xbe: 0x7c,\n // Pipe (vertical line)\n 0xbf: 0x223c,\n // Tilde operator\n 0xc0: 0xc4,\n // Uppercase A, umlaut\n 0xc1: 0xe4,\n // Lowercase A, umlaut\n 0xc2: 0xd6,\n // Uppercase O, umlaut\n 0xc3: 0xf6,\n // Lowercase o, umlaut\n 0xc4: 0xdf,\n // Esszett (sharp S)\n 0xc5: 0xa5,\n // Yen symbol\n 0xc6: 0xa4,\n // Generic currency sign\n 0xc7: 0x2503,\n // Box drawings heavy vertical\n 0xc8: 0xc5,\n // Uppercase A, ring\n 0xc9: 0xe5,\n // Lowercase A, ring\n 0xca: 0xd8,\n // Uppercase O, stroke\n 0xcb: 0xf8,\n // Lowercase o, strok\n 0xcc: 0x250f,\n // Box drawings heavy down and right\n 0xcd: 0x2513,\n // Box drawings heavy down and left\n 0xce: 0x2517,\n // Box drawings heavy up and right\n 0xcf: 0x251b // Box drawings heavy up and left\n\n };\n /**\n * Utils\n */\n\n var getCharForByte = function getCharForByte(_byte) {\n var charCode = _byte;\n\n if (specialCea608CharsCodes.hasOwnProperty(_byte)) {\n charCode = specialCea608CharsCodes[_byte];\n }\n\n return String.fromCharCode(charCode);\n };\n\n var NR_ROWS = 15;\n var NR_COLS = 100; // Tables to look up row from PAC data\n\n var rowsLowCh1 = {\n 0x11: 1,\n 0x12: 3,\n 0x15: 5,\n 0x16: 7,\n 0x17: 9,\n 0x10: 11,\n 0x13: 12,\n 0x14: 14\n };\n var rowsHighCh1 = {\n 0x11: 2,\n 0x12: 4,\n 0x15: 6,\n 0x16: 8,\n 0x17: 10,\n 0x13: 13,\n 0x14: 15\n };\n var rowsLowCh2 = {\n 0x19: 1,\n 0x1a: 3,\n 0x1d: 5,\n 0x1e: 7,\n 0x1f: 9,\n 0x18: 11,\n 0x1b: 12,\n 0x1c: 14\n };\n var rowsHighCh2 = {\n 0x19: 2,\n 0x1a: 4,\n 0x1d: 6,\n 0x1e: 8,\n 0x1f: 10,\n 0x1b: 13,\n 0x1c: 15\n };\n var backgroundColors = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta', 'black', 'transparent'];\n var VerboseLevel;\n\n (function (VerboseLevel) {\n VerboseLevel[VerboseLevel[\"ERROR\"] = 0] = \"ERROR\";\n VerboseLevel[VerboseLevel[\"TEXT\"] = 1] = \"TEXT\";\n VerboseLevel[VerboseLevel[\"WARNING\"] = 2] = \"WARNING\";\n VerboseLevel[VerboseLevel[\"INFO\"] = 2] = \"INFO\";\n VerboseLevel[VerboseLevel[\"DEBUG\"] = 3] = \"DEBUG\";\n VerboseLevel[VerboseLevel[\"DATA\"] = 3] = \"DATA\";\n })(VerboseLevel || (VerboseLevel = {}));\n\n var CaptionsLogger = /*#__PURE__*/function () {\n function CaptionsLogger() {\n this.time = null;\n this.verboseLevel = VerboseLevel.ERROR;\n }\n\n var _proto = CaptionsLogger.prototype;\n\n _proto.log = function log(severity, msg) {\n if (this.verboseLevel >= severity) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_0__[\"logger\"].log(this.time + \" [\" + severity + \"] \" + msg);\n }\n };\n\n return CaptionsLogger;\n }();\n\n var numArrayToHexArray = function numArrayToHexArray(numArray) {\n var hexArray = [];\n\n for (var j = 0; j < numArray.length; j++) {\n hexArray.push(numArray[j].toString(16));\n }\n\n return hexArray;\n };\n\n var PenState = /*#__PURE__*/function () {\n function PenState(foreground, underline, italics, background, flash) {\n this.foreground = void 0;\n this.underline = void 0;\n this.italics = void 0;\n this.background = void 0;\n this.flash = void 0;\n this.foreground = foreground || 'white';\n this.underline = underline || false;\n this.italics = italics || false;\n this.background = background || 'black';\n this.flash = flash || false;\n }\n\n var _proto2 = PenState.prototype;\n\n _proto2.reset = function reset() {\n this.foreground = 'white';\n this.underline = false;\n this.italics = false;\n this.background = 'black';\n this.flash = false;\n };\n\n _proto2.setStyles = function setStyles(styles) {\n var attribs = ['foreground', 'underline', 'italics', 'background', 'flash'];\n\n for (var i = 0; i < attribs.length; i++) {\n var style = attribs[i];\n\n if (styles.hasOwnProperty(style)) {\n this[style] = styles[style];\n }\n }\n };\n\n _proto2.isDefault = function isDefault() {\n return this.foreground === 'white' && !this.underline && !this.italics && this.background === 'black' && !this.flash;\n };\n\n _proto2.equals = function equals(other) {\n return this.foreground === other.foreground && this.underline === other.underline && this.italics === other.italics && this.background === other.background && this.flash === other.flash;\n };\n\n _proto2.copy = function copy(newPenState) {\n this.foreground = newPenState.foreground;\n this.underline = newPenState.underline;\n this.italics = newPenState.italics;\n this.background = newPenState.background;\n this.flash = newPenState.flash;\n };\n\n _proto2.toString = function toString() {\n return 'color=' + this.foreground + ', underline=' + this.underline + ', italics=' + this.italics + ', background=' + this.background + ', flash=' + this.flash;\n };\n\n return PenState;\n }();\n /**\n * Unicode character with styling and background.\n * @constructor\n */\n\n\n var StyledUnicodeChar = /*#__PURE__*/function () {\n function StyledUnicodeChar(uchar, foreground, underline, italics, background, flash) {\n this.uchar = void 0;\n this.penState = void 0;\n this.uchar = uchar || ' '; // unicode character\n\n this.penState = new PenState(foreground, underline, italics, background, flash);\n }\n\n var _proto3 = StyledUnicodeChar.prototype;\n\n _proto3.reset = function reset() {\n this.uchar = ' ';\n this.penState.reset();\n };\n\n _proto3.setChar = function setChar(uchar, newPenState) {\n this.uchar = uchar;\n this.penState.copy(newPenState);\n };\n\n _proto3.setPenState = function setPenState(newPenState) {\n this.penState.copy(newPenState);\n };\n\n _proto3.equals = function equals(other) {\n return this.uchar === other.uchar && this.penState.equals(other.penState);\n };\n\n _proto3.copy = function copy(newChar) {\n this.uchar = newChar.uchar;\n this.penState.copy(newChar.penState);\n };\n\n _proto3.isEmpty = function isEmpty() {\n return this.uchar === ' ' && this.penState.isDefault();\n };\n\n return StyledUnicodeChar;\n }();\n /**\n * CEA-608 row consisting of NR_COLS instances of StyledUnicodeChar.\n * @constructor\n */\n\n\n var Row = /*#__PURE__*/function () {\n function Row(logger) {\n this.chars = void 0;\n this.pos = void 0;\n this.currPenState = void 0;\n this.cueStartTime = void 0;\n this.logger = void 0;\n this.chars = [];\n\n for (var i = 0; i < NR_COLS; i++) {\n this.chars.push(new StyledUnicodeChar());\n }\n\n this.logger = logger;\n this.pos = 0;\n this.currPenState = new PenState();\n }\n\n var _proto4 = Row.prototype;\n\n _proto4.equals = function equals(other) {\n var equal = true;\n\n for (var i = 0; i < NR_COLS; i++) {\n if (!this.chars[i].equals(other.chars[i])) {\n equal = false;\n break;\n }\n }\n\n return equal;\n };\n\n _proto4.copy = function copy(other) {\n for (var i = 0; i < NR_COLS; i++) {\n this.chars[i].copy(other.chars[i]);\n }\n };\n\n _proto4.isEmpty = function isEmpty() {\n var empty = true;\n\n for (var i = 0; i < NR_COLS; i++) {\n if (!this.chars[i].isEmpty()) {\n empty = false;\n break;\n }\n }\n\n return empty;\n }\n /**\n * Set the cursor to a valid column.\n */\n ;\n\n _proto4.setCursor = function setCursor(absPos) {\n if (this.pos !== absPos) {\n this.pos = absPos;\n }\n\n if (this.pos < 0) {\n this.logger.log(VerboseLevel.DEBUG, 'Negative cursor position ' + this.pos);\n this.pos = 0;\n } else if (this.pos > NR_COLS) {\n this.logger.log(VerboseLevel.DEBUG, 'Too large cursor position ' + this.pos);\n this.pos = NR_COLS;\n }\n }\n /**\n * Move the cursor relative to current position.\n */\n ;\n\n _proto4.moveCursor = function moveCursor(relPos) {\n var newPos = this.pos + relPos;\n\n if (relPos > 1) {\n for (var i = this.pos + 1; i < newPos + 1; i++) {\n this.chars[i].setPenState(this.currPenState);\n }\n }\n\n this.setCursor(newPos);\n }\n /**\n * Backspace, move one step back and clear character.\n */\n ;\n\n _proto4.backSpace = function backSpace() {\n this.moveCursor(-1);\n this.chars[this.pos].setChar(' ', this.currPenState);\n };\n\n _proto4.insertChar = function insertChar(_byte2) {\n if (_byte2 >= 0x90) {\n // Extended char\n this.backSpace();\n }\n\n var _char = getCharForByte(_byte2);\n\n if (this.pos >= NR_COLS) {\n this.logger.log(VerboseLevel.ERROR, 'Cannot insert ' + _byte2.toString(16) + ' (' + _char + ') at position ' + this.pos + '. Skipping it!');\n return;\n }\n\n this.chars[this.pos].setChar(_char, this.currPenState);\n this.moveCursor(1);\n };\n\n _proto4.clearFromPos = function clearFromPos(startPos) {\n var i;\n\n for (i = startPos; i < NR_COLS; i++) {\n this.chars[i].reset();\n }\n };\n\n _proto4.clear = function clear() {\n this.clearFromPos(0);\n this.pos = 0;\n this.currPenState.reset();\n };\n\n _proto4.clearToEndOfRow = function clearToEndOfRow() {\n this.clearFromPos(this.pos);\n };\n\n _proto4.getTextString = function getTextString() {\n var chars = [];\n var empty = true;\n\n for (var i = 0; i < NR_COLS; i++) {\n var _char2 = this.chars[i].uchar;\n\n if (_char2 !== ' ') {\n empty = false;\n }\n\n chars.push(_char2);\n }\n\n if (empty) {\n return '';\n } else {\n return chars.join('');\n }\n };\n\n _proto4.setPenStyles = function setPenStyles(styles) {\n this.currPenState.setStyles(styles);\n var currChar = this.chars[this.pos];\n currChar.setPenState(this.currPenState);\n };\n\n return Row;\n }();\n /**\n * Keep a CEA-608 screen of 32x15 styled characters\n * @constructor\n */\n\n\n var CaptionScreen = /*#__PURE__*/function () {\n function CaptionScreen(logger) {\n this.rows = void 0;\n this.currRow = void 0;\n this.nrRollUpRows = void 0;\n this.lastOutputScreen = void 0;\n this.logger = void 0;\n this.rows = [];\n\n for (var i = 0; i < NR_ROWS; i++) {\n this.rows.push(new Row(logger));\n } // Note that we use zero-based numbering (0-14)\n\n\n this.logger = logger;\n this.currRow = NR_ROWS - 1;\n this.nrRollUpRows = null;\n this.lastOutputScreen = null;\n this.reset();\n }\n\n var _proto5 = CaptionScreen.prototype;\n\n _proto5.reset = function reset() {\n for (var i = 0; i < NR_ROWS; i++) {\n this.rows[i].clear();\n }\n\n this.currRow = NR_ROWS - 1;\n };\n\n _proto5.equals = function equals(other) {\n var equal = true;\n\n for (var i = 0; i < NR_ROWS; i++) {\n if (!this.rows[i].equals(other.rows[i])) {\n equal = false;\n break;\n }\n }\n\n return equal;\n };\n\n _proto5.copy = function copy(other) {\n for (var i = 0; i < NR_ROWS; i++) {\n this.rows[i].copy(other.rows[i]);\n }\n };\n\n _proto5.isEmpty = function isEmpty() {\n var empty = true;\n\n for (var i = 0; i < NR_ROWS; i++) {\n if (!this.rows[i].isEmpty()) {\n empty = false;\n break;\n }\n }\n\n return empty;\n };\n\n _proto5.backSpace = function backSpace() {\n var row = this.rows[this.currRow];\n row.backSpace();\n };\n\n _proto5.clearToEndOfRow = function clearToEndOfRow() {\n var row = this.rows[this.currRow];\n row.clearToEndOfRow();\n }\n /**\n * Insert a character (without styling) in the current row.\n */\n ;\n\n _proto5.insertChar = function insertChar(_char3) {\n var row = this.rows[this.currRow];\n row.insertChar(_char3);\n };\n\n _proto5.setPen = function setPen(styles) {\n var row = this.rows[this.currRow];\n row.setPenStyles(styles);\n };\n\n _proto5.moveCursor = function moveCursor(relPos) {\n var row = this.rows[this.currRow];\n row.moveCursor(relPos);\n };\n\n _proto5.setCursor = function setCursor(absPos) {\n this.logger.log(VerboseLevel.INFO, 'setCursor: ' + absPos);\n var row = this.rows[this.currRow];\n row.setCursor(absPos);\n };\n\n _proto5.setPAC = function setPAC(pacData) {\n this.logger.log(VerboseLevel.INFO, 'pacData = ' + JSON.stringify(pacData));\n var newRow = pacData.row - 1;\n\n if (this.nrRollUpRows && newRow < this.nrRollUpRows - 1) {\n newRow = this.nrRollUpRows - 1;\n } // Make sure this only affects Roll-up Captions by checking this.nrRollUpRows\n\n\n if (this.nrRollUpRows && this.currRow !== newRow) {\n // clear all rows first\n for (var i = 0; i < NR_ROWS; i++) {\n this.rows[i].clear();\n } // Copy this.nrRollUpRows rows from lastOutputScreen and place it in the newRow location\n // topRowIndex - the start of rows to copy (inclusive index)\n\n\n var topRowIndex = this.currRow + 1 - this.nrRollUpRows; // We only copy if the last position was already shown.\n // We use the cueStartTime value to check this.\n\n var lastOutputScreen = this.lastOutputScreen;\n\n if (lastOutputScreen) {\n var prevLineTime = lastOutputScreen.rows[topRowIndex].cueStartTime;\n var time = this.logger.time;\n\n if (prevLineTime && time !== null && prevLineTime < time) {\n for (var _i = 0; _i < this.nrRollUpRows; _i++) {\n this.rows[newRow - this.nrRollUpRows + _i + 1].copy(lastOutputScreen.rows[topRowIndex + _i]);\n }\n }\n }\n }\n\n this.currRow = newRow;\n var row = this.rows[this.currRow];\n\n if (pacData.indent !== null) {\n var indent = pacData.indent;\n var prevPos = Math.max(indent - 1, 0);\n row.setCursor(pacData.indent);\n pacData.color = row.chars[prevPos].penState.foreground;\n }\n\n var styles = {\n foreground: pacData.color,\n underline: pacData.underline,\n italics: pacData.italics,\n background: 'black',\n flash: false\n };\n this.setPen(styles);\n }\n /**\n * Set background/extra foreground, but first do back_space, and then insert space (backwards compatibility).\n */\n ;\n\n _proto5.setBkgData = function setBkgData(bkgData) {\n this.logger.log(VerboseLevel.INFO, 'bkgData = ' + JSON.stringify(bkgData));\n this.backSpace();\n this.setPen(bkgData);\n this.insertChar(0x20); // Space\n };\n\n _proto5.setRollUpRows = function setRollUpRows(nrRows) {\n this.nrRollUpRows = nrRows;\n };\n\n _proto5.rollUp = function rollUp() {\n if (this.nrRollUpRows === null) {\n this.logger.log(VerboseLevel.DEBUG, 'roll_up but nrRollUpRows not set yet');\n return; // Not properly setup\n }\n\n this.logger.log(VerboseLevel.TEXT, this.getDisplayText());\n var topRowIndex = this.currRow + 1 - this.nrRollUpRows;\n var topRow = this.rows.splice(topRowIndex, 1)[0];\n topRow.clear();\n this.rows.splice(this.currRow, 0, topRow);\n this.logger.log(VerboseLevel.INFO, 'Rolling up'); // this.logger.log(VerboseLevel.TEXT, this.get_display_text())\n }\n /**\n * Get all non-empty rows with as unicode text.\n */\n ;\n\n _proto5.getDisplayText = function getDisplayText(asOneRow) {\n asOneRow = asOneRow || false;\n var displayText = [];\n var text = '';\n var rowNr = -1;\n\n for (var i = 0; i < NR_ROWS; i++) {\n var rowText = this.rows[i].getTextString();\n\n if (rowText) {\n rowNr = i + 1;\n\n if (asOneRow) {\n displayText.push('Row ' + rowNr + \": '\" + rowText + \"'\");\n } else {\n displayText.push(rowText.trim());\n }\n }\n }\n\n if (displayText.length > 0) {\n if (asOneRow) {\n text = '[' + displayText.join(' | ') + ']';\n } else {\n text = displayText.join('\\n');\n }\n }\n\n return text;\n };\n\n _proto5.getTextAndFormat = function getTextAndFormat() {\n return this.rows;\n };\n\n return CaptionScreen;\n }(); // var modes = ['MODE_ROLL-UP', 'MODE_POP-ON', 'MODE_PAINT-ON', 'MODE_TEXT'];\n\n\n var Cea608Channel = /*#__PURE__*/function () {\n function Cea608Channel(channelNumber, outputFilter, logger) {\n this.chNr = void 0;\n this.outputFilter = void 0;\n this.mode = void 0;\n this.verbose = void 0;\n this.displayedMemory = void 0;\n this.nonDisplayedMemory = void 0;\n this.lastOutputScreen = void 0;\n this.currRollUpRow = void 0;\n this.writeScreen = void 0;\n this.cueStartTime = void 0;\n this.logger = void 0;\n this.chNr = channelNumber;\n this.outputFilter = outputFilter;\n this.mode = null;\n this.verbose = 0;\n this.displayedMemory = new CaptionScreen(logger);\n this.nonDisplayedMemory = new CaptionScreen(logger);\n this.lastOutputScreen = new CaptionScreen(logger);\n this.currRollUpRow = this.displayedMemory.rows[NR_ROWS - 1];\n this.writeScreen = this.displayedMemory;\n this.mode = null;\n this.cueStartTime = null; // Keeps track of where a cue started.\n\n this.logger = logger;\n }\n\n var _proto6 = Cea608Channel.prototype;\n\n _proto6.reset = function reset() {\n this.mode = null;\n this.displayedMemory.reset();\n this.nonDisplayedMemory.reset();\n this.lastOutputScreen.reset();\n this.outputFilter.reset();\n this.currRollUpRow = this.displayedMemory.rows[NR_ROWS - 1];\n this.writeScreen = this.displayedMemory;\n this.mode = null;\n this.cueStartTime = null;\n };\n\n _proto6.getHandler = function getHandler() {\n return this.outputFilter;\n };\n\n _proto6.setHandler = function setHandler(newHandler) {\n this.outputFilter = newHandler;\n };\n\n _proto6.setPAC = function setPAC(pacData) {\n this.writeScreen.setPAC(pacData);\n };\n\n _proto6.setBkgData = function setBkgData(bkgData) {\n this.writeScreen.setBkgData(bkgData);\n };\n\n _proto6.setMode = function setMode(newMode) {\n if (newMode === this.mode) {\n return;\n }\n\n this.mode = newMode;\n this.logger.log(VerboseLevel.INFO, 'MODE=' + newMode);\n\n if (this.mode === 'MODE_POP-ON') {\n this.writeScreen = this.nonDisplayedMemory;\n } else {\n this.writeScreen = this.displayedMemory;\n this.writeScreen.reset();\n }\n\n if (this.mode !== 'MODE_ROLL-UP') {\n this.displayedMemory.nrRollUpRows = null;\n this.nonDisplayedMemory.nrRollUpRows = null;\n }\n\n this.mode = newMode;\n };\n\n _proto6.insertChars = function insertChars(chars) {\n for (var i = 0; i < chars.length; i++) {\n this.writeScreen.insertChar(chars[i]);\n }\n\n var screen = this.writeScreen === this.displayedMemory ? 'DISP' : 'NON_DISP';\n this.logger.log(VerboseLevel.INFO, screen + ': ' + this.writeScreen.getDisplayText(true));\n\n if (this.mode === 'MODE_PAINT-ON' || this.mode === 'MODE_ROLL-UP') {\n this.logger.log(VerboseLevel.TEXT, 'DISPLAYED: ' + this.displayedMemory.getDisplayText(true));\n this.outputDataUpdate();\n }\n };\n\n _proto6.ccRCL = function ccRCL() {\n // Resume Caption Loading (switch mode to Pop On)\n this.logger.log(VerboseLevel.INFO, 'RCL - Resume Caption Loading');\n this.setMode('MODE_POP-ON');\n };\n\n _proto6.ccBS = function ccBS() {\n // BackSpace\n this.logger.log(VerboseLevel.INFO, 'BS - BackSpace');\n\n if (this.mode === 'MODE_TEXT') {\n return;\n }\n\n this.writeScreen.backSpace();\n\n if (this.writeScreen === this.displayedMemory) {\n this.outputDataUpdate();\n }\n };\n\n _proto6.ccAOF = function ccAOF() {// Reserved (formerly Alarm Off)\n };\n\n _proto6.ccAON = function ccAON() {// Reserved (formerly Alarm On)\n };\n\n _proto6.ccDER = function ccDER() {\n // Delete to End of Row\n this.logger.log(VerboseLevel.INFO, 'DER- Delete to End of Row');\n this.writeScreen.clearToEndOfRow();\n this.outputDataUpdate();\n };\n\n _proto6.ccRU = function ccRU(nrRows) {\n // Roll-Up Captions-2,3,or 4 Rows\n this.logger.log(VerboseLevel.INFO, 'RU(' + nrRows + ') - Roll Up');\n this.writeScreen = this.displayedMemory;\n this.setMode('MODE_ROLL-UP');\n this.writeScreen.setRollUpRows(nrRows);\n };\n\n _proto6.ccFON = function ccFON() {\n // Flash On\n this.logger.log(VerboseLevel.INFO, 'FON - Flash On');\n this.writeScreen.setPen({\n flash: true\n });\n };\n\n _proto6.ccRDC = function ccRDC() {\n // Resume Direct Captioning (switch mode to PaintOn)\n this.logger.log(VerboseLevel.INFO, 'RDC - Resume Direct Captioning');\n this.setMode('MODE_PAINT-ON');\n };\n\n _proto6.ccTR = function ccTR() {\n // Text Restart in text mode (not supported, however)\n this.logger.log(VerboseLevel.INFO, 'TR');\n this.setMode('MODE_TEXT');\n };\n\n _proto6.ccRTD = function ccRTD() {\n // Resume Text Display in Text mode (not supported, however)\n this.logger.log(VerboseLevel.INFO, 'RTD');\n this.setMode('MODE_TEXT');\n };\n\n _proto6.ccEDM = function ccEDM() {\n // Erase Displayed Memory\n this.logger.log(VerboseLevel.INFO, 'EDM - Erase Displayed Memory');\n this.displayedMemory.reset();\n this.outputDataUpdate(true);\n };\n\n _proto6.ccCR = function ccCR() {\n // Carriage Return\n this.logger.log(VerboseLevel.INFO, 'CR - Carriage Return');\n this.writeScreen.rollUp();\n this.outputDataUpdate(true);\n };\n\n _proto6.ccENM = function ccENM() {\n // Erase Non-Displayed Memory\n this.logger.log(VerboseLevel.INFO, 'ENM - Erase Non-displayed Memory');\n this.nonDisplayedMemory.reset();\n };\n\n _proto6.ccEOC = function ccEOC() {\n // End of Caption (Flip Memories)\n this.logger.log(VerboseLevel.INFO, 'EOC - End Of Caption');\n\n if (this.mode === 'MODE_POP-ON') {\n var tmp = this.displayedMemory;\n this.displayedMemory = this.nonDisplayedMemory;\n this.nonDisplayedMemory = tmp;\n this.writeScreen = this.nonDisplayedMemory;\n this.logger.log(VerboseLevel.TEXT, 'DISP: ' + this.displayedMemory.getDisplayText());\n }\n\n this.outputDataUpdate(true);\n };\n\n _proto6.ccTO = function ccTO(nrCols) {\n // Tab Offset 1,2, or 3 columns\n this.logger.log(VerboseLevel.INFO, 'TO(' + nrCols + ') - Tab Offset');\n this.writeScreen.moveCursor(nrCols);\n };\n\n _proto6.ccMIDROW = function ccMIDROW(secondByte) {\n // Parse MIDROW command\n var styles = {\n flash: false\n };\n styles.underline = secondByte % 2 === 1;\n styles.italics = secondByte >= 0x2e;\n\n if (!styles.italics) {\n var colorIndex = Math.floor(secondByte / 2) - 0x10;\n var colors = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta'];\n styles.foreground = colors[colorIndex];\n } else {\n styles.foreground = 'white';\n }\n\n this.logger.log(VerboseLevel.INFO, 'MIDROW: ' + JSON.stringify(styles));\n this.writeScreen.setPen(styles);\n };\n\n _proto6.outputDataUpdate = function outputDataUpdate(dispatch) {\n if (dispatch === void 0) {\n dispatch = false;\n }\n\n var time = this.logger.time;\n\n if (time === null) {\n return;\n }\n\n if (this.outputFilter) {\n if (this.cueStartTime === null && !this.displayedMemory.isEmpty()) {\n // Start of a new cue\n this.cueStartTime = time;\n } else {\n if (!this.displayedMemory.equals(this.lastOutputScreen)) {\n this.outputFilter.newCue(this.cueStartTime, time, this.lastOutputScreen);\n\n if (dispatch && this.outputFilter.dispatchCue) {\n this.outputFilter.dispatchCue();\n }\n\n this.cueStartTime = this.displayedMemory.isEmpty() ? null : time;\n }\n }\n\n this.lastOutputScreen.copy(this.displayedMemory);\n }\n };\n\n _proto6.cueSplitAtTime = function cueSplitAtTime(t) {\n if (this.outputFilter) {\n if (!this.displayedMemory.isEmpty()) {\n if (this.outputFilter.newCue) {\n this.outputFilter.newCue(this.cueStartTime, t, this.displayedMemory);\n }\n\n this.cueStartTime = t;\n }\n }\n };\n\n return Cea608Channel;\n }();\n\n var Cea608Parser = /*#__PURE__*/function () {\n function Cea608Parser(field, out1, out2) {\n this.channels = void 0;\n this.currentChannel = 0;\n this.cmdHistory = void 0;\n this.logger = void 0;\n var logger = new CaptionsLogger();\n this.channels = [null, new Cea608Channel(field, out1, logger), new Cea608Channel(field + 1, out2, logger)];\n this.cmdHistory = createCmdHistory();\n this.logger = logger;\n }\n\n var _proto7 = Cea608Parser.prototype;\n\n _proto7.getHandler = function getHandler(channel) {\n return this.channels[channel].getHandler();\n };\n\n _proto7.setHandler = function setHandler(channel, newHandler) {\n this.channels[channel].setHandler(newHandler);\n }\n /**\n * Add data for time t in forms of list of bytes (unsigned ints). The bytes are treated as pairs.\n */\n ;\n\n _proto7.addData = function addData(time, byteList) {\n var cmdFound;\n var a;\n var b;\n var charsFound = false;\n this.logger.time = time;\n\n for (var i = 0; i < byteList.length; i += 2) {\n a = byteList[i] & 0x7f;\n b = byteList[i + 1] & 0x7f;\n\n if (a === 0 && b === 0) {\n continue;\n } else {\n this.logger.log(VerboseLevel.DATA, '[' + numArrayToHexArray([byteList[i], byteList[i + 1]]) + '] -> (' + numArrayToHexArray([a, b]) + ')');\n }\n\n cmdFound = this.parseCmd(a, b);\n\n if (!cmdFound) {\n cmdFound = this.parseMidrow(a, b);\n }\n\n if (!cmdFound) {\n cmdFound = this.parsePAC(a, b);\n }\n\n if (!cmdFound) {\n cmdFound = this.parseBackgroundAttributes(a, b);\n }\n\n if (!cmdFound) {\n charsFound = this.parseChars(a, b);\n\n if (charsFound) {\n var currChNr = this.currentChannel;\n\n if (currChNr && currChNr > 0) {\n var channel = this.channels[currChNr];\n channel.insertChars(charsFound);\n } else {\n this.logger.log(VerboseLevel.WARNING, 'No channel found yet. TEXT-MODE?');\n }\n }\n }\n\n if (!cmdFound && !charsFound) {\n this.logger.log(VerboseLevel.WARNING, \"Couldn't parse cleaned data \" + numArrayToHexArray([a, b]) + ' orig: ' + numArrayToHexArray([byteList[i], byteList[i + 1]]));\n }\n }\n }\n /**\n * Parse Command.\n * @returns {Boolean} Tells if a command was found\n */\n ;\n\n _proto7.parseCmd = function parseCmd(a, b) {\n var cmdHistory = this.cmdHistory;\n var cond1 = (a === 0x14 || a === 0x1c || a === 0x15 || a === 0x1d) && b >= 0x20 && b <= 0x2f;\n var cond2 = (a === 0x17 || a === 0x1f) && b >= 0x21 && b <= 0x23;\n\n if (!(cond1 || cond2)) {\n return false;\n }\n\n if (hasCmdRepeated(a, b, cmdHistory)) {\n setLastCmd(null, null, cmdHistory);\n this.logger.log(VerboseLevel.DEBUG, 'Repeated command (' + numArrayToHexArray([a, b]) + ') is dropped');\n return true;\n }\n\n var chNr = a === 0x14 || a === 0x15 || a === 0x17 ? 1 : 2;\n var channel = this.channels[chNr];\n\n if (a === 0x14 || a === 0x15 || a === 0x1c || a === 0x1d) {\n if (b === 0x20) {\n channel.ccRCL();\n } else if (b === 0x21) {\n channel.ccBS();\n } else if (b === 0x22) {\n channel.ccAOF();\n } else if (b === 0x23) {\n channel.ccAON();\n } else if (b === 0x24) {\n channel.ccDER();\n } else if (b === 0x25) {\n channel.ccRU(2);\n } else if (b === 0x26) {\n channel.ccRU(3);\n } else if (b === 0x27) {\n channel.ccRU(4);\n } else if (b === 0x28) {\n channel.ccFON();\n } else if (b === 0x29) {\n channel.ccRDC();\n } else if (b === 0x2a) {\n channel.ccTR();\n } else if (b === 0x2b) {\n channel.ccRTD();\n } else if (b === 0x2c) {\n channel.ccEDM();\n } else if (b === 0x2d) {\n channel.ccCR();\n } else if (b === 0x2e) {\n channel.ccENM();\n } else if (b === 0x2f) {\n channel.ccEOC();\n }\n } else {\n // a == 0x17 || a == 0x1F\n channel.ccTO(b - 0x20);\n }\n\n setLastCmd(a, b, cmdHistory);\n this.currentChannel = chNr;\n return true;\n }\n /**\n * Parse midrow styling command\n * @returns {Boolean}\n */\n ;\n\n _proto7.parseMidrow = function parseMidrow(a, b) {\n var chNr = 0;\n\n if ((a === 0x11 || a === 0x19) && b >= 0x20 && b <= 0x2f) {\n if (a === 0x11) {\n chNr = 1;\n } else {\n chNr = 2;\n }\n\n if (chNr !== this.currentChannel) {\n this.logger.log(VerboseLevel.ERROR, 'Mismatch channel in midrow parsing');\n return false;\n }\n\n var channel = this.channels[chNr];\n\n if (!channel) {\n return false;\n }\n\n channel.ccMIDROW(b);\n this.logger.log(VerboseLevel.DEBUG, 'MIDROW (' + numArrayToHexArray([a, b]) + ')');\n return true;\n }\n\n return false;\n }\n /**\n * Parse Preable Access Codes (Table 53).\n * @returns {Boolean} Tells if PAC found\n */\n ;\n\n _proto7.parsePAC = function parsePAC(a, b) {\n var row;\n var cmdHistory = this.cmdHistory;\n var case1 = (a >= 0x11 && a <= 0x17 || a >= 0x19 && a <= 0x1f) && b >= 0x40 && b <= 0x7f;\n var case2 = (a === 0x10 || a === 0x18) && b >= 0x40 && b <= 0x5f;\n\n if (!(case1 || case2)) {\n return false;\n }\n\n if (hasCmdRepeated(a, b, cmdHistory)) {\n setLastCmd(null, null, cmdHistory);\n return true; // Repeated commands are dropped (once)\n }\n\n var chNr = a <= 0x17 ? 1 : 2;\n\n if (b >= 0x40 && b <= 0x5f) {\n row = chNr === 1 ? rowsLowCh1[a] : rowsLowCh2[a];\n } else {\n // 0x60 <= b <= 0x7F\n row = chNr === 1 ? rowsHighCh1[a] : rowsHighCh2[a];\n }\n\n var channel = this.channels[chNr];\n\n if (!channel) {\n return false;\n }\n\n channel.setPAC(this.interpretPAC(row, b));\n setLastCmd(a, b, cmdHistory);\n this.currentChannel = chNr;\n return true;\n }\n /**\n * Interpret the second byte of the pac, and return the information.\n * @returns {Object} pacData with style parameters.\n */\n ;\n\n _proto7.interpretPAC = function interpretPAC(row, _byte3) {\n var pacIndex;\n var pacData = {\n color: null,\n italics: false,\n indent: null,\n underline: false,\n row: row\n };\n\n if (_byte3 > 0x5f) {\n pacIndex = _byte3 - 0x60;\n } else {\n pacIndex = _byte3 - 0x40;\n }\n\n pacData.underline = (pacIndex & 1) === 1;\n\n if (pacIndex <= 0xd) {\n pacData.color = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta', 'white'][Math.floor(pacIndex / 2)];\n } else if (pacIndex <= 0xf) {\n pacData.italics = true;\n pacData.color = 'white';\n } else {\n pacData.indent = Math.floor((pacIndex - 0x10) / 2) * 4;\n }\n\n return pacData; // Note that row has zero offset. The spec uses 1.\n }\n /**\n * Parse characters.\n * @returns An array with 1 to 2 codes corresponding to chars, if found. null otherwise.\n */\n ;\n\n _proto7.parseChars = function parseChars(a, b) {\n var channelNr;\n var charCodes = null;\n var charCode1 = null;\n\n if (a >= 0x19) {\n channelNr = 2;\n charCode1 = a - 8;\n } else {\n channelNr = 1;\n charCode1 = a;\n }\n\n if (charCode1 >= 0x11 && charCode1 <= 0x13) {\n // Special character\n var oneCode;\n\n if (charCode1 === 0x11) {\n oneCode = b + 0x50;\n } else if (charCode1 === 0x12) {\n oneCode = b + 0x70;\n } else {\n oneCode = b + 0x90;\n }\n\n this.logger.log(VerboseLevel.INFO, \"Special char '\" + getCharForByte(oneCode) + \"' in channel \" + channelNr);\n charCodes = [oneCode];\n } else if (a >= 0x20 && a <= 0x7f) {\n charCodes = b === 0 ? [a] : [a, b];\n }\n\n if (charCodes) {\n var hexCodes = numArrayToHexArray(charCodes);\n this.logger.log(VerboseLevel.DEBUG, 'Char codes = ' + hexCodes.join(','));\n setLastCmd(a, b, this.cmdHistory);\n }\n\n return charCodes;\n }\n /**\n * Parse extended background attributes as well as new foreground color black.\n * @returns {Boolean} Tells if background attributes are found\n */\n ;\n\n _proto7.parseBackgroundAttributes = function parseBackgroundAttributes(a, b) {\n var case1 = (a === 0x10 || a === 0x18) && b >= 0x20 && b <= 0x2f;\n var case2 = (a === 0x17 || a === 0x1f) && b >= 0x2d && b <= 0x2f;\n\n if (!(case1 || case2)) {\n return false;\n }\n\n var index;\n var bkgData = {};\n\n if (a === 0x10 || a === 0x18) {\n index = Math.floor((b - 0x20) / 2);\n bkgData.background = backgroundColors[index];\n\n if (b % 2 === 1) {\n bkgData.background = bkgData.background + '_semi';\n }\n } else if (b === 0x2d) {\n bkgData.background = 'transparent';\n } else {\n bkgData.foreground = 'black';\n\n if (b === 0x2f) {\n bkgData.underline = true;\n }\n }\n\n var chNr = a <= 0x17 ? 1 : 2;\n var channel = this.channels[chNr];\n channel.setBkgData(bkgData);\n setLastCmd(a, b, this.cmdHistory);\n return true;\n }\n /**\n * Reset state of parser and its channels.\n */\n ;\n\n _proto7.reset = function reset() {\n for (var i = 0; i < Object.keys(this.channels).length; i++) {\n var channel = this.channels[i];\n\n if (channel) {\n channel.reset();\n }\n }\n\n this.cmdHistory = createCmdHistory();\n }\n /**\n * Trigger the generation of a cue, and the start of a new one if displayScreens are not empty.\n */\n ;\n\n _proto7.cueSplitAtTime = function cueSplitAtTime(t) {\n for (var i = 0; i < this.channels.length; i++) {\n var channel = this.channels[i];\n\n if (channel) {\n channel.cueSplitAtTime(t);\n }\n }\n };\n\n return Cea608Parser;\n }();\n\n function setLastCmd(a, b, cmdHistory) {\n cmdHistory.a = a;\n cmdHistory.b = b;\n }\n\n function hasCmdRepeated(a, b, cmdHistory) {\n return cmdHistory.a === a && cmdHistory.b === b;\n }\n\n function createCmdHistory() {\n return {\n a: null,\n b: null\n };\n }\n /* harmony default export */\n\n\n __webpack_exports__[\"default\"] = Cea608Parser;\n /***/\n },\n\n /***/\n \"./src/utils/codecs.ts\":\n /*!*****************************!*\\\n !*** ./src/utils/codecs.ts ***!\n \\*****************************/\n\n /*! exports provided: isCodecType, isCodecSupportedInMp4 */\n\n /***/\n function srcUtilsCodecsTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"isCodecType\", function () {\n return isCodecType;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"isCodecSupportedInMp4\", function () {\n return isCodecSupportedInMp4;\n }); // from http://mp4ra.org/codecs.html\n\n\n var sampleEntryCodesISO = {\n audio: {\n a3ds: true,\n 'ac-3': true,\n 'ac-4': true,\n alac: true,\n alaw: true,\n dra1: true,\n 'dts+': true,\n 'dts-': true,\n dtsc: true,\n dtse: true,\n dtsh: true,\n 'ec-3': true,\n enca: true,\n g719: true,\n g726: true,\n m4ae: true,\n mha1: true,\n mha2: true,\n mhm1: true,\n mhm2: true,\n mlpa: true,\n mp4a: true,\n 'raw ': true,\n Opus: true,\n samr: true,\n sawb: true,\n sawp: true,\n sevc: true,\n sqcp: true,\n ssmv: true,\n twos: true,\n ulaw: true\n },\n video: {\n avc1: true,\n avc2: true,\n avc3: true,\n avc4: true,\n avcp: true,\n av01: true,\n drac: true,\n dvav: true,\n dvhe: true,\n encv: true,\n hev1: true,\n hvc1: true,\n mjp2: true,\n mp4v: true,\n mvc1: true,\n mvc2: true,\n mvc3: true,\n mvc4: true,\n resv: true,\n rv60: true,\n s263: true,\n svc1: true,\n svc2: true,\n 'vc-1': true,\n vp08: true,\n vp09: true\n },\n text: {\n stpp: true,\n wvtt: true\n }\n };\n\n function isCodecType(codec, type) {\n var typeCodes = sampleEntryCodesISO[type];\n return !!typeCodes && typeCodes[codec.slice(0, 4)] === true;\n }\n\n function isCodecSupportedInMp4(codec, type) {\n return MediaSource.isTypeSupported((type || 'video') + \"/mp4;codecs=\\\"\" + codec + \"\\\"\");\n }\n /***/\n\n },\n\n /***/\n \"./src/utils/cues.ts\":\n /*!***************************!*\\\n !*** ./src/utils/cues.ts ***!\n \\***************************/\n\n /*! exports provided: default */\n\n /***/\n function srcUtilsCuesTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony import */\n\n\n var _vttparser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./vttparser */\n \"./src/utils/vttparser.ts\");\n /* harmony import */\n\n\n var _webvtt_parser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ./webvtt-parser */\n \"./src/utils/webvtt-parser.ts\");\n /* harmony import */\n\n\n var _texttrack_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ./texttrack-utils */\n \"./src/utils/texttrack-utils.ts\");\n\n var WHITESPACE_CHAR = /\\s/;\n var Cues = {\n newCue: function newCue(track, startTime, endTime, captionScreen) {\n var result = [];\n var row; // the type data states this is VTTCue, but it can potentially be a TextTrackCue on old browsers\n\n var cue;\n var indenting;\n var indent;\n var text;\n var Cue = self.VTTCue || self.TextTrackCue;\n\n for (var r = 0; r < captionScreen.rows.length; r++) {\n row = captionScreen.rows[r];\n indenting = true;\n indent = 0;\n text = '';\n\n if (!row.isEmpty()) {\n for (var c = 0; c < row.chars.length; c++) {\n if (WHITESPACE_CHAR.test(row.chars[c].uchar) && indenting) {\n indent++;\n } else {\n text += row.chars[c].uchar;\n indenting = false;\n }\n } // To be used for cleaning-up orphaned roll-up captions\n\n\n row.cueStartTime = startTime; // Give a slight bump to the endTime if it's equal to startTime to avoid a SyntaxError in IE\n\n if (startTime === endTime) {\n endTime += 0.0001;\n }\n\n if (indent >= 16) {\n indent--;\n } else {\n indent++;\n }\n\n var cueText = Object(_vttparser__WEBPACK_IMPORTED_MODULE_0__[\"fixLineBreaks\"])(text.trim());\n var id = Object(_webvtt_parser__WEBPACK_IMPORTED_MODULE_1__[\"generateCueId\"])(startTime, endTime, cueText); // If this cue already exists in the track do not push it\n\n if (!track || !track.cues || !track.cues.getCueById(id)) {\n cue = new Cue(startTime, endTime, cueText);\n cue.id = id;\n cue.line = r + 1;\n cue.align = 'left'; // Clamp the position between 10 and 80 percent (CEA-608 PAC indent code)\n // https://dvcs.w3.org/hg/text-tracks/raw-file/default/608toVTT/608toVTT.html#positioning-in-cea-608\n // Firefox throws an exception and captions break with out of bounds 0-100 values\n\n cue.position = 10 + Math.min(80, Math.floor(indent * 8 / 32) * 10);\n result.push(cue);\n }\n }\n }\n\n if (track && result.length) {\n // Sort bottom cues in reverse order so that they render in line order when overlapping in Chrome\n result.sort(function (cueA, cueB) {\n if (cueA.line === 'auto' || cueB.line === 'auto') {\n return 0;\n }\n\n if (cueA.line > 8 && cueB.line > 8) {\n return cueB.line - cueA.line;\n }\n\n return cueA.line - cueB.line;\n });\n result.forEach(function (cue) {\n return Object(_texttrack_utils__WEBPACK_IMPORTED_MODULE_2__[\"addCueToTrack\"])(track, cue);\n });\n }\n\n return result;\n }\n };\n /* harmony default export */\n\n __webpack_exports__[\"default\"] = Cues;\n /***/\n },\n\n /***/\n \"./src/utils/discontinuities.ts\":\n /*!**************************************!*\\\n !*** ./src/utils/discontinuities.ts ***!\n \\**************************************/\n\n /*! exports provided: findFirstFragWithCC, shouldAlignOnDiscontinuities, findDiscontinuousReferenceFrag, adjustSlidingStart, alignStream, alignPDT, alignFragmentByPDTDelta, alignMediaPlaylistByPDT */\n\n /***/\n function srcUtilsDiscontinuitiesTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"findFirstFragWithCC\", function () {\n return findFirstFragWithCC;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"shouldAlignOnDiscontinuities\", function () {\n return shouldAlignOnDiscontinuities;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"findDiscontinuousReferenceFrag\", function () {\n return findDiscontinuousReferenceFrag;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"adjustSlidingStart\", function () {\n return adjustSlidingStart;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"alignStream\", function () {\n return alignStream;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"alignPDT\", function () {\n return alignPDT;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"alignFragmentByPDTDelta\", function () {\n return alignFragmentByPDTDelta;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"alignMediaPlaylistByPDT\", function () {\n return alignMediaPlaylistByPDT;\n });\n /* harmony import */\n\n\n var _home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./src/polyfills/number */\n \"./src/polyfills/number.ts\");\n /* harmony import */\n\n\n var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ./logger */\n \"./src/utils/logger.ts\");\n /* harmony import */\n\n\n var _controller_level_helper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ../controller/level-helper */\n \"./src/controller/level-helper.ts\");\n\n function findFirstFragWithCC(fragments, cc) {\n var firstFrag = null;\n\n for (var i = 0, len = fragments.length; i < len; i++) {\n var currentFrag = fragments[i];\n\n if (currentFrag && currentFrag.cc === cc) {\n firstFrag = currentFrag;\n break;\n }\n }\n\n return firstFrag;\n }\n\n function shouldAlignOnDiscontinuities(lastFrag, lastLevel, details) {\n if (lastLevel.details) {\n if (details.endCC > details.startCC || lastFrag && lastFrag.cc < details.startCC) {\n return true;\n }\n }\n\n return false;\n } // Find the first frag in the previous level which matches the CC of the first frag of the new level\n\n\n function findDiscontinuousReferenceFrag(prevDetails, curDetails) {\n var prevFrags = prevDetails.fragments;\n var curFrags = curDetails.fragments;\n\n if (!curFrags.length || !prevFrags.length) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"logger\"].log('No fragments to align');\n\n return;\n }\n\n var prevStartFrag = findFirstFragWithCC(prevFrags, curFrags[0].cc);\n\n if (!prevStartFrag || prevStartFrag && !prevStartFrag.startPTS) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"logger\"].log('No frag in previous level to align on');\n\n return;\n }\n\n return prevStartFrag;\n }\n\n function adjustFragmentStart(frag, sliding) {\n if (frag) {\n var start = frag.start + sliding;\n frag.start = frag.startPTS = start;\n frag.endPTS = start + frag.duration;\n }\n }\n\n function adjustSlidingStart(sliding, details) {\n // Update segments\n var fragments = details.fragments;\n\n for (var i = 0, len = fragments.length; i < len; i++) {\n adjustFragmentStart(fragments[i], sliding);\n } // Update LL-HLS parts at the end of the playlist\n\n\n if (details.fragmentHint) {\n adjustFragmentStart(details.fragmentHint, sliding);\n }\n\n details.alignedSliding = true;\n }\n /**\n * Using the parameters of the last level, this function computes PTS' of the new fragments so that they form a\n * contiguous stream with the last fragments.\n * The PTS of a fragment lets Hls.js know where it fits into a stream - by knowing every PTS, we know which fragment to\n * download at any given time. PTS is normally computed when the fragment is demuxed, so taking this step saves us time\n * and an extra download.\n * @param lastFrag\n * @param lastLevel\n * @param details\n */\n\n\n function alignStream(lastFrag, lastLevel, details) {\n if (!lastLevel) {\n return;\n }\n\n alignDiscontinuities(lastFrag, details, lastLevel);\n\n if (!details.alignedSliding && lastLevel.details) {\n // If the PTS wasn't figured out via discontinuity sequence that means there was no CC increase within the level.\n // Aligning via Program Date Time should therefore be reliable, since PDT should be the same within the same\n // discontinuity sequence.\n alignPDT(details, lastLevel.details);\n }\n\n if (!details.alignedSliding && lastLevel.details && !details.skippedSegments) {\n // Try to align on sn so that we pick a better start fragment.\n // Do not perform this on playlists with delta updates as this is only to align levels on switch\n // and adjustSliding only adjusts fragments after skippedSegments.\n Object(_controller_level_helper__WEBPACK_IMPORTED_MODULE_2__[\"adjustSliding\"])(lastLevel.details, details);\n }\n }\n /**\n * Computes the PTS if a new level's fragments using the PTS of a fragment in the last level which shares the same\n * discontinuity sequence.\n * @param lastFrag - The last Fragment which shares the same discontinuity sequence\n * @param lastLevel - The details of the last loaded level\n * @param details - The details of the new level\n */\n\n\n function alignDiscontinuities(lastFrag, details, lastLevel) {\n if (shouldAlignOnDiscontinuities(lastFrag, lastLevel, details)) {\n var referenceFrag = findDiscontinuousReferenceFrag(lastLevel.details, details);\n\n if (referenceFrag && Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(referenceFrag.start)) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"logger\"].log(\"Adjusting PTS using last level due to CC increase within current level \" + details.url);\n\n adjustSlidingStart(referenceFrag.start, details);\n }\n }\n }\n /**\n * Computes the PTS of a new level's fragments using the difference in Program Date Time from the last level.\n * @param details - The details of the new level\n * @param lastDetails - The details of the last loaded level\n */\n\n\n function alignPDT(details, lastDetails) {\n // This check protects the unsafe \"!\" usage below for null program date time access.\n if (!lastDetails.fragments.length || !details.hasProgramDateTime || !lastDetails.hasProgramDateTime) {\n return;\n } // if last level sliding is 1000 and its first frag PROGRAM-DATE-TIME is 2017-08-20 1:10:00 AM\n // and if new details first frag PROGRAM DATE-TIME is 2017-08-20 1:10:08 AM\n // then we can deduce that playlist B sliding is 1000+8 = 1008s\n\n\n var lastPDT = lastDetails.fragments[0].programDateTime; // hasProgramDateTime check above makes this safe.\n\n var newPDT = details.fragments[0].programDateTime; // date diff is in ms. frag.start is in seconds\n\n var sliding = (newPDT - lastPDT) / 1000 + lastDetails.fragments[0].start;\n\n if (sliding && Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(sliding)) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"logger\"].log(\"Adjusting PTS using programDateTime delta \" + (newPDT - lastPDT) + \"ms, sliding:\" + sliding.toFixed(3) + \" \" + details.url + \" \");\n\n adjustSlidingStart(sliding, details);\n }\n }\n\n function alignFragmentByPDTDelta(frag, delta) {\n var programDateTime = frag.programDateTime;\n if (!programDateTime) return;\n var start = (programDateTime - delta) / 1000;\n frag.start = frag.startPTS = start;\n frag.endPTS = start + frag.duration;\n }\n /**\n * Ensures appropriate time-alignment between renditions based on PDT. Unlike `alignPDT`, which adjusts\n * the timeline based on the delta between PDTs of the 0th fragment of two playlists/`LevelDetails`,\n * this function assumes the timelines represented in `refDetails` are accurate, including the PDTs,\n * and uses the \"wallclock\"/PDT timeline as a cross-reference to `details`, adjusting the presentation\n * times/timelines of `details` accordingly.\n * Given the asynchronous nature of fetches and initial loads of live `main` and audio/subtitle tracks,\n * the primary purpose of this function is to ensure the \"local timelines\" of audio/subtitle tracks\n * are aligned to the main/video timeline, using PDT as the cross-reference/\"anchor\" that should\n * be consistent across playlists, per the HLS spec.\n * @param details - The details of the rendition you'd like to time-align (e.g. an audio rendition).\n * @param refDetails - The details of the reference rendition with start and PDT times for alignment.\n */\n\n\n function alignMediaPlaylistByPDT(details, refDetails) {\n // This check protects the unsafe \"!\" usage below for null program date time access.\n if (!refDetails.fragments.length || !details.hasProgramDateTime || !refDetails.hasProgramDateTime) {\n return;\n }\n\n var refPDT = refDetails.fragments[0].programDateTime; // hasProgramDateTime check above makes this safe.\n\n var refStart = refDetails.fragments[0].start; // Use the delta between the reference details' presentation timeline's start time and its PDT\n // to align the other rendtion's timeline.\n\n var delta = refPDT - refStart * 1000; // Per spec: \"If any Media Playlist in a Master Playlist contains an EXT-X-PROGRAM-DATE-TIME tag, then all\n // Media Playlists in that Master Playlist MUST contain EXT-X-PROGRAM-DATE-TIME tags with consistent mappings\n // of date and time to media timestamps.\"\n // So we should be able to use each rendition's PDT as a reference time and use the delta to compute our relevant\n // start and end times.\n // NOTE: This code assumes each level/details timelines have already been made \"internally consistent\"\n\n details.fragments.forEach(function (frag) {\n alignFragmentByPDTDelta(frag, delta);\n });\n\n if (details.fragmentHint) {\n alignFragmentByPDTDelta(details.fragmentHint, delta);\n }\n\n details.alignedSliding = true;\n }\n /***/\n\n },\n\n /***/\n \"./src/utils/ewma-bandwidth-estimator.ts\":\n /*!***********************************************!*\\\n !*** ./src/utils/ewma-bandwidth-estimator.ts ***!\n \\***********************************************/\n\n /*! exports provided: default */\n\n /***/\n function srcUtilsEwmaBandwidthEstimatorTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony import */\n\n\n var _utils_ewma__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ../utils/ewma */\n \"./src/utils/ewma.ts\");\n /*\n * EWMA Bandwidth Estimator\n * - heavily inspired from shaka-player\n * Tracks bandwidth samples and estimates available bandwidth.\n * Based on the minimum of two exponentially-weighted moving averages with\n * different half-lives.\n */\n\n\n var EwmaBandWidthEstimator = /*#__PURE__*/function () {\n function EwmaBandWidthEstimator(slow, fast, defaultEstimate) {\n this.defaultEstimate_ = void 0;\n this.minWeight_ = void 0;\n this.minDelayMs_ = void 0;\n this.slow_ = void 0;\n this.fast_ = void 0;\n this.defaultEstimate_ = defaultEstimate;\n this.minWeight_ = 0.001;\n this.minDelayMs_ = 50;\n this.slow_ = new _utils_ewma__WEBPACK_IMPORTED_MODULE_0__[\"default\"](slow);\n this.fast_ = new _utils_ewma__WEBPACK_IMPORTED_MODULE_0__[\"default\"](fast);\n }\n\n var _proto = EwmaBandWidthEstimator.prototype;\n\n _proto.update = function update(slow, fast) {\n var slow_ = this.slow_,\n fast_ = this.fast_;\n\n if (this.slow_.halfLife !== slow) {\n this.slow_ = new _utils_ewma__WEBPACK_IMPORTED_MODULE_0__[\"default\"](slow, slow_.getEstimate(), slow_.getTotalWeight());\n }\n\n if (this.fast_.halfLife !== fast) {\n this.fast_ = new _utils_ewma__WEBPACK_IMPORTED_MODULE_0__[\"default\"](fast, fast_.getEstimate(), fast_.getTotalWeight());\n }\n };\n\n _proto.sample = function sample(durationMs, numBytes) {\n durationMs = Math.max(durationMs, this.minDelayMs_);\n var numBits = 8 * numBytes; // weight is duration in seconds\n\n var durationS = durationMs / 1000; // value is bandwidth in bits/s\n\n var bandwidthInBps = numBits / durationS;\n this.fast_.sample(durationS, bandwidthInBps);\n this.slow_.sample(durationS, bandwidthInBps);\n };\n\n _proto.canEstimate = function canEstimate() {\n var fast = this.fast_;\n return fast && fast.getTotalWeight() >= this.minWeight_;\n };\n\n _proto.getEstimate = function getEstimate() {\n if (this.canEstimate()) {\n // console.log('slow estimate:'+ Math.round(this.slow_.getEstimate()));\n // console.log('fast estimate:'+ Math.round(this.fast_.getEstimate()));\n // Take the minimum of these two estimates. This should have the effect of\n // adapting down quickly, but up more slowly.\n return Math.min(this.fast_.getEstimate(), this.slow_.getEstimate());\n } else {\n return this.defaultEstimate_;\n }\n };\n\n _proto.destroy = function destroy() {};\n\n return EwmaBandWidthEstimator;\n }();\n /* harmony default export */\n\n\n __webpack_exports__[\"default\"] = EwmaBandWidthEstimator;\n /***/\n },\n\n /***/\n \"./src/utils/ewma.ts\":\n /*!***************************!*\\\n !*** ./src/utils/ewma.ts ***!\n \\***************************/\n\n /*! exports provided: default */\n\n /***/\n function srcUtilsEwmaTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /*\n * compute an Exponential Weighted moving average\n * - https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average\n * - heavily inspired from shaka-player\n */\n\n\n var EWMA = /*#__PURE__*/function () {\n // About half of the estimated value will be from the last |halfLife| samples by weight.\n function EWMA(halfLife, estimate, weight) {\n if (estimate === void 0) {\n estimate = 0;\n }\n\n if (weight === void 0) {\n weight = 0;\n }\n\n this.halfLife = void 0;\n this.alpha_ = void 0;\n this.estimate_ = void 0;\n this.totalWeight_ = void 0;\n this.halfLife = halfLife; // Larger values of alpha expire historical data more slowly.\n\n this.alpha_ = halfLife ? Math.exp(Math.log(0.5) / halfLife) : 0;\n this.estimate_ = estimate;\n this.totalWeight_ = weight;\n }\n\n var _proto = EWMA.prototype;\n\n _proto.sample = function sample(weight, value) {\n var adjAlpha = Math.pow(this.alpha_, weight);\n this.estimate_ = value * (1 - adjAlpha) + adjAlpha * this.estimate_;\n this.totalWeight_ += weight;\n };\n\n _proto.getTotalWeight = function getTotalWeight() {\n return this.totalWeight_;\n };\n\n _proto.getEstimate = function getEstimate() {\n if (this.alpha_) {\n var zeroFactor = 1 - Math.pow(this.alpha_, this.totalWeight_);\n\n if (zeroFactor) {\n return this.estimate_ / zeroFactor;\n }\n }\n\n return this.estimate_;\n };\n\n return EWMA;\n }();\n /* harmony default export */\n\n\n __webpack_exports__[\"default\"] = EWMA;\n /***/\n },\n\n /***/\n \"./src/utils/fetch-loader.ts\":\n /*!***********************************!*\\\n !*** ./src/utils/fetch-loader.ts ***!\n \\***********************************/\n\n /*! exports provided: fetchSupported, default */\n\n /***/\n function srcUtilsFetchLoaderTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"fetchSupported\", function () {\n return fetchSupported;\n });\n /* harmony import */\n\n\n var _home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./src/polyfills/number */\n \"./src/polyfills/number.ts\");\n /* harmony import */\n\n\n var _loader_load_stats__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ../loader/load-stats */\n \"./src/loader/load-stats.ts\");\n /* harmony import */\n\n\n var _demux_chunk_cache__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ../demux/chunk-cache */\n \"./src/demux/chunk-cache.ts\");\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n }\n\n function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n }\n\n function _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n }\n\n function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n }\n\n function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n }\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n function fetchSupported() {\n if ( // @ts-ignore\n self.fetch && self.AbortController && self.ReadableStream && self.Request) {\n try {\n new self.ReadableStream({}); // eslint-disable-line no-new\n\n return true;\n } catch (e) {\n /* noop */\n }\n }\n\n return false;\n }\n\n var FetchLoader = /*#__PURE__*/function () {\n function FetchLoader(config\n /* HlsConfig */\n ) {\n this.fetchSetup = void 0;\n this.requestTimeout = void 0;\n this.request = void 0;\n this.response = void 0;\n this.controller = void 0;\n this.context = void 0;\n this.config = null;\n this.callbacks = null;\n this.stats = void 0;\n this.loader = null;\n this.fetchSetup = config.fetchSetup || getRequest;\n this.controller = new self.AbortController();\n this.stats = new _loader_load_stats__WEBPACK_IMPORTED_MODULE_1__[\"LoadStats\"]();\n }\n\n var _proto = FetchLoader.prototype;\n\n _proto.destroy = function destroy() {\n this.loader = this.callbacks = null;\n this.abortInternal();\n };\n\n _proto.abortInternal = function abortInternal() {\n var response = this.response;\n\n if (!response || !response.ok) {\n this.stats.aborted = true;\n this.controller.abort();\n }\n };\n\n _proto.abort = function abort() {\n var _this$callbacks;\n\n this.abortInternal();\n\n if ((_this$callbacks = this.callbacks) !== null && _this$callbacks !== void 0 && _this$callbacks.onAbort) {\n this.callbacks.onAbort(this.stats, this.context, this.response);\n }\n };\n\n _proto.load = function load(context, config, callbacks) {\n var _this = this;\n\n var stats = this.stats;\n\n if (stats.loading.start) {\n throw new Error('Loader can only be used once.');\n }\n\n stats.loading.start = self.performance.now();\n var initParams = getRequestParameters(context, this.controller.signal);\n var onProgress = callbacks.onProgress;\n var isArrayBuffer = context.responseType === 'arraybuffer';\n var LENGTH = isArrayBuffer ? 'byteLength' : 'length';\n this.context = context;\n this.config = config;\n this.callbacks = callbacks;\n this.request = this.fetchSetup(context, initParams);\n self.clearTimeout(this.requestTimeout);\n this.requestTimeout = self.setTimeout(function () {\n _this.abortInternal();\n\n callbacks.onTimeout(stats, context, _this.response);\n }, config.timeout);\n self.fetch(this.request).then(function (response) {\n _this.response = _this.loader = response;\n\n if (!response.ok) {\n var status = response.status,\n statusText = response.statusText;\n throw new FetchError(statusText || 'fetch, bad network response', status, response);\n }\n\n stats.loading.first = Math.max(self.performance.now(), stats.loading.start);\n stats.total = parseInt(response.headers.get('Content-Length') || '0');\n\n if (onProgress && Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(config.highWaterMark)) {\n return _this.loadProgressively(response, stats, context, config.highWaterMark, onProgress);\n }\n\n if (isArrayBuffer) {\n return response.arrayBuffer();\n }\n\n return response.text();\n }).then(function (responseData) {\n var response = _this.response;\n self.clearTimeout(_this.requestTimeout);\n stats.loading.end = Math.max(self.performance.now(), stats.loading.first);\n stats.loaded = stats.total = responseData[LENGTH];\n var loaderResponse = {\n url: response.url,\n data: responseData\n };\n\n if (onProgress && !Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(config.highWaterMark)) {\n onProgress(stats, context, responseData, response);\n }\n\n callbacks.onSuccess(loaderResponse, stats, context, response);\n }).catch(function (error) {\n self.clearTimeout(_this.requestTimeout);\n\n if (stats.aborted) {\n return;\n } // CORS errors result in an undefined code. Set it to 0 here to align with XHR's behavior\n\n\n var code = error.code || 0;\n callbacks.onError({\n code: code,\n text: error.message\n }, context, error.details);\n });\n };\n\n _proto.getCacheAge = function getCacheAge() {\n var result = null;\n\n if (this.response) {\n var ageHeader = this.response.headers.get('age');\n result = ageHeader ? parseFloat(ageHeader) : null;\n }\n\n return result;\n };\n\n _proto.loadProgressively = function loadProgressively(response, stats, context, highWaterMark, onProgress) {\n if (highWaterMark === void 0) {\n highWaterMark = 0;\n }\n\n var chunkCache = new _demux_chunk_cache__WEBPACK_IMPORTED_MODULE_2__[\"default\"]();\n var reader = response.body.getReader();\n\n var pump = function pump() {\n return reader.read().then(function (data) {\n if (data.done) {\n if (chunkCache.dataLength) {\n onProgress(stats, context, chunkCache.flush(), response);\n }\n\n return Promise.resolve(new ArrayBuffer(0));\n }\n\n var chunk = data.value;\n var len = chunk.length;\n stats.loaded += len;\n\n if (len < highWaterMark || chunkCache.dataLength) {\n // The current chunk is too small to to be emitted or the cache already has data\n // Push it to the cache\n chunkCache.push(chunk);\n\n if (chunkCache.dataLength >= highWaterMark) {\n // flush in order to join the typed arrays\n onProgress(stats, context, chunkCache.flush(), response);\n }\n } else {\n // If there's nothing cached already, and the chache is large enough\n // just emit the progress event\n onProgress(stats, context, chunk, response);\n }\n\n return pump();\n }).catch(function () {\n /* aborted */\n return Promise.reject();\n });\n };\n\n return pump();\n };\n\n return FetchLoader;\n }();\n\n function getRequestParameters(context, signal) {\n var initParams = {\n method: 'GET',\n mode: 'cors',\n credentials: 'same-origin',\n signal: signal,\n headers: new self.Headers(_extends({}, context.headers))\n };\n\n if (context.rangeEnd) {\n initParams.headers.set('Range', 'bytes=' + context.rangeStart + '-' + String(context.rangeEnd - 1));\n }\n\n return initParams;\n }\n\n function getRequest(context, initParams) {\n return new self.Request(context.url, initParams);\n }\n\n var FetchError = /*#__PURE__*/function (_Error) {\n _inheritsLoose(FetchError, _Error);\n\n function FetchError(message, code, details) {\n var _this2;\n\n _this2 = _Error.call(this, message) || this;\n _this2.code = void 0;\n _this2.details = void 0;\n _this2.code = code;\n _this2.details = details;\n return _this2;\n }\n\n return FetchError;\n }( /*#__PURE__*/_wrapNativeSuper(Error));\n /* harmony default export */\n\n\n __webpack_exports__[\"default\"] = FetchLoader;\n /***/\n },\n\n /***/\n \"./src/utils/imsc1-ttml-parser.ts\":\n /*!****************************************!*\\\n !*** ./src/utils/imsc1-ttml-parser.ts ***!\n \\****************************************/\n\n /*! exports provided: IMSC1_CODEC, parseIMSC1 */\n\n /***/\n function srcUtilsImsc1TtmlParserTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"IMSC1_CODEC\", function () {\n return IMSC1_CODEC;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"parseIMSC1\", function () {\n return parseIMSC1;\n });\n /* harmony import */\n\n\n var _mp4_tools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./mp4-tools */\n \"./src/utils/mp4-tools.ts\");\n /* harmony import */\n\n\n var _vttparser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ./vttparser */\n \"./src/utils/vttparser.ts\");\n /* harmony import */\n\n\n var _vttcue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ./vttcue */\n \"./src/utils/vttcue.ts\");\n /* harmony import */\n\n\n var _demux_id3__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\n /*! ../demux/id3 */\n \"./src/demux/id3.ts\");\n /* harmony import */\n\n\n var _timescale_conversion__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\n /*! ./timescale-conversion */\n \"./src/utils/timescale-conversion.ts\");\n /* harmony import */\n\n\n var _webvtt_parser__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(\n /*! ./webvtt-parser */\n \"./src/utils/webvtt-parser.ts\");\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n var IMSC1_CODEC = 'stpp.ttml.im1t'; // Time format: h:m:s:frames(.subframes)\n\n var HMSF_REGEX = /^(\\d{2,}):(\\d{2}):(\\d{2}):(\\d{2})\\.?(\\d+)?$/; // Time format: hours, minutes, seconds, milliseconds, frames, ticks\n\n var TIME_UNIT_REGEX = /^(\\d*(?:\\.\\d*)?)(h|m|s|ms|f|t)$/;\n var textAlignToLineAlign = {\n left: 'start',\n center: 'center',\n right: 'end',\n start: 'start',\n end: 'end'\n };\n\n function parseIMSC1(payload, initPTS, timescale, callBack, errorCallBack) {\n var results = Object(_mp4_tools__WEBPACK_IMPORTED_MODULE_0__[\"findBox\"])(new Uint8Array(payload), ['mdat']);\n\n if (results.length === 0) {\n errorCallBack(new Error('Could not parse IMSC1 mdat'));\n return;\n }\n\n var mdat = results[0];\n var ttml = Object(_demux_id3__WEBPACK_IMPORTED_MODULE_3__[\"utf8ArrayToStr\"])(new Uint8Array(payload, mdat.start, mdat.end - mdat.start));\n var syncTime = Object(_timescale_conversion__WEBPACK_IMPORTED_MODULE_4__[\"toTimescaleFromScale\"])(initPTS, 1, timescale);\n\n try {\n callBack(parseTTML(ttml, syncTime));\n } catch (error) {\n errorCallBack(error);\n }\n }\n\n function parseTTML(ttml, syncTime) {\n var parser = new DOMParser();\n var xmlDoc = parser.parseFromString(ttml, 'text/xml');\n var tt = xmlDoc.getElementsByTagName('tt')[0];\n\n if (!tt) {\n throw new Error('Invalid ttml');\n }\n\n var defaultRateInfo = {\n frameRate: 30,\n subFrameRate: 1,\n frameRateMultiplier: 0,\n tickRate: 0\n };\n var rateInfo = Object.keys(defaultRateInfo).reduce(function (result, key) {\n result[key] = tt.getAttribute(\"ttp:\" + key) || defaultRateInfo[key];\n return result;\n }, {});\n var trim = tt.getAttribute('xml:space') !== 'preserve';\n var styleElements = collectionToDictionary(getElementCollection(tt, 'styling', 'style'));\n var regionElements = collectionToDictionary(getElementCollection(tt, 'layout', 'region'));\n var cueElements = getElementCollection(tt, 'body', '[begin]');\n return [].map.call(cueElements, function (cueElement) {\n var cueText = getTextContent(cueElement, trim);\n\n if (!cueText || !cueElement.hasAttribute('begin')) {\n return null;\n }\n\n var startTime = parseTtmlTime(cueElement.getAttribute('begin'), rateInfo);\n var duration = parseTtmlTime(cueElement.getAttribute('dur'), rateInfo);\n var endTime = parseTtmlTime(cueElement.getAttribute('end'), rateInfo);\n\n if (startTime === null) {\n throw timestampParsingError(cueElement);\n }\n\n if (endTime === null) {\n if (duration === null) {\n throw timestampParsingError(cueElement);\n }\n\n endTime = startTime + duration;\n }\n\n var cue = new _vttcue__WEBPACK_IMPORTED_MODULE_2__[\"default\"](startTime - syncTime, endTime - syncTime, cueText);\n cue.id = Object(_webvtt_parser__WEBPACK_IMPORTED_MODULE_5__[\"generateCueId\"])(cue.startTime, cue.endTime, cue.text);\n var region = regionElements[cueElement.getAttribute('region')];\n var style = styleElements[cueElement.getAttribute('style')]; // TODO: Add regions to track and cue (origin and extend)\n // These values are hard-coded (for now) to simulate region settings in the demo\n\n cue.position = 10;\n cue.size = 80; // Apply styles to cue\n\n var styles = getTtmlStyles(region, style);\n var textAlign = styles.textAlign;\n\n if (textAlign) {\n // cue.positionAlign not settable in FF~2016\n var lineAlign = textAlignToLineAlign[textAlign];\n\n if (lineAlign) {\n cue.lineAlign = lineAlign;\n }\n\n cue.align = textAlign;\n }\n\n _extends(cue, styles);\n\n return cue;\n }).filter(function (cue) {\n return cue !== null;\n });\n }\n\n function getElementCollection(fromElement, parentName, childName) {\n var parent = fromElement.getElementsByTagName(parentName)[0];\n\n if (parent) {\n return [].slice.call(parent.querySelectorAll(childName));\n }\n\n return [];\n }\n\n function collectionToDictionary(elementsWithId) {\n return elementsWithId.reduce(function (dict, element) {\n var id = element.getAttribute('xml:id');\n\n if (id) {\n dict[id] = element;\n }\n\n return dict;\n }, {});\n }\n\n function getTextContent(element, trim) {\n return [].slice.call(element.childNodes).reduce(function (str, node, i) {\n var _node$childNodes;\n\n if (node.nodeName === 'br' && i) {\n return str + '\\n';\n }\n\n if ((_node$childNodes = node.childNodes) !== null && _node$childNodes !== void 0 && _node$childNodes.length) {\n return getTextContent(node, trim);\n } else if (trim) {\n return str + node.textContent.trim().replace(/\\s+/g, ' ');\n }\n\n return str + node.textContent;\n }, '');\n }\n\n function getTtmlStyles(region, style) {\n var ttsNs = 'http://www.w3.org/ns/ttml#styling';\n var styleAttributes = ['displayAlign', 'textAlign', 'color', 'backgroundColor', 'fontSize', 'fontFamily' // 'fontWeight',\n // 'lineHeight',\n // 'wrapOption',\n // 'fontStyle',\n // 'direction',\n // 'writingMode'\n ];\n return styleAttributes.reduce(function (styles, name) {\n var value = getAttributeNS(style, ttsNs, name) || getAttributeNS(region, ttsNs, name);\n\n if (value) {\n styles[name] = value;\n }\n\n return styles;\n }, {});\n }\n\n function getAttributeNS(element, ns, name) {\n return element.hasAttributeNS(ns, name) ? element.getAttributeNS(ns, name) : null;\n }\n\n function timestampParsingError(node) {\n return new Error(\"Could not parse ttml timestamp \" + node);\n }\n\n function parseTtmlTime(timeAttributeValue, rateInfo) {\n if (!timeAttributeValue) {\n return null;\n }\n\n var seconds = Object(_vttparser__WEBPACK_IMPORTED_MODULE_1__[\"parseTimeStamp\"])(timeAttributeValue);\n\n if (seconds === null) {\n if (HMSF_REGEX.test(timeAttributeValue)) {\n seconds = parseHoursMinutesSecondsFrames(timeAttributeValue, rateInfo);\n } else if (TIME_UNIT_REGEX.test(timeAttributeValue)) {\n seconds = parseTimeUnits(timeAttributeValue, rateInfo);\n }\n }\n\n return seconds;\n }\n\n function parseHoursMinutesSecondsFrames(timeAttributeValue, rateInfo) {\n var m = HMSF_REGEX.exec(timeAttributeValue);\n var frames = (m[4] | 0) + (m[5] | 0) / rateInfo.subFrameRate;\n return (m[1] | 0) * 3600 + (m[2] | 0) * 60 + (m[3] | 0) + frames / rateInfo.frameRate;\n }\n\n function parseTimeUnits(timeAttributeValue, rateInfo) {\n var m = TIME_UNIT_REGEX.exec(timeAttributeValue);\n var value = Number(m[1]);\n var unit = m[2];\n\n switch (unit) {\n case 'h':\n return value * 3600;\n\n case 'm':\n return value * 60;\n\n case 'ms':\n return value * 1000;\n\n case 'f':\n return value / rateInfo.frameRate;\n\n case 't':\n return value / rateInfo.tickRate;\n }\n\n return value;\n }\n /***/\n\n },\n\n /***/\n \"./src/utils/logger.ts\":\n /*!*****************************!*\\\n !*** ./src/utils/logger.ts ***!\n \\*****************************/\n\n /*! exports provided: enableLogs, logger */\n\n /***/\n function srcUtilsLoggerTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"enableLogs\", function () {\n return enableLogs;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"logger\", function () {\n return logger;\n });\n\n var noop = function noop() {};\n\n var fakeLogger = {\n trace: noop,\n debug: noop,\n log: noop,\n warn: noop,\n info: noop,\n error: noop\n };\n var exportedLogger = fakeLogger; // let lastCallTime;\n // function formatMsgWithTimeInfo(type, msg) {\n // const now = Date.now();\n // const diff = lastCallTime ? '+' + (now - lastCallTime) : '0';\n // lastCallTime = now;\n // msg = (new Date(now)).toISOString() + ' | [' + type + '] > ' + msg + ' ( ' + diff + ' ms )';\n // return msg;\n // }\n\n function consolePrintFn(type) {\n var func = self.console[type];\n\n if (func) {\n return func.bind(self.console, \"[\" + type + \"] >\");\n }\n\n return noop;\n }\n\n function exportLoggerFunctions(debugConfig) {\n for (var _len = arguments.length, functions = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n functions[_key - 1] = arguments[_key];\n }\n\n functions.forEach(function (type) {\n exportedLogger[type] = debugConfig[type] ? debugConfig[type].bind(debugConfig) : consolePrintFn(type);\n });\n }\n\n function enableLogs(debugConfig) {\n // check that console is available\n if (self.console && debugConfig === true || _typeof(debugConfig) === 'object') {\n exportLoggerFunctions(debugConfig, // Remove out from list here to hard-disable a log-level\n // 'trace',\n 'debug', 'log', 'info', 'warn', 'error'); // Some browsers don't allow to use bind on console object anyway\n // fallback to default if needed\n\n try {\n exportedLogger.log();\n } catch (e) {\n exportedLogger = fakeLogger;\n }\n } else {\n exportedLogger = fakeLogger;\n }\n }\n\n var logger = exportedLogger;\n /***/\n },\n\n /***/\n \"./src/utils/mediakeys-helper.ts\":\n /*!***************************************!*\\\n !*** ./src/utils/mediakeys-helper.ts ***!\n \\***************************************/\n\n /*! exports provided: KeySystems, requestMediaKeySystemAccess */\n\n /***/\n function srcUtilsMediakeysHelperTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"KeySystems\", function () {\n return KeySystems;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"requestMediaKeySystemAccess\", function () {\n return requestMediaKeySystemAccess;\n });\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Navigator/requestMediaKeySystemAccess\n */\n\n\n var KeySystems;\n\n (function (KeySystems) {\n KeySystems[\"WIDEVINE\"] = \"com.widevine.alpha\";\n KeySystems[\"PLAYREADY\"] = \"com.microsoft.playready\";\n })(KeySystems || (KeySystems = {}));\n\n var requestMediaKeySystemAccess = function () {\n if (typeof self !== 'undefined' && self.navigator && self.navigator.requestMediaKeySystemAccess) {\n return self.navigator.requestMediaKeySystemAccess.bind(self.navigator);\n } else {\n return null;\n }\n }();\n /***/\n\n },\n\n /***/\n \"./src/utils/mediasource-helper.ts\":\n /*!*****************************************!*\\\n !*** ./src/utils/mediasource-helper.ts ***!\n \\*****************************************/\n\n /*! exports provided: getMediaSource */\n\n /***/\n function srcUtilsMediasourceHelperTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"getMediaSource\", function () {\n return getMediaSource;\n });\n /**\n * MediaSource helper\n */\n\n\n function getMediaSource() {\n return self.MediaSource || self.WebKitMediaSource;\n }\n /***/\n\n },\n\n /***/\n \"./src/utils/mp4-tools.ts\":\n /*!********************************!*\\\n !*** ./src/utils/mp4-tools.ts ***!\n \\********************************/\n\n /*! exports provided: bin2str, readUint16, readUint32, writeUint32, findBox, parseSegmentIndex, parseInitSegment, getStartDTS, getDuration, computeRawDurationFromSamples, offsetStartDTS, segmentValidRange, appendUint8Array */\n\n /***/\n function srcUtilsMp4ToolsTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"bin2str\", function () {\n return bin2str;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"readUint16\", function () {\n return readUint16;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"readUint32\", function () {\n return readUint32;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"writeUint32\", function () {\n return writeUint32;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"findBox\", function () {\n return findBox;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"parseSegmentIndex\", function () {\n return parseSegmentIndex;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"parseInitSegment\", function () {\n return parseInitSegment;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"getStartDTS\", function () {\n return getStartDTS;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"getDuration\", function () {\n return getDuration;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"computeRawDurationFromSamples\", function () {\n return computeRawDurationFromSamples;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"offsetStartDTS\", function () {\n return offsetStartDTS;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"segmentValidRange\", function () {\n return segmentValidRange;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"appendUint8Array\", function () {\n return appendUint8Array;\n });\n /* harmony import */\n\n\n var _typed_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./typed-array */\n \"./src/utils/typed-array.ts\");\n /* harmony import */\n\n\n var _loader_fragment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ../loader/fragment */\n \"./src/loader/fragment.ts\");\n\n var UINT32_MAX = Math.pow(2, 32) - 1;\n var push = [].push;\n\n function bin2str(data) {\n return String.fromCharCode.apply(null, data);\n }\n\n function readUint16(buffer, offset) {\n if ('data' in buffer) {\n offset += buffer.start;\n buffer = buffer.data;\n }\n\n var val = buffer[offset] << 8 | buffer[offset + 1];\n return val < 0 ? 65536 + val : val;\n }\n\n function readUint32(buffer, offset) {\n if ('data' in buffer) {\n offset += buffer.start;\n buffer = buffer.data;\n }\n\n var val = buffer[offset] << 24 | buffer[offset + 1] << 16 | buffer[offset + 2] << 8 | buffer[offset + 3];\n return val < 0 ? 4294967296 + val : val;\n }\n\n function writeUint32(buffer, offset, value) {\n if ('data' in buffer) {\n offset += buffer.start;\n buffer = buffer.data;\n }\n\n buffer[offset] = value >> 24;\n buffer[offset + 1] = value >> 16 & 0xff;\n buffer[offset + 2] = value >> 8 & 0xff;\n buffer[offset + 3] = value & 0xff;\n } // Find the data for a box specified by its path\n\n\n function findBox(input, path) {\n var results = [];\n\n if (!path.length) {\n // short-circuit the search for empty paths\n return results;\n }\n\n var data;\n var start;\n var end;\n\n if ('data' in input) {\n data = input.data;\n start = input.start;\n end = input.end;\n } else {\n data = input;\n start = 0;\n end = data.byteLength;\n }\n\n for (var i = start; i < end;) {\n var size = readUint32(data, i);\n var type = bin2str(data.subarray(i + 4, i + 8));\n var endbox = size > 1 ? i + size : end;\n\n if (type === path[0]) {\n if (path.length === 1) {\n // this is the end of the path and we've found the box we were\n // looking for\n results.push({\n data: data,\n start: i + 8,\n end: endbox\n });\n } else {\n // recursively search for the next box along the path\n var subresults = findBox({\n data: data,\n start: i + 8,\n end: endbox\n }, path.slice(1));\n\n if (subresults.length) {\n push.apply(results, subresults);\n }\n }\n }\n\n i = endbox;\n } // we've finished searching all of data\n\n\n return results;\n }\n\n function parseSegmentIndex(initSegment) {\n var moovBox = findBox(initSegment, ['moov']);\n var moov = moovBox[0];\n var moovEndOffset = moov ? moov.end : null; // we need this in case we need to chop of garbage of the end of current data\n\n var sidxBox = findBox(initSegment, ['sidx']);\n\n if (!sidxBox || !sidxBox[0]) {\n return null;\n }\n\n var references = [];\n var sidx = sidxBox[0];\n var version = sidx.data[0]; // set initial offset, we skip the reference ID (not needed)\n\n var index = version === 0 ? 8 : 16;\n var timescale = readUint32(sidx, index);\n index += 4; // TODO: parse earliestPresentationTime and firstOffset\n // usually zero in our case\n\n var earliestPresentationTime = 0;\n var firstOffset = 0;\n\n if (version === 0) {\n index += 8;\n } else {\n index += 16;\n } // skip reserved\n\n\n index += 2;\n var startByte = sidx.end + firstOffset;\n var referencesCount = readUint16(sidx, index);\n index += 2;\n\n for (var i = 0; i < referencesCount; i++) {\n var referenceIndex = index;\n var referenceInfo = readUint32(sidx, referenceIndex);\n referenceIndex += 4;\n var referenceSize = referenceInfo & 0x7fffffff;\n var referenceType = (referenceInfo & 0x80000000) >>> 31;\n\n if (referenceType === 1) {\n // eslint-disable-next-line no-console\n console.warn('SIDX has hierarchical references (not supported)');\n return null;\n }\n\n var subsegmentDuration = readUint32(sidx, referenceIndex);\n referenceIndex += 4;\n references.push({\n referenceSize: referenceSize,\n subsegmentDuration: subsegmentDuration,\n // unscaled\n info: {\n duration: subsegmentDuration / timescale,\n start: startByte,\n end: startByte + referenceSize - 1\n }\n });\n startByte += referenceSize; // Skipping 1 bit for |startsWithSap|, 3 bits for |sapType|, and 28 bits\n // for |sapDelta|.\n\n referenceIndex += 4; // skip to next ref\n\n index = referenceIndex;\n }\n\n return {\n earliestPresentationTime: earliestPresentationTime,\n timescale: timescale,\n version: version,\n referencesCount: referencesCount,\n references: references,\n moovEndOffset: moovEndOffset\n };\n }\n /**\n * Parses an MP4 initialization segment and extracts stream type and\n * timescale values for any declared tracks. Timescale values indicate the\n * number of clock ticks per second to assume for time-based values\n * elsewhere in the MP4.\n *\n * To determine the start time of an MP4, you need two pieces of\n * information: the timescale unit and the earliest base media decode\n * time. Multiple timescales can be specified within an MP4 but the\n * base media decode time is always expressed in the timescale from\n * the media header box for the track:\n * ```\n * moov > trak > mdia > mdhd.timescale\n * moov > trak > mdia > hdlr\n * ```\n * @param initSegment {Uint8Array} the bytes of the init segment\n * @return {InitData} a hash of track type to timescale values or null if\n * the init segment is malformed.\n */\n\n\n function parseInitSegment(initSegment) {\n var result = [];\n var traks = findBox(initSegment, ['moov', 'trak']);\n\n for (var i = 0; i < traks.length; i++) {\n var trak = traks[i];\n var tkhd = findBox(trak, ['tkhd'])[0];\n\n if (tkhd) {\n var version = tkhd.data[tkhd.start];\n\n var _index = version === 0 ? 12 : 20;\n\n var trackId = readUint32(tkhd, _index);\n var mdhd = findBox(trak, ['mdia', 'mdhd'])[0];\n\n if (mdhd) {\n version = mdhd.data[mdhd.start];\n _index = version === 0 ? 12 : 20;\n var timescale = readUint32(mdhd, _index);\n var hdlr = findBox(trak, ['mdia', 'hdlr'])[0];\n\n if (hdlr) {\n var hdlrType = bin2str(hdlr.data.subarray(hdlr.start + 8, hdlr.start + 12));\n var type = {\n soun: _loader_fragment__WEBPACK_IMPORTED_MODULE_1__[\"ElementaryStreamTypes\"].AUDIO,\n vide: _loader_fragment__WEBPACK_IMPORTED_MODULE_1__[\"ElementaryStreamTypes\"].VIDEO\n }[hdlrType];\n\n if (type) {\n // Parse codec details\n var stsd = findBox(trak, ['mdia', 'minf', 'stbl', 'stsd'])[0];\n var codec = void 0;\n\n if (stsd) {\n codec = bin2str(stsd.data.subarray(stsd.start + 12, stsd.start + 16)); // TODO: Parse codec details to be able to build MIME type.\n // stsd.start += 8;\n // const codecBox = findBox(stsd, [codec])[0];\n // if (codecBox) {\n // TODO: Codec parsing support for avc1, mp4a, hevc, av01...\n // }\n }\n\n result[trackId] = {\n timescale: timescale,\n type: type\n };\n result[type] = {\n timescale: timescale,\n id: trackId,\n codec: codec\n };\n }\n }\n }\n }\n }\n\n var trex = findBox(initSegment, ['moov', 'mvex', 'trex']);\n trex.forEach(function (trex) {\n var trackId = readUint32(trex, 4);\n var track = result[trackId];\n\n if (track) {\n track.default = {\n duration: readUint32(trex, 12),\n flags: readUint32(trex, 20)\n };\n }\n });\n return result;\n }\n /**\n * Determine the base media decode start time, in seconds, for an MP4\n * fragment. If multiple fragments are specified, the earliest time is\n * returned.\n *\n * The base media decode time can be parsed from track fragment\n * metadata:\n * ```\n * moof > traf > tfdt.baseMediaDecodeTime\n * ```\n * It requires the timescale value from the mdhd to interpret.\n *\n * @param initData {InitData} a hash of track type to timescale values\n * @param fmp4 {Uint8Array} the bytes of the mp4 fragment\n * @return {number} the earliest base media decode start time for the\n * fragment, in seconds\n */\n\n\n function getStartDTS(initData, fmp4) {\n // we need info from two children of each track fragment box\n return findBox(fmp4, ['moof', 'traf']).reduce(function (result, traf) {\n var tfdt = findBox(traf, ['tfdt'])[0];\n var version = tfdt.data[tfdt.start];\n var start = findBox(traf, ['tfhd']).reduce(function (result, tfhd) {\n // get the track id from the tfhd\n var id = readUint32(tfhd, 4);\n var track = initData[id];\n\n if (track) {\n var baseTime = readUint32(tfdt, 4);\n\n if (version === 1) {\n baseTime *= Math.pow(2, 32);\n baseTime += readUint32(tfdt, 8);\n } // assume a 90kHz clock if no timescale was specified\n\n\n var scale = track.timescale || 90e3; // convert base time to seconds\n\n var startTime = baseTime / scale;\n\n if (isFinite(startTime) && (result === null || startTime < result)) {\n return startTime;\n }\n }\n\n return result;\n }, null);\n\n if (start !== null && isFinite(start) && (result === null || start < result)) {\n return start;\n }\n\n return result;\n }, null) || 0;\n }\n /*\n For Reference:\n aligned(8) class TrackFragmentHeaderBox\n extends FullBox(‘tfhd’, 0, tf_flags){\n unsigned int(32) track_ID;\n // all the following are optional fields\n unsigned int(64) base_data_offset;\n unsigned int(32) sample_description_index;\n unsigned int(32) default_sample_duration;\n unsigned int(32) default_sample_size;\n unsigned int(32) default_sample_flags\n }\n */\n\n\n function getDuration(data, initData) {\n var rawDuration = 0;\n var videoDuration = 0;\n var audioDuration = 0;\n var trafs = findBox(data, ['moof', 'traf']);\n\n for (var i = 0; i < trafs.length; i++) {\n var traf = trafs[i]; // There is only one tfhd & trun per traf\n // This is true for CMAF style content, and we should perhaps check the ftyp\n // and only look for a single trun then, but for ISOBMFF we should check\n // for multiple track runs.\n\n var tfhd = findBox(traf, ['tfhd'])[0]; // get the track id from the tfhd\n\n var id = readUint32(tfhd, 4);\n var track = initData[id];\n\n if (!track) {\n continue;\n }\n\n var trackDefault = track.default;\n var tfhdFlags = readUint32(tfhd, 0) | (trackDefault === null || trackDefault === void 0 ? void 0 : trackDefault.flags);\n var sampleDuration = trackDefault === null || trackDefault === void 0 ? void 0 : trackDefault.duration;\n\n if (tfhdFlags & 0x000008) {\n // 0x000008 indicates the presence of the default_sample_duration field\n if (tfhdFlags & 0x000002) {\n // 0x000002 indicates the presence of the sample_description_index field, which precedes default_sample_duration\n // If present, the default_sample_duration exists at byte offset 12\n sampleDuration = readUint32(tfhd, 12);\n } else {\n // Otherwise, the duration is at byte offset 8\n sampleDuration = readUint32(tfhd, 8);\n }\n } // assume a 90kHz clock if no timescale was specified\n\n\n var timescale = track.timescale || 90e3;\n var truns = findBox(traf, ['trun']);\n\n for (var j = 0; j < truns.length; j++) {\n rawDuration = computeRawDurationFromSamples(truns[j]);\n\n if (!rawDuration && sampleDuration) {\n var sampleCount = readUint32(truns[j], 4);\n rawDuration = sampleDuration * sampleCount;\n }\n\n if (track.type === _loader_fragment__WEBPACK_IMPORTED_MODULE_1__[\"ElementaryStreamTypes\"].VIDEO) {\n videoDuration += rawDuration / timescale;\n } else if (track.type === _loader_fragment__WEBPACK_IMPORTED_MODULE_1__[\"ElementaryStreamTypes\"].AUDIO) {\n audioDuration += rawDuration / timescale;\n }\n }\n }\n\n if (videoDuration === 0 && audioDuration === 0) {\n // If duration samples are not available in the traf use sidx subsegment_duration\n var sidx = parseSegmentIndex(data);\n\n if (sidx !== null && sidx !== void 0 && sidx.references) {\n return sidx.references.reduce(function (dur, ref) {\n return dur + ref.info.duration || 0;\n }, 0);\n }\n }\n\n if (videoDuration) {\n return videoDuration;\n }\n\n return audioDuration;\n }\n /*\n For Reference:\n aligned(8) class TrackRunBox\n extends FullBox(‘trun’, version, tr_flags) {\n unsigned int(32) sample_count;\n // the following are optional fields\n signed int(32) data_offset;\n unsigned int(32) first_sample_flags;\n // all fields in the following array are optional\n {\n unsigned int(32) sample_duration;\n unsigned int(32) sample_size;\n unsigned int(32) sample_flags\n if (version == 0)\n { unsigned int(32)\n else\n { signed int(32)\n }[ sample_count ]\n }\n */\n\n\n function computeRawDurationFromSamples(trun) {\n var flags = readUint32(trun, 0); // Flags are at offset 0, non-optional sample_count is at offset 4. Therefore we start 8 bytes in.\n // Each field is an int32, which is 4 bytes\n\n var offset = 8; // data-offset-present flag\n\n if (flags & 0x000001) {\n offset += 4;\n } // first-sample-flags-present flag\n\n\n if (flags & 0x000004) {\n offset += 4;\n }\n\n var duration = 0;\n var sampleCount = readUint32(trun, 4);\n\n for (var i = 0; i < sampleCount; i++) {\n // sample-duration-present flag\n if (flags & 0x000100) {\n var sampleDuration = readUint32(trun, offset);\n duration += sampleDuration;\n offset += 4;\n } // sample-size-present flag\n\n\n if (flags & 0x000200) {\n offset += 4;\n } // sample-flags-present flag\n\n\n if (flags & 0x000400) {\n offset += 4;\n } // sample-composition-time-offsets-present flag\n\n\n if (flags & 0x000800) {\n offset += 4;\n }\n }\n\n return duration;\n }\n\n function offsetStartDTS(initData, fmp4, timeOffset) {\n findBox(fmp4, ['moof', 'traf']).forEach(function (traf) {\n findBox(traf, ['tfhd']).forEach(function (tfhd) {\n // get the track id from the tfhd\n var id = readUint32(tfhd, 4);\n var track = initData[id];\n\n if (!track) {\n return;\n } // assume a 90kHz clock if no timescale was specified\n\n\n var timescale = track.timescale || 90e3; // get the base media decode time from the tfdt\n\n findBox(traf, ['tfdt']).forEach(function (tfdt) {\n var version = tfdt.data[tfdt.start];\n var baseMediaDecodeTime = readUint32(tfdt, 4);\n\n if (version === 0) {\n writeUint32(tfdt, 4, baseMediaDecodeTime - timeOffset * timescale);\n } else {\n baseMediaDecodeTime *= Math.pow(2, 32);\n baseMediaDecodeTime += readUint32(tfdt, 8);\n baseMediaDecodeTime -= timeOffset * timescale;\n baseMediaDecodeTime = Math.max(baseMediaDecodeTime, 0);\n var upper = Math.floor(baseMediaDecodeTime / (UINT32_MAX + 1));\n var lower = Math.floor(baseMediaDecodeTime % (UINT32_MAX + 1));\n writeUint32(tfdt, 4, upper);\n writeUint32(tfdt, 8, lower);\n }\n });\n });\n });\n } // TODO: Check if the last moof+mdat pair is part of the valid range\n\n\n function segmentValidRange(data) {\n var segmentedRange = {\n valid: null,\n remainder: null\n };\n var moofs = findBox(data, ['moof']);\n\n if (!moofs) {\n return segmentedRange;\n } else if (moofs.length < 2) {\n segmentedRange.remainder = data;\n return segmentedRange;\n }\n\n var last = moofs[moofs.length - 1]; // Offset by 8 bytes; findBox offsets the start by as much\n\n segmentedRange.valid = Object(_typed_array__WEBPACK_IMPORTED_MODULE_0__[\"sliceUint8\"])(data, 0, last.start - 8);\n segmentedRange.remainder = Object(_typed_array__WEBPACK_IMPORTED_MODULE_0__[\"sliceUint8\"])(data, last.start - 8);\n return segmentedRange;\n }\n\n function appendUint8Array(data1, data2) {\n var temp = new Uint8Array(data1.length + data2.length);\n temp.set(data1);\n temp.set(data2, data1.length);\n return temp;\n }\n /***/\n\n },\n\n /***/\n \"./src/utils/output-filter.ts\":\n /*!************************************!*\\\n !*** ./src/utils/output-filter.ts ***!\n \\************************************/\n\n /*! exports provided: default */\n\n /***/\n function srcUtilsOutputFilterTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"default\", function () {\n return OutputFilter;\n });\n\n var OutputFilter = /*#__PURE__*/function () {\n function OutputFilter(timelineController, trackName) {\n this.timelineController = void 0;\n this.cueRanges = [];\n this.trackName = void 0;\n this.startTime = null;\n this.endTime = null;\n this.screen = null;\n this.timelineController = timelineController;\n this.trackName = trackName;\n }\n\n var _proto = OutputFilter.prototype;\n\n _proto.dispatchCue = function dispatchCue() {\n if (this.startTime === null) {\n return;\n }\n\n this.timelineController.addCues(this.trackName, this.startTime, this.endTime, this.screen, this.cueRanges);\n this.startTime = null;\n };\n\n _proto.newCue = function newCue(startTime, endTime, screen) {\n if (this.startTime === null || this.startTime > startTime) {\n this.startTime = startTime;\n }\n\n this.endTime = endTime;\n this.screen = screen;\n this.timelineController.createCaptionsTrack(this.trackName);\n };\n\n _proto.reset = function reset() {\n this.cueRanges = [];\n this.startTime = null;\n };\n\n return OutputFilter;\n }();\n /***/\n\n },\n\n /***/\n \"./src/utils/texttrack-utils.ts\":\n /*!**************************************!*\\\n !*** ./src/utils/texttrack-utils.ts ***!\n \\**************************************/\n\n /*! exports provided: sendAddTrackEvent, addCueToTrack, clearCurrentCues, removeCuesInRange, getCuesInRange */\n\n /***/\n function srcUtilsTexttrackUtilsTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"sendAddTrackEvent\", function () {\n return sendAddTrackEvent;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"addCueToTrack\", function () {\n return addCueToTrack;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"clearCurrentCues\", function () {\n return clearCurrentCues;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"removeCuesInRange\", function () {\n return removeCuesInRange;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"getCuesInRange\", function () {\n return getCuesInRange;\n });\n /* harmony import */\n\n\n var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./logger */\n \"./src/utils/logger.ts\");\n\n function sendAddTrackEvent(track, videoEl) {\n var event;\n\n try {\n event = new Event('addtrack');\n } catch (err) {\n // for IE11\n event = document.createEvent('Event');\n event.initEvent('addtrack', false, false);\n }\n\n event.track = track;\n videoEl.dispatchEvent(event);\n }\n\n function addCueToTrack(track, cue) {\n // Sometimes there are cue overlaps on segmented vtts so the same\n // cue can appear more than once in different vtt files.\n // This avoid showing duplicated cues with same timecode and text.\n var mode = track.mode;\n\n if (mode === 'disabled') {\n track.mode = 'hidden';\n }\n\n if (track.cues && !track.cues.getCueById(cue.id)) {\n try {\n track.addCue(cue);\n\n if (!track.cues.getCueById(cue.id)) {\n throw new Error(\"addCue is failed for: \" + cue);\n }\n } catch (err) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"logger\"].debug(\"[texttrack-utils]: \" + err);\n\n var textTrackCue = new self.TextTrackCue(cue.startTime, cue.endTime, cue.text);\n textTrackCue.id = cue.id;\n track.addCue(textTrackCue);\n }\n }\n\n if (mode === 'disabled') {\n track.mode = mode;\n }\n }\n\n function clearCurrentCues(track) {\n // When track.mode is disabled, track.cues will be null.\n // To guarantee the removal of cues, we need to temporarily\n // change the mode to hidden\n var mode = track.mode;\n\n if (mode === 'disabled') {\n track.mode = 'hidden';\n }\n\n if (track.cues) {\n for (var i = track.cues.length; i--;) {\n track.removeCue(track.cues[i]);\n }\n }\n\n if (mode === 'disabled') {\n track.mode = mode;\n }\n }\n\n function removeCuesInRange(track, start, end) {\n var mode = track.mode;\n\n if (mode === 'disabled') {\n track.mode = 'hidden';\n }\n\n if (track.cues && track.cues.length > 0) {\n var cues = getCuesInRange(track.cues, start, end);\n\n for (var i = 0; i < cues.length; i++) {\n track.removeCue(cues[i]);\n }\n }\n\n if (mode === 'disabled') {\n track.mode = mode;\n }\n } // Find first cue starting after given time.\n // Modified version of binary search O(log(n)).\n\n\n function getFirstCueIndexAfterTime(cues, time) {\n // If first cue starts after time, start there\n if (time < cues[0].startTime) {\n return 0;\n } // If the last cue ends before time there is no overlap\n\n\n var len = cues.length - 1;\n\n if (time > cues[len].endTime) {\n return -1;\n }\n\n var left = 0;\n var right = len;\n\n while (left <= right) {\n var mid = Math.floor((right + left) / 2);\n\n if (time < cues[mid].startTime) {\n right = mid - 1;\n } else if (time > cues[mid].startTime && left < len) {\n left = mid + 1;\n } else {\n // If it's not lower or higher, it must be equal.\n return mid;\n }\n } // At this point, left and right have swapped.\n // No direct match was found, left or right element must be the closest. Check which one has the smallest diff.\n\n\n return cues[left].startTime - time < time - cues[right].startTime ? left : right;\n }\n\n function getCuesInRange(cues, start, end) {\n var cuesFound = [];\n var firstCueInRange = getFirstCueIndexAfterTime(cues, start);\n\n if (firstCueInRange > -1) {\n for (var i = firstCueInRange, len = cues.length; i < len; i++) {\n var cue = cues[i];\n\n if (cue.startTime >= start && cue.endTime <= end) {\n cuesFound.push(cue);\n } else if (cue.startTime > end) {\n return cuesFound;\n }\n }\n }\n\n return cuesFound;\n }\n /***/\n\n },\n\n /***/\n \"./src/utils/time-ranges.ts\":\n /*!**********************************!*\\\n !*** ./src/utils/time-ranges.ts ***!\n \\**********************************/\n\n /*! exports provided: default */\n\n /***/\n function srcUtilsTimeRangesTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /**\n * TimeRanges to string helper\n */\n\n\n var TimeRanges = {\n toString: function toString(r) {\n var log = '';\n var len = r.length;\n\n for (var i = 0; i < len; i++) {\n log += '[' + r.start(i).toFixed(3) + ',' + r.end(i).toFixed(3) + ']';\n }\n\n return log;\n }\n };\n /* harmony default export */\n\n __webpack_exports__[\"default\"] = TimeRanges;\n /***/\n },\n\n /***/\n \"./src/utils/timescale-conversion.ts\":\n /*!*******************************************!*\\\n !*** ./src/utils/timescale-conversion.ts ***!\n \\*******************************************/\n\n /*! exports provided: toTimescaleFromBase, toTimescaleFromScale, toMsFromMpegTsClock, toMpegTsClockFromTimescale */\n\n /***/\n function srcUtilsTimescaleConversionTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"toTimescaleFromBase\", function () {\n return toTimescaleFromBase;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"toTimescaleFromScale\", function () {\n return toTimescaleFromScale;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"toMsFromMpegTsClock\", function () {\n return toMsFromMpegTsClock;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"toMpegTsClockFromTimescale\", function () {\n return toMpegTsClockFromTimescale;\n });\n\n var MPEG_TS_CLOCK_FREQ_HZ = 90000;\n\n function toTimescaleFromBase(value, destScale, srcBase, round) {\n if (srcBase === void 0) {\n srcBase = 1;\n }\n\n if (round === void 0) {\n round = false;\n }\n\n var result = value * destScale * srcBase; // equivalent to `(value * scale) / (1 / base)`\n\n return round ? Math.round(result) : result;\n }\n\n function toTimescaleFromScale(value, destScale, srcScale, round) {\n if (srcScale === void 0) {\n srcScale = 1;\n }\n\n if (round === void 0) {\n round = false;\n }\n\n return toTimescaleFromBase(value, destScale, 1 / srcScale, round);\n }\n\n function toMsFromMpegTsClock(value, round) {\n if (round === void 0) {\n round = false;\n }\n\n return toTimescaleFromBase(value, 1000, 1 / MPEG_TS_CLOCK_FREQ_HZ, round);\n }\n\n function toMpegTsClockFromTimescale(value, srcScale) {\n if (srcScale === void 0) {\n srcScale = 1;\n }\n\n return toTimescaleFromBase(value, MPEG_TS_CLOCK_FREQ_HZ, 1 / srcScale);\n }\n /***/\n\n },\n\n /***/\n \"./src/utils/typed-array.ts\":\n /*!**********************************!*\\\n !*** ./src/utils/typed-array.ts ***!\n \\**********************************/\n\n /*! exports provided: sliceUint8 */\n\n /***/\n function srcUtilsTypedArrayTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"sliceUint8\", function () {\n return sliceUint8;\n });\n\n function sliceUint8(array, start, end) {\n // @ts-expect-error This polyfills IE11 usage of Uint8Array slice.\n // It always exists in the TypeScript definition so fails, but it fails at runtime on IE11.\n return Uint8Array.prototype.slice ? array.slice(start, end) : new Uint8Array(Array.prototype.slice.call(array, start, end));\n }\n /***/\n\n },\n\n /***/\n \"./src/utils/vttcue.ts\":\n /*!*****************************!*\\\n !*** ./src/utils/vttcue.ts ***!\n \\*****************************/\n\n /*! exports provided: default */\n\n /***/\n function srcUtilsVttcueTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n /* harmony default export */\n\n\n __webpack_exports__[\"default\"] = function () {\n if (typeof self !== 'undefined' && self.VTTCue) {\n return self.VTTCue;\n }\n\n var AllowedDirections = ['', 'lr', 'rl'];\n var AllowedAlignments = ['start', 'middle', 'end', 'left', 'right'];\n\n function isAllowedValue(allowed, value) {\n if (typeof value !== 'string') {\n return false;\n } // necessary for assuring the generic conforms to the Array interface\n\n\n if (!Array.isArray(allowed)) {\n return false;\n } // reset the type so that the next narrowing works well\n\n\n var lcValue = value.toLowerCase(); // use the allow list to narrow the type to a specific subset of strings\n\n if (~allowed.indexOf(lcValue)) {\n return lcValue;\n }\n\n return false;\n }\n\n function findDirectionSetting(value) {\n return isAllowedValue(AllowedDirections, value);\n }\n\n function findAlignSetting(value) {\n return isAllowedValue(AllowedAlignments, value);\n }\n\n function extend(obj) {\n for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n rest[_key - 1] = arguments[_key];\n }\n\n var i = 1;\n\n for (; i < arguments.length; i++) {\n var cobj = arguments[i];\n\n for (var p in cobj) {\n obj[p] = cobj[p];\n }\n }\n\n return obj;\n }\n\n function VTTCue(startTime, endTime, text) {\n var cue = this;\n var baseObj = {\n enumerable: true\n };\n /**\n * Shim implementation specific properties. These properties are not in\n * the spec.\n */\n // Lets us know when the VTTCue's data has changed in such a way that we need\n // to recompute its display state. This lets us compute its display state\n // lazily.\n\n cue.hasBeenReset = false;\n /**\n * VTTCue and TextTrackCue properties\n * http://dev.w3.org/html5/webvtt/#vttcue-interface\n */\n\n var _id = '';\n var _pauseOnExit = false;\n var _startTime = startTime;\n var _endTime = endTime;\n var _text = text;\n var _region = null;\n var _vertical = '';\n var _snapToLines = true;\n var _line = 'auto';\n var _lineAlign = 'start';\n var _position = 50;\n var _positionAlign = 'middle';\n var _size = 50;\n var _align = 'middle';\n Object.defineProperty(cue, 'id', extend({}, baseObj, {\n get: function get() {\n return _id;\n },\n set: function set(value) {\n _id = '' + value;\n }\n }));\n Object.defineProperty(cue, 'pauseOnExit', extend({}, baseObj, {\n get: function get() {\n return _pauseOnExit;\n },\n set: function set(value) {\n _pauseOnExit = !!value;\n }\n }));\n Object.defineProperty(cue, 'startTime', extend({}, baseObj, {\n get: function get() {\n return _startTime;\n },\n set: function set(value) {\n if (typeof value !== 'number') {\n throw new TypeError('Start time must be set to a number.');\n }\n\n _startTime = value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'endTime', extend({}, baseObj, {\n get: function get() {\n return _endTime;\n },\n set: function set(value) {\n if (typeof value !== 'number') {\n throw new TypeError('End time must be set to a number.');\n }\n\n _endTime = value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'text', extend({}, baseObj, {\n get: function get() {\n return _text;\n },\n set: function set(value) {\n _text = '' + value;\n this.hasBeenReset = true;\n }\n })); // todo: implement VTTRegion polyfill?\n\n Object.defineProperty(cue, 'region', extend({}, baseObj, {\n get: function get() {\n return _region;\n },\n set: function set(value) {\n _region = value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'vertical', extend({}, baseObj, {\n get: function get() {\n return _vertical;\n },\n set: function set(value) {\n var setting = findDirectionSetting(value); // Have to check for false because the setting an be an empty string.\n\n if (setting === false) {\n throw new SyntaxError('An invalid or illegal string was specified.');\n }\n\n _vertical = setting;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'snapToLines', extend({}, baseObj, {\n get: function get() {\n return _snapToLines;\n },\n set: function set(value) {\n _snapToLines = !!value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'line', extend({}, baseObj, {\n get: function get() {\n return _line;\n },\n set: function set(value) {\n if (typeof value !== 'number' && value !== 'auto') {\n throw new SyntaxError('An invalid number or illegal string was specified.');\n }\n\n _line = value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'lineAlign', extend({}, baseObj, {\n get: function get() {\n return _lineAlign;\n },\n set: function set(value) {\n var setting = findAlignSetting(value);\n\n if (!setting) {\n throw new SyntaxError('An invalid or illegal string was specified.');\n }\n\n _lineAlign = setting;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'position', extend({}, baseObj, {\n get: function get() {\n return _position;\n },\n set: function set(value) {\n if (value < 0 || value > 100) {\n throw new Error('Position must be between 0 and 100.');\n }\n\n _position = value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'positionAlign', extend({}, baseObj, {\n get: function get() {\n return _positionAlign;\n },\n set: function set(value) {\n var setting = findAlignSetting(value);\n\n if (!setting) {\n throw new SyntaxError('An invalid or illegal string was specified.');\n }\n\n _positionAlign = setting;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'size', extend({}, baseObj, {\n get: function get() {\n return _size;\n },\n set: function set(value) {\n if (value < 0 || value > 100) {\n throw new Error('Size must be between 0 and 100.');\n }\n\n _size = value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'align', extend({}, baseObj, {\n get: function get() {\n return _align;\n },\n set: function set(value) {\n var setting = findAlignSetting(value);\n\n if (!setting) {\n throw new SyntaxError('An invalid or illegal string was specified.');\n }\n\n _align = setting;\n this.hasBeenReset = true;\n }\n }));\n /**\n * Other spec defined properties\n */\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#text-track-cue-display-state\n\n cue.displayState = undefined;\n }\n /**\n * VTTCue methods\n */\n\n\n VTTCue.prototype.getCueAsHTML = function () {\n // Assume WebVTT.convertCueToDOMTree is on the global.\n var WebVTT = self.WebVTT;\n return WebVTT.convertCueToDOMTree(self, this.text);\n }; // this is a polyfill hack\n\n\n return VTTCue;\n }();\n /***/\n\n },\n\n /***/\n \"./src/utils/vttparser.ts\":\n /*!********************************!*\\\n !*** ./src/utils/vttparser.ts ***!\n \\********************************/\n\n /*! exports provided: parseTimeStamp, fixLineBreaks, VTTParser */\n\n /***/\n function srcUtilsVttparserTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"parseTimeStamp\", function () {\n return parseTimeStamp;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"fixLineBreaks\", function () {\n return fixLineBreaks;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"VTTParser\", function () {\n return VTTParser;\n });\n /* harmony import */\n\n\n var _vttcue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./vttcue */\n \"./src/utils/vttcue.ts\");\n /*\n * Source: https://github.com/mozilla/vtt.js/blob/master/dist/vtt.js\n */\n\n\n var StringDecoder = /*#__PURE__*/function () {\n function StringDecoder() {}\n\n var _proto = StringDecoder.prototype; // eslint-disable-next-line @typescript-eslint/no-unused-vars\n\n _proto.decode = function decode(data, options) {\n if (!data) {\n return '';\n }\n\n if (typeof data !== 'string') {\n throw new Error('Error - expected string data.');\n }\n\n return decodeURIComponent(encodeURIComponent(data));\n };\n\n return StringDecoder;\n }(); // Try to parse input as a time stamp.\n\n\n function parseTimeStamp(input) {\n function computeSeconds(h, m, s, f) {\n return (h | 0) * 3600 + (m | 0) * 60 + (s | 0) + parseFloat(f || 0);\n }\n\n var m = input.match(/^(?:(\\d+):)?(\\d{2}):(\\d{2})(\\.\\d+)?/);\n\n if (!m) {\n return null;\n }\n\n if (parseFloat(m[2]) > 59) {\n // Timestamp takes the form of [hours]:[minutes].[milliseconds]\n // First position is hours as it's over 59.\n return computeSeconds(m[2], m[3], 0, m[4]);\n } // Timestamp takes the form of [hours (optional)]:[minutes]:[seconds].[milliseconds]\n\n\n return computeSeconds(m[1], m[2], m[3], m[4]);\n } // A settings object holds key/value pairs and will ignore anything but the first\n // assignment to a specific key.\n\n\n var Settings = /*#__PURE__*/function () {\n function Settings() {\n this.values = Object.create(null);\n }\n\n var _proto2 = Settings.prototype; // Only accept the first assignment to any key.\n\n _proto2.set = function set(k, v) {\n if (!this.get(k) && v !== '') {\n this.values[k] = v;\n }\n } // Return the value for a key, or a default value.\n // If 'defaultKey' is passed then 'dflt' is assumed to be an object with\n // a number of possible default values as properties where 'defaultKey' is\n // the key of the property that will be chosen; otherwise it's assumed to be\n // a single value.\n ;\n\n _proto2.get = function get(k, dflt, defaultKey) {\n if (defaultKey) {\n return this.has(k) ? this.values[k] : dflt[defaultKey];\n }\n\n return this.has(k) ? this.values[k] : dflt;\n } // Check whether we have a value for a key.\n ;\n\n _proto2.has = function has(k) {\n return k in this.values;\n } // Accept a setting if its one of the given alternatives.\n ;\n\n _proto2.alt = function alt(k, v, a) {\n for (var n = 0; n < a.length; ++n) {\n if (v === a[n]) {\n this.set(k, v);\n break;\n }\n }\n } // Accept a setting if its a valid (signed) integer.\n ;\n\n _proto2.integer = function integer(k, v) {\n if (/^-?\\d+$/.test(v)) {\n // integer\n this.set(k, parseInt(v, 10));\n }\n } // Accept a setting if its a valid percentage.\n ;\n\n _proto2.percent = function percent(k, v) {\n if (/^([\\d]{1,3})(\\.[\\d]*)?%$/.test(v)) {\n var percent = parseFloat(v);\n\n if (percent >= 0 && percent <= 100) {\n this.set(k, percent);\n return true;\n }\n }\n\n return false;\n };\n\n return Settings;\n }(); // Helper function to parse input into groups separated by 'groupDelim', and\n // interpret each group as a key/value pair separated by 'keyValueDelim'.\n\n\n function parseOptions(input, callback, keyValueDelim, groupDelim) {\n var groups = groupDelim ? input.split(groupDelim) : [input];\n\n for (var i in groups) {\n if (typeof groups[i] !== 'string') {\n continue;\n }\n\n var kv = groups[i].split(keyValueDelim);\n\n if (kv.length !== 2) {\n continue;\n }\n\n var _k = kv[0];\n var _v = kv[1];\n callback(_k, _v);\n }\n }\n\n var defaults = new _vttcue__WEBPACK_IMPORTED_MODULE_0__[\"default\"](0, 0, ''); // 'middle' was changed to 'center' in the spec: https://github.com/w3c/webvtt/pull/244\n // Safari doesn't yet support this change, but FF and Chrome do.\n\n var center = defaults.align === 'middle' ? 'middle' : 'center';\n\n function parseCue(input, cue, regionList) {\n // Remember the original input if we need to throw an error.\n var oInput = input; // 4.1 WebVTT timestamp\n\n function consumeTimeStamp() {\n var ts = parseTimeStamp(input);\n\n if (ts === null) {\n throw new Error('Malformed timestamp: ' + oInput);\n } // Remove time stamp from input.\n\n\n input = input.replace(/^[^\\sa-zA-Z-]+/, '');\n return ts;\n } // 4.4.2 WebVTT cue settings\n\n\n function consumeCueSettings(input, cue) {\n var settings = new Settings();\n parseOptions(input, function (k, v) {\n var vals;\n\n switch (k) {\n case 'region':\n // Find the last region we parsed with the same region id.\n for (var i = regionList.length - 1; i >= 0; i--) {\n if (regionList[i].id === v) {\n settings.set(k, regionList[i].region);\n break;\n }\n }\n\n break;\n\n case 'vertical':\n settings.alt(k, v, ['rl', 'lr']);\n break;\n\n case 'line':\n vals = v.split(',');\n settings.integer(k, vals[0]);\n\n if (settings.percent(k, vals[0])) {\n settings.set('snapToLines', false);\n }\n\n settings.alt(k, vals[0], ['auto']);\n\n if (vals.length === 2) {\n settings.alt('lineAlign', vals[1], ['start', center, 'end']);\n }\n\n break;\n\n case 'position':\n vals = v.split(',');\n settings.percent(k, vals[0]);\n\n if (vals.length === 2) {\n settings.alt('positionAlign', vals[1], ['start', center, 'end', 'line-left', 'line-right', 'auto']);\n }\n\n break;\n\n case 'size':\n settings.percent(k, v);\n break;\n\n case 'align':\n settings.alt(k, v, ['start', center, 'end', 'left', 'right']);\n break;\n }\n }, /:/, /\\s/); // Apply default values for any missing fields.\n\n cue.region = settings.get('region', null);\n cue.vertical = settings.get('vertical', '');\n var line = settings.get('line', 'auto');\n\n if (line === 'auto' && defaults.line === -1) {\n // set numeric line number for Safari\n line = -1;\n }\n\n cue.line = line;\n cue.lineAlign = settings.get('lineAlign', 'start');\n cue.snapToLines = settings.get('snapToLines', true);\n cue.size = settings.get('size', 100);\n cue.align = settings.get('align', center);\n var position = settings.get('position', 'auto');\n\n if (position === 'auto' && defaults.position === 50) {\n // set numeric position for Safari\n position = cue.align === 'start' || cue.align === 'left' ? 0 : cue.align === 'end' || cue.align === 'right' ? 100 : 50;\n }\n\n cue.position = position;\n }\n\n function skipWhitespace() {\n input = input.replace(/^\\s+/, '');\n } // 4.1 WebVTT cue timings.\n\n\n skipWhitespace();\n cue.startTime = consumeTimeStamp(); // (1) collect cue start time\n\n skipWhitespace();\n\n if (input.substr(0, 3) !== '-->') {\n // (3) next characters must match '-->'\n throw new Error(\"Malformed time stamp (time stamps must be separated by '-->'): \" + oInput);\n }\n\n input = input.substr(3);\n skipWhitespace();\n cue.endTime = consumeTimeStamp(); // (5) collect cue end time\n // 4.1 WebVTT cue settings list.\n\n skipWhitespace();\n consumeCueSettings(input, cue);\n }\n\n function fixLineBreaks(input) {\n return input.replace(/ /gi, '\\n');\n }\n\n var VTTParser = /*#__PURE__*/function () {\n function VTTParser() {\n this.state = 'INITIAL';\n this.buffer = '';\n this.decoder = new StringDecoder();\n this.regionList = [];\n this.cue = null;\n this.oncue = void 0;\n this.onparsingerror = void 0;\n this.onflush = void 0;\n }\n\n var _proto3 = VTTParser.prototype;\n\n _proto3.parse = function parse(data) {\n var _this = this; // If there is no data then we won't decode it, but will just try to parse\n // whatever is in buffer already. This may occur in circumstances, for\n // example when flush() is called.\n\n\n if (data) {\n // Try to decode the data that we received.\n _this.buffer += _this.decoder.decode(data, {\n stream: true\n });\n }\n\n function collectNextLine() {\n var buffer = _this.buffer;\n var pos = 0;\n buffer = fixLineBreaks(buffer);\n\n while (pos < buffer.length && buffer[pos] !== '\\r' && buffer[pos] !== '\\n') {\n ++pos;\n }\n\n var line = buffer.substr(0, pos); // Advance the buffer early in case we fail below.\n\n if (buffer[pos] === '\\r') {\n ++pos;\n }\n\n if (buffer[pos] === '\\n') {\n ++pos;\n }\n\n _this.buffer = buffer.substr(pos);\n return line;\n } // 3.2 WebVTT metadata header syntax\n\n\n function parseHeader(input) {\n parseOptions(input, function (k, v) {// switch (k) {\n // case 'region':\n // 3.3 WebVTT region metadata header syntax\n // console.log('parse region', v);\n // parseRegion(v);\n // break;\n // }\n }, /:/);\n } // 5.1 WebVTT file parsing.\n\n\n try {\n var line = '';\n\n if (_this.state === 'INITIAL') {\n // We can't start parsing until we have the first line.\n if (!/\\r\\n|\\n/.test(_this.buffer)) {\n return this;\n }\n\n line = collectNextLine(); // strip of UTF-8 BOM if any\n // https://en.wikipedia.org/wiki/Byte_order_mark#UTF-8\n\n var m = line.match(/^()?WEBVTT([ \\t].*)?$/);\n\n if (!m || !m[0]) {\n throw new Error('Malformed WebVTT signature.');\n }\n\n _this.state = 'HEADER';\n }\n\n var alreadyCollectedLine = false;\n\n while (_this.buffer) {\n // We can't parse a line until we have the full line.\n if (!/\\r\\n|\\n/.test(_this.buffer)) {\n return this;\n }\n\n if (!alreadyCollectedLine) {\n line = collectNextLine();\n } else {\n alreadyCollectedLine = false;\n }\n\n switch (_this.state) {\n case 'HEADER':\n // 13-18 - Allow a header (metadata) under the WEBVTT line.\n if (/:/.test(line)) {\n parseHeader(line);\n } else if (!line) {\n // An empty line terminates the header and starts the body (cues).\n _this.state = 'ID';\n }\n\n continue;\n\n case 'NOTE':\n // Ignore NOTE blocks.\n if (!line) {\n _this.state = 'ID';\n }\n\n continue;\n\n case 'ID':\n // Check for the start of NOTE blocks.\n if (/^NOTE($|[ \\t])/.test(line)) {\n _this.state = 'NOTE';\n break;\n } // 19-29 - Allow any number of line terminators, then initialize new cue values.\n\n\n if (!line) {\n continue;\n }\n\n _this.cue = new _vttcue__WEBPACK_IMPORTED_MODULE_0__[\"default\"](0, 0, '');\n _this.state = 'CUE'; // 30-39 - Check if self line contains an optional identifier or timing data.\n\n if (line.indexOf('-->') === -1) {\n _this.cue.id = line;\n continue;\n }\n\n // Process line as start of a cue.\n\n /* falls through */\n\n case 'CUE':\n // 40 - Collect cue timings and settings.\n if (!_this.cue) {\n _this.state = 'BADCUE';\n continue;\n }\n\n try {\n parseCue(line, _this.cue, _this.regionList);\n } catch (e) {\n // In case of an error ignore rest of the cue.\n _this.cue = null;\n _this.state = 'BADCUE';\n continue;\n }\n\n _this.state = 'CUETEXT';\n continue;\n\n case 'CUETEXT':\n {\n var hasSubstring = line.indexOf('-->') !== -1; // 34 - If we have an empty line then report the cue.\n // 35 - If we have the special substring '-->' then report the cue,\n // but do not collect the line as we need to process the current\n // one as a new cue.\n\n if (!line || hasSubstring && (alreadyCollectedLine = true)) {\n // We are done parsing self cue.\n if (_this.oncue && _this.cue) {\n _this.oncue(_this.cue);\n }\n\n _this.cue = null;\n _this.state = 'ID';\n continue;\n }\n\n if (_this.cue === null) {\n continue;\n }\n\n if (_this.cue.text) {\n _this.cue.text += '\\n';\n }\n\n _this.cue.text += line;\n }\n continue;\n\n case 'BADCUE':\n // 54-62 - Collect and discard the remaining cue.\n if (!line) {\n _this.state = 'ID';\n }\n\n }\n }\n } catch (e) {\n // If we are currently parsing a cue, report what we have.\n if (_this.state === 'CUETEXT' && _this.cue && _this.oncue) {\n _this.oncue(_this.cue);\n }\n\n _this.cue = null; // Enter BADWEBVTT state if header was not parsed correctly otherwise\n // another exception occurred so enter BADCUE state.\n\n _this.state = _this.state === 'INITIAL' ? 'BADWEBVTT' : 'BADCUE';\n }\n\n return this;\n };\n\n _proto3.flush = function flush() {\n var _this = this;\n\n try {\n // Finish decoding the stream.\n // _this.buffer += _this.decoder.decode();\n // Synthesize the end of the current cue or region.\n if (_this.cue || _this.state === 'HEADER') {\n _this.buffer += '\\n\\n';\n\n _this.parse();\n } // If we've flushed, parsed, and we're still on the INITIAL state then\n // that means we don't have enough of the stream to parse the first\n // line.\n\n\n if (_this.state === 'INITIAL' || _this.state === 'BADWEBVTT') {\n throw new Error('Malformed WebVTT signature.');\n }\n } catch (e) {\n if (_this.onparsingerror) {\n _this.onparsingerror(e);\n }\n }\n\n if (_this.onflush) {\n _this.onflush();\n }\n\n return this;\n };\n\n return VTTParser;\n }();\n /***/\n\n },\n\n /***/\n \"./src/utils/webvtt-parser.ts\":\n /*!************************************!*\\\n !*** ./src/utils/webvtt-parser.ts ***!\n \\************************************/\n\n /*! exports provided: generateCueId, parseWebVTT */\n\n /***/\n function srcUtilsWebvttParserTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"generateCueId\", function () {\n return generateCueId;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"parseWebVTT\", function () {\n return parseWebVTT;\n });\n /* harmony import */\n\n\n var _home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ./src/polyfills/number */\n \"./src/polyfills/number.ts\");\n /* harmony import */\n\n\n var _vttparser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ./vttparser */\n \"./src/utils/vttparser.ts\");\n /* harmony import */\n\n\n var _demux_id3__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\n /*! ../demux/id3 */\n \"./src/demux/id3.ts\");\n /* harmony import */\n\n\n var _timescale_conversion__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\n /*! ./timescale-conversion */\n \"./src/utils/timescale-conversion.ts\");\n /* harmony import */\n\n\n var _remux_mp4_remuxer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\n /*! ../remux/mp4-remuxer */\n \"./src/remux/mp4-remuxer.ts\");\n\n var LINEBREAKS = /\\r\\n|\\n\\r|\\n|\\r/g; // String.prototype.startsWith is not supported in IE11\n\n var startsWith = function startsWith(inputString, searchString, position) {\n if (position === void 0) {\n position = 0;\n }\n\n return inputString.substr(position, searchString.length) === searchString;\n };\n\n var cueString2millis = function cueString2millis(timeString) {\n var ts = parseInt(timeString.substr(-3));\n var secs = parseInt(timeString.substr(-6, 2));\n var mins = parseInt(timeString.substr(-9, 2));\n var hours = timeString.length > 9 ? parseInt(timeString.substr(0, timeString.indexOf(':'))) : 0;\n\n if (!Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(ts) || !Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(secs) || !Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(mins) || !Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(hours)) {\n throw Error(\"Malformed X-TIMESTAMP-MAP: Local:\" + timeString);\n }\n\n ts += 1000 * secs;\n ts += 60 * 1000 * mins;\n ts += 60 * 60 * 1000 * hours;\n return ts;\n }; // From https://github.com/darkskyapp/string-hash\n\n\n var hash = function hash(text) {\n var hash = 5381;\n var i = text.length;\n\n while (i) {\n hash = hash * 33 ^ text.charCodeAt(--i);\n }\n\n return (hash >>> 0).toString();\n }; // Create a unique hash id for a cue based on start/end times and text.\n // This helps timeline-controller to avoid showing repeated captions.\n\n\n function generateCueId(startTime, endTime, text) {\n return hash(startTime.toString()) + hash(endTime.toString()) + hash(text);\n }\n\n var calculateOffset = function calculateOffset(vttCCs, cc, presentationTime) {\n var currCC = vttCCs[cc];\n var prevCC = vttCCs[currCC.prevCC]; // This is the first discontinuity or cues have been processed since the last discontinuity\n // Offset = current discontinuity time\n\n if (!prevCC || !prevCC.new && currCC.new) {\n vttCCs.ccOffset = vttCCs.presentationOffset = currCC.start;\n currCC.new = false;\n return;\n } // There have been discontinuities since cues were last parsed.\n // Offset = time elapsed\n\n\n while ((_prevCC = prevCC) !== null && _prevCC !== void 0 && _prevCC.new) {\n var _prevCC;\n\n vttCCs.ccOffset += currCC.start - prevCC.start;\n currCC.new = false;\n currCC = prevCC;\n prevCC = vttCCs[currCC.prevCC];\n }\n\n vttCCs.presentationOffset = presentationTime;\n };\n\n function parseWebVTT(vttByteArray, initPTS, timescale, vttCCs, cc, timeOffset, callBack, errorCallBack) {\n var parser = new _vttparser__WEBPACK_IMPORTED_MODULE_1__[\"VTTParser\"](); // Convert byteArray into string, replacing any somewhat exotic linefeeds with \"\\n\", then split on that character.\n // Uint8Array.prototype.reduce is not implemented in IE11\n\n var vttLines = Object(_demux_id3__WEBPACK_IMPORTED_MODULE_2__[\"utf8ArrayToStr\"])(new Uint8Array(vttByteArray)).trim().replace(LINEBREAKS, '\\n').split('\\n');\n var cues = [];\n var initPTS90Hz = Object(_timescale_conversion__WEBPACK_IMPORTED_MODULE_3__[\"toMpegTsClockFromTimescale\"])(initPTS, timescale);\n var cueTime = '00:00.000';\n var timestampMapMPEGTS = 0;\n var timestampMapLOCAL = 0;\n var parsingError;\n var inHeader = true;\n var timestampMap = false;\n\n parser.oncue = function (cue) {\n // Adjust cue timing; clamp cues to start no earlier than - and drop cues that don't end after - 0 on timeline.\n var currCC = vttCCs[cc];\n var cueOffset = vttCCs.ccOffset; // Calculate subtitle PTS offset\n\n var webVttMpegTsMapOffset = (timestampMapMPEGTS - initPTS90Hz) / 90000; // Update offsets for new discontinuities\n\n if (currCC !== null && currCC !== void 0 && currCC.new) {\n if (timestampMapLOCAL !== undefined) {\n // When local time is provided, offset = discontinuity start time - local time\n cueOffset = vttCCs.ccOffset = currCC.start;\n } else {\n calculateOffset(vttCCs, cc, webVttMpegTsMapOffset);\n }\n }\n\n if (webVttMpegTsMapOffset) {\n // If we have MPEGTS, offset = presentation time + discontinuity offset\n cueOffset = webVttMpegTsMapOffset - vttCCs.presentationOffset;\n }\n\n if (timestampMap) {\n var duration = cue.endTime - cue.startTime;\n var startTime = Object(_remux_mp4_remuxer__WEBPACK_IMPORTED_MODULE_4__[\"normalizePts\"])((cue.startTime + cueOffset - timestampMapLOCAL) * 90000, timeOffset * 90000) / 90000;\n cue.startTime = startTime;\n cue.endTime = startTime + duration;\n } //trim trailing webvtt block whitespaces\n\n\n var text = cue.text.trim(); // Fix encoding of special characters\n\n cue.text = decodeURIComponent(encodeURIComponent(text)); // If the cue was not assigned an id from the VTT file (line above the content), create one.\n\n if (!cue.id) {\n cue.id = generateCueId(cue.startTime, cue.endTime, text);\n }\n\n if (cue.endTime > 0) {\n cues.push(cue);\n }\n };\n\n parser.onparsingerror = function (error) {\n parsingError = error;\n };\n\n parser.onflush = function () {\n if (parsingError) {\n errorCallBack(parsingError);\n return;\n }\n\n callBack(cues);\n }; // Go through contents line by line.\n\n\n vttLines.forEach(function (line) {\n if (inHeader) {\n // Look for X-TIMESTAMP-MAP in header.\n if (startsWith(line, 'X-TIMESTAMP-MAP=')) {\n // Once found, no more are allowed anyway, so stop searching.\n inHeader = false;\n timestampMap = true; // Extract LOCAL and MPEGTS.\n\n line.substr(16).split(',').forEach(function (timestamp) {\n if (startsWith(timestamp, 'LOCAL:')) {\n cueTime = timestamp.substr(6);\n } else if (startsWith(timestamp, 'MPEGTS:')) {\n timestampMapMPEGTS = parseInt(timestamp.substr(7));\n }\n });\n\n try {\n // Convert cue time to seconds\n timestampMapLOCAL = cueString2millis(cueTime) / 1000;\n } catch (error) {\n timestampMap = false;\n parsingError = error;\n } // Return without parsing X-TIMESTAMP-MAP line.\n\n\n return;\n } else if (line === '') {\n inHeader = false;\n }\n } // Parse line by default.\n\n\n parser.parse(line + '\\n');\n });\n parser.flush();\n }\n /***/\n\n },\n\n /***/\n \"./src/utils/xhr-loader.ts\":\n /*!*********************************!*\\\n !*** ./src/utils/xhr-loader.ts ***!\n \\*********************************/\n\n /*! exports provided: default */\n\n /***/\n function srcUtilsXhrLoaderTs(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony import */\n\n\n var _utils_logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\n /*! ../utils/logger */\n \"./src/utils/logger.ts\");\n /* harmony import */\n\n\n var _loader_load_stats__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\n /*! ../loader/load-stats */\n \"./src/loader/load-stats.ts\");\n\n var AGE_HEADER_LINE_REGEX = /^age:\\s*[\\d.]+\\s*$/m;\n\n var XhrLoader = /*#__PURE__*/function () {\n function XhrLoader(config\n /* HlsConfig */\n ) {\n this.xhrSetup = void 0;\n this.requestTimeout = void 0;\n this.retryTimeout = void 0;\n this.retryDelay = void 0;\n this.config = null;\n this.callbacks = null;\n this.context = void 0;\n this.loader = null;\n this.stats = void 0;\n this.xhrSetup = config ? config.xhrSetup : null;\n this.stats = new _loader_load_stats__WEBPACK_IMPORTED_MODULE_1__[\"LoadStats\"]();\n this.retryDelay = 0;\n }\n\n var _proto = XhrLoader.prototype;\n\n _proto.destroy = function destroy() {\n this.callbacks = null;\n this.abortInternal();\n this.loader = null;\n this.config = null;\n };\n\n _proto.abortInternal = function abortInternal() {\n var loader = this.loader;\n self.clearTimeout(this.requestTimeout);\n self.clearTimeout(this.retryTimeout);\n\n if (loader) {\n loader.onreadystatechange = null;\n loader.onprogress = null;\n\n if (loader.readyState !== 4) {\n this.stats.aborted = true;\n loader.abort();\n }\n }\n };\n\n _proto.abort = function abort() {\n var _this$callbacks;\n\n this.abortInternal();\n\n if ((_this$callbacks = this.callbacks) !== null && _this$callbacks !== void 0 && _this$callbacks.onAbort) {\n this.callbacks.onAbort(this.stats, this.context, this.loader);\n }\n };\n\n _proto.load = function load(context, config, callbacks) {\n if (this.stats.loading.start) {\n throw new Error('Loader can only be used once.');\n }\n\n this.stats.loading.start = self.performance.now();\n this.context = context;\n this.config = config;\n this.callbacks = callbacks;\n this.retryDelay = config.retryDelay;\n this.loadInternal();\n };\n\n _proto.loadInternal = function loadInternal() {\n var config = this.config,\n context = this.context;\n\n if (!config) {\n return;\n }\n\n var xhr = this.loader = new self.XMLHttpRequest();\n var stats = this.stats;\n stats.loading.first = 0;\n stats.loaded = 0;\n var xhrSetup = this.xhrSetup;\n\n try {\n if (xhrSetup) {\n try {\n xhrSetup(xhr, context.url);\n } catch (e) {\n // fix xhrSetup: (xhr, url) => {xhr.setRequestHeader(\"Content-Language\", \"test\");}\n // not working, as xhr.setRequestHeader expects xhr.readyState === OPEN\n xhr.open('GET', context.url, true);\n xhrSetup(xhr, context.url);\n }\n }\n\n if (!xhr.readyState) {\n xhr.open('GET', context.url, true);\n }\n\n var headers = this.context.headers;\n\n if (headers) {\n for (var header in headers) {\n xhr.setRequestHeader(header, headers[header]);\n }\n }\n } catch (e) {\n // IE11 throws an exception on xhr.open if attempting to access an HTTP resource over HTTPS\n this.callbacks.onError({\n code: xhr.status,\n text: e.message\n }, context, xhr);\n return;\n }\n\n if (context.rangeEnd) {\n xhr.setRequestHeader('Range', 'bytes=' + context.rangeStart + '-' + (context.rangeEnd - 1));\n }\n\n xhr.onreadystatechange = this.readystatechange.bind(this);\n xhr.onprogress = this.loadprogress.bind(this);\n xhr.responseType = context.responseType; // setup timeout before we perform request\n\n self.clearTimeout(this.requestTimeout);\n this.requestTimeout = self.setTimeout(this.loadtimeout.bind(this), config.timeout);\n xhr.send();\n };\n\n _proto.readystatechange = function readystatechange() {\n var context = this.context,\n xhr = this.loader,\n stats = this.stats;\n\n if (!context || !xhr) {\n return;\n }\n\n var readyState = xhr.readyState;\n var config = this.config; // don't proceed if xhr has been aborted\n\n if (stats.aborted) {\n return;\n } // >= HEADERS_RECEIVED\n\n\n if (readyState >= 2) {\n // clear xhr timeout and rearm it if readyState less than 4\n self.clearTimeout(this.requestTimeout);\n\n if (stats.loading.first === 0) {\n stats.loading.first = Math.max(self.performance.now(), stats.loading.start);\n }\n\n if (readyState === 4) {\n xhr.onreadystatechange = null;\n xhr.onprogress = null;\n var status = xhr.status; // http status between 200 to 299 are all successful\n\n if (status >= 200 && status < 300) {\n stats.loading.end = Math.max(self.performance.now(), stats.loading.first);\n var data;\n var len;\n\n if (context.responseType === 'arraybuffer') {\n data = xhr.response;\n len = data.byteLength;\n } else {\n data = xhr.responseText;\n len = data.length;\n }\n\n stats.loaded = stats.total = len;\n\n if (!this.callbacks) {\n return;\n }\n\n var onProgress = this.callbacks.onProgress;\n\n if (onProgress) {\n onProgress(stats, context, data, xhr);\n }\n\n if (!this.callbacks) {\n return;\n }\n\n var response = {\n url: xhr.responseURL,\n data: data\n };\n this.callbacks.onSuccess(response, stats, context, xhr);\n } else {\n // if max nb of retries reached or if http status between 400 and 499 (such error cannot be recovered, retrying is useless), return error\n if (stats.retry >= config.maxRetry || status >= 400 && status < 499) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_0__[\"logger\"].error(status + \" while loading \" + context.url);\n\n this.callbacks.onError({\n code: status,\n text: xhr.statusText\n }, context, xhr);\n } else {\n // retry\n _utils_logger__WEBPACK_IMPORTED_MODULE_0__[\"logger\"].warn(status + \" while loading \" + context.url + \", retrying in \" + this.retryDelay + \"...\"); // abort and reset internal state\n\n\n this.abortInternal();\n this.loader = null; // schedule retry\n\n self.clearTimeout(this.retryTimeout);\n this.retryTimeout = self.setTimeout(this.loadInternal.bind(this), this.retryDelay); // set exponential backoff\n\n this.retryDelay = Math.min(2 * this.retryDelay, config.maxRetryDelay);\n stats.retry++;\n }\n }\n } else {\n // readyState >= 2 AND readyState !==4 (readyState = HEADERS_RECEIVED || LOADING) rearm timeout as xhr not finished yet\n self.clearTimeout(this.requestTimeout);\n this.requestTimeout = self.setTimeout(this.loadtimeout.bind(this), config.timeout);\n }\n }\n };\n\n _proto.loadtimeout = function loadtimeout() {\n _utils_logger__WEBPACK_IMPORTED_MODULE_0__[\"logger\"].warn(\"timeout while loading \" + this.context.url);\n\n var callbacks = this.callbacks;\n\n if (callbacks) {\n this.abortInternal();\n callbacks.onTimeout(this.stats, this.context, this.loader);\n }\n };\n\n _proto.loadprogress = function loadprogress(event) {\n var stats = this.stats;\n stats.loaded = event.loaded;\n\n if (event.lengthComputable) {\n stats.total = event.total;\n }\n };\n\n _proto.getCacheAge = function getCacheAge() {\n var result = null;\n\n if (this.loader && AGE_HEADER_LINE_REGEX.test(this.loader.getAllResponseHeaders())) {\n var ageHeader = this.loader.getResponseHeader('age');\n result = ageHeader ? parseFloat(ageHeader) : null;\n }\n\n return result;\n };\n\n return XhrLoader;\n }();\n /* harmony default export */\n\n\n __webpack_exports__[\"default\"] = XhrLoader;\n /***/\n }\n /******/\n\n })[\"default\"]\n );\n});","module.exports = __webpack_public_path__ + \"media/top/separation-27151d08.png\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.shooting),expression:\"shooting\"}]},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.capturedUrl == ''),expression:\"capturedUrl == ''\"}],staticClass:\"row bgw\"},[(!_vm.errorMsg == '')?_c('div',{staticClass:\"alert alert-danger alert-rounded w100\"},[_vm._v(\"\\n \"+_vm._s(_vm.errorMsg)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"text-center col-sm-12 col-md-4 col-md-offset-4 mt-4 video_wrapper\",attrs:{\"id\":\"faceCamera\"}},[_c('video',{ref:\"video\",attrs:{\"id\":\"video\",\"autoplay\":\"\",\"width\":\"300\",\"height\":\"200\"}}),_vm._v(\" \"),_c('img',{attrs:{\"src\":require(\"face_size_image.png\"),\"width\":\"300\",\"height\":\"200\",\"id\":\"faceSizeImage\"}})]),_vm._v(\" \"),(!_vm.showCautionModal)?_c('div',{staticClass:\"col-12 text-center mb-4 mt-2\"},[_c('a',{staticClass:\"btn btn--circle btn--circle-a btn--shadow\",attrs:{\"href\":\"#\",\"id\":\"camera-icon\"},on:{\"click\":function($event){return _vm.capture()}}},[_c('i',{staticClass:\"fas fa-camera fs28\"})])]):_vm._e()]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.capturedUrl == ''),expression:\"!capturedUrl == ''\"}],staticClass:\"row bgw\"},[_c('div',{staticClass:\"col-sm-12 col-md-4 text-center mt-4 video_wrapper\"},[_c('img',{attrs:{\"src\":_vm.capturedUrl}})])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.capturedUrl == ''),expression:\"!capturedUrl == ''\"}],staticClass:\"row bgw pr-3 pl-3 pb-5 pt-3\"},[_c('div',{staticClass:\"col-sm-12 col-md-6 text-center mt-3\"},[_c('button',{staticClass:\"btn btn-block btn-rounded btn-secondary\",on:{\"click\":_vm.retake}},[_vm._v(\"取り直し\")])]),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-12 col-md-6 text-center mt-3\"},[_c('button',{staticClass:\"btn btn-block btn-rounded btn-success\",on:{\"click\":_vm.save}},[_vm._v(\"決定\")])])]),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"canvas_wrapper\"}},[_c('canvas',{ref:\"canvas\",attrs:{\"id\":\"canvas\",\"width\":\"300px\",\"height\":\"200px\"}})]),_vm._v(\" \"),_c('fetch-location',{on:{\"setLocation\":_vm.setLocation}}),_vm._v(\" \"),_c('photo-untakeable-modal'),_vm._v(\" \"),_c('location-incorrect-modal')],1),_vm._v(\" \"),_c('Loading',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.shooting),expression:\"!shooting\"}]})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n
\n
\n
\n {{ errorMsg }}\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n 取り直し \n
\n
\n 決定 \n
\n
\n\n
\n \n
\n\n
\n
\n
\n
\n
\n \n \n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TakeCollatingPhoto.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TakeCollatingPhoto.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TakeCollatingPhoto.vue?vue&type=template&id=4f2b4662&\"\nimport script from \"./TakeCollatingPhoto.vue?vue&type=script&lang=js&\"\nexport * from \"./TakeCollatingPhoto.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TakeCollatingPhoto.vue?vue&type=style&index=0&scope=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import e from \"jquery\";\nimport \"select2/dist/js/select2.full\";\nimport \"select2/dist/css/select2.min.css\";\n\nfunction t(e, t, n) {\n return t in e ? Object.defineProperty(e, t, {\n value: n,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[t] = n, e;\n}\n\nfunction n(e, t) {\n var n = Object.keys(e);\n\n if (Object.getOwnPropertySymbols) {\n var r = Object.getOwnPropertySymbols(e);\n t && (r = r.filter(function (t) {\n return Object.getOwnPropertyDescriptor(e, t).enumerable;\n })), n.push.apply(n, r);\n }\n\n return n;\n}\n\nfunction r(e) {\n for (var r = 1; r < arguments.length; r++) {\n var o = null != arguments[r] ? arguments[r] : {};\n r % 2 ? n(Object(o), !0).forEach(function (n) {\n t(e, n, o[n]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(o)) : n(Object(o)).forEach(function (t) {\n Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(o, t));\n });\n }\n\n return e;\n}\n\nfunction o(e) {\n return function (e) {\n if (Array.isArray(e)) return i(e);\n }(e) || function (e) {\n if (\"undefined\" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e);\n }(e) || function (e, t) {\n if (!e) return;\n if (\"string\" == typeof e) return i(e, t);\n var n = Object.prototype.toString.call(e).slice(8, -1);\n \"Object\" === n && e.constructor && (n = e.constructor.name);\n if (\"Map\" === n || \"Set\" === n) return Array.from(e);\n if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return i(e, t);\n }(e) || function () {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }();\n}\n\nfunction i(e, t) {\n (null == t || t > e.length) && (t = e.length);\n\n for (var n = 0, r = new Array(t); n < t; n++) {\n r[n] = e[n];\n }\n\n return r;\n}\n\nfunction s(e, t, n, r, o, i, s, c, l, a) {\n \"boolean\" != typeof s && (l = c, c = s, s = !1);\n var u = \"function\" == typeof n ? n.options : n;\n var f;\n if (e && e.render && (u.render = e.render, u.staticRenderFns = e.staticRenderFns, u._compiled = !0, o && (u.functional = !0)), r && (u._scopeId = r), i ? (f = function f(e) {\n (e = e || this.$vnode && this.$vnode.ssrContext || this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) || \"undefined\" == typeof __VUE_SSR_CONTEXT__ || (e = __VUE_SSR_CONTEXT__), t && t.call(this, l(e)), e && e._registeredComponents && e._registeredComponents.add(i);\n }, u._ssrRegister = f) : t && (f = s ? function (e) {\n t.call(this, a(e, this.$root.$options.shadowRoot));\n } : function (e) {\n t.call(this, c(e));\n }), f) if (u.functional) {\n var _e = u.render;\n\n u.render = function (t, n) {\n return f.call(n), _e(t, n);\n };\n } else {\n var _e2 = u.beforeCreate;\n u.beforeCreate = _e2 ? [].concat(_e2, f) : [f];\n }\n return n;\n}\n\nvar c = s({\n render: function render() {\n var e = this.$createElement,\n t = this._self._c || e;\n return t(\"div\", [t(\"select\", {\n staticClass: \"form-control\",\n attrs: {\n id: this.id,\n name: this.name,\n disabled: this.disabled,\n required: this.required\n }\n })]);\n },\n staticRenderFns: []\n}, void 0, {\n name: \"Select2\",\n data: function data() {\n return {\n select2: null\n };\n },\n model: {\n event: \"change\",\n prop: \"value\"\n },\n props: {\n id: {\n type: String,\n default: \"\"\n },\n name: {\n type: String,\n default: \"\"\n },\n placeholder: {\n type: String,\n default: \"\"\n },\n options: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n disabled: {\n type: Boolean,\n default: !1\n },\n required: {\n type: Boolean,\n default: !1\n },\n settings: {\n type: Object,\n default: function _default() {}\n },\n value: null\n },\n watch: {\n options: function options(e) {\n this.setOption(e);\n },\n value: function value(e) {\n this.setValue(e);\n }\n },\n methods: {\n setOption: function setOption() {\n var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];\n this.select2.empty(), this.select2.select2(r(r({\n placeholder: this.placeholder\n }, this.settings), {}, {\n data: e\n })), this.setValue(this.value);\n },\n setValue: function setValue(e) {\n e instanceof Array ? this.select2.val(o(e)) : this.select2.val([e]), this.select2.trigger(\"change\");\n }\n },\n mounted: function mounted() {\n var t = this;\n this.select2 = e(this.$el).find(\"select\").select2(r(r({\n placeholder: this.placeholder\n }, this.settings), {}, {\n data: this.options\n })).on(\"select2:select select2:unselect\", function (e) {\n t.$emit(\"change\", t.select2.val()), t.$emit(\"select\", e.params.data);\n }).on(\"select2:closing\", function (e) {\n t.$emit(\"closing\", e);\n }).on(\"select2:close\", function (e) {\n t.$emit(\"close\", e);\n }).on(\"select2:opening\", function (e) {\n t.$emit(\"opening\", e);\n }).on(\"select2:open\", function (e) {\n t.$emit(\"open\", e);\n }).on(\"select2:clearing\", function (e) {\n t.$emit(\"clearing\", e);\n }).on(\"select2:clear\", function (e) {\n t.$emit(\"clear\", e);\n }), this.setValue(this.value);\n },\n beforeDestroy: function beforeDestroy() {\n this.select2.select2(\"destroy\");\n }\n}, void 0, !1, void 0, !1, void 0, void 0, void 0);\n\nfunction l(e) {\n l.installed || (l.installed = !0, e.component(\"MyComponent\", c));\n}\n\nvar a = {\n install: l\n},\n u = null;\n\"undefined\" != typeof window ? u = window.Vue : \"undefined\" != typeof global && (u = global.Vue), u && u.use(a);\nexport default c;\nexport { l as install };","/**\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 define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\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 define(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 = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\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 define(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 define(genFun, toStringTagSymbol, \"GeneratorFunction\");\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, PromiseImpl) {\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 PromiseImpl.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 PromiseImpl.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 PromiseImpl(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 define(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, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\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 define(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 define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(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, in modern engines\n // we can explicitly access globalThis. In older engines 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 if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","'use strict';\n\nvar utils = require('./utils');\n\nvar bind = require('./helpers/bind');\n\nvar Axios = require('./core/Axios');\n\nvar mergeConfig = require('./core/mergeConfig');\n\nvar defaults = require('./defaults');\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\n\n\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context); // Copy axios.prototype to instance\n\n utils.extend(instance, Axios.prototype, context); // Copy context to instance\n\n utils.extend(instance, context);\n return instance;\n} // Create the default instance to be exported\n\n\nvar axios = createInstance(defaults); // Expose Axios class to allow class inheritance\n\naxios.Axios = Axios; // Factory for creating new instances\n\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n}; // Expose Cancel & CancelToken\n\n\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel'); // Expose all/spread\n\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = require('./helpers/spread'); // Expose isAxiosError\n\naxios.isAxiosError = require('./helpers/isAxiosError');\nmodule.exports = axios; // Allow use of default import syntax in TypeScript\n\nmodule.exports.default = axios;","'use strict';\n\nvar utils = require('./../utils');\n\nvar buildURL = require('../helpers/buildURL');\n\nvar InterceptorManager = require('./InterceptorManager');\n\nvar dispatchRequest = require('./dispatchRequest');\n\nvar mergeConfig = require('./mergeConfig');\n\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\n\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\n\n\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config); // Set config.method\n\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n } // filter out skipped interceptors\n\n\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n promise = Promise.resolve(config);\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n var newConfig = config;\n\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n}; // Provide aliases for supported request methods\n\n\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function (url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function (url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\nmodule.exports = Axios;","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n\n\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\n\n\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\n\n\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;","'use strict';\n\nvar utils = require('./../utils');\n\nvar transformData = require('./transformData');\n\nvar isCancel = require('../cancel/isCancel');\n\nvar defaults = require('../defaults');\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\n\n\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\n\n\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config); // Ensure headers exist\n\n config.headers = config.headers || {}; // Transform request data\n\n config.data = transformData.call(config, config.data, config.headers, config.transformRequest); // Flatten headers\n\n config.headers = utils.merge(config.headers.common || {}, config.headers[config.method] || {}, config.headers);\n utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], function cleanHeaderConfig(method) {\n delete config.headers[method];\n });\n var adapter = config.adapter || defaults.adapter;\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config); // Transform response data\n\n response.data = transformData.call(config, response.data, response.headers, config.transformResponse);\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config); // Transform response data\n\n if (reason && reason.response) {\n reason.response.data = transformData.call(config, reason.response.data, reason.response.headers, config.transformResponse);\n }\n }\n\n return Promise.reject(reason);\n });\n};","'use strict';\n\nvar utils = require('./../utils');\n\nvar defaults = require('./../defaults');\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\n\n\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n return data;\n};","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};","'use strict';\n\nvar createError = require('./createError');\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\n\n\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError('Request failed with status code ' + response.status, response.config, null, response.request, response));\n }\n};","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = utils.isStandardBrowserEnv() ? // Standard browser envs support document.cookie\nfunction standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return match ? decodeURIComponent(match[3]) : null;\n },\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n}() : // Non standard browser env (web workers, react-native) lack needed support.\nfunction nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() {\n return null;\n },\n remove: function remove() {}\n };\n}();","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\n\nvar combineURLs = require('../helpers/combineURLs');\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\n\n\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n\n return requestedURL;\n};","'use strict';\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\n\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};","'use strict';\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\n\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '') : baseURL;\n};","'use strict';\n\nvar utils = require('./../utils'); // Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\n\n\nvar ignoreDuplicateOf = ['age', 'authorization', 'content-length', 'content-type', 'etag', 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 'referer', 'retry-after', 'user-agent'];\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\n\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) {\n return parsed;\n }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n return parsed;\n};","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = utils.isStandardBrowserEnv() ? // Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\nfunction standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href); // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: urlParsingNode.pathname.charAt(0) === '/' ? urlParsingNode.pathname : '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n\n return function isURLSameOrigin(requestURL) {\n var parsed = utils.isString(requestURL) ? resolveURL(requestURL) : requestURL;\n return parsed.protocol === originURL.protocol && parsed.host === originURL.host;\n };\n}() : // Non standard browser envs (web workers, react-native) lack needed support.\nfunction nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n}();","'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nvar pkg = require('./../../package.json');\n\nvar validators = {}; // eslint-disable-next-line func-names\n\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function (type, i) {\n validators[type] = function validator(thing) {\n return _typeof(thing) === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\n\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n\n return false;\n}\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\n\n\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n } // eslint-disable-next-line func-names\n\n\n return function (value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true; // eslint-disable-next-line no-console\n\n console.warn(formatMessage(opt, ' has been deprecated since v' + version + ' and will be removed in the near future'));\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (_typeof(options) !== 'object') {\n throw new TypeError('options must be an object');\n }\n\n var keys = Object.keys(options);\n var i = keys.length;\n\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n\n continue;\n }\n\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};","'use strict';\n\nvar Cancel = require('./Cancel');\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\n\n\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\n\n\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n\n\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;","'use strict';\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\n\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};","'use strict';\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nmodule.exports = function isAxiosError(payload) {\n return _typeof(payload) === 'object' && payload.isAxiosError === true;\n};","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/dist/cjs.js??ref--4-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--4-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loading.vue?vue&type=style&index=0&id=8fd09e16&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/dist/cjs.js??ref--4-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--4-2!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotoUntakeableModal.vue?vue&type=style&index=0&id=515b405d&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/dist/cjs.js??ref--4-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--4-2!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocationIncorrectModal.vue?vue&type=style&index=0&id=d480a224&scoped=true&lang=css&\"","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.1\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n\nvar timeoutDuration = function () {\n var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n\n for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n\n return 0;\n}();\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\n\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\n\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\n\n\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n } // NOTE: 1 DOM access here\n\n\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\n\n\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n\n return element.parentNode || element.host;\n}\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\n\n\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n\n case '#document':\n return element.body;\n } // Firefox want us to check `-x` and `-y` variations as well\n\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\n\n\nfunction getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\n\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n\n if (version === 10) {\n return isIE10;\n }\n\n return isIE11 || isIE10;\n}\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\n\n\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null; // NOTE: 1 DOM access here\n\n var offsetParent = element.offsetParent || null; // Skip hidden elements which don't have an offsetParent\n\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n } // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n\n\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\n\n\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\n\n\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n } // Here we make sure to give as \"start\" the element that comes first in the DOM\n\n\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1; // Get common ancestor container\n\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer; // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n } // one of the nodes is inside shadowDOM, find which one\n\n\n var element1root = getRoot(element1);\n\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\n\n\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\n\n\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar defineProperty = function defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\n\n\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\n\n\nfunction getBoundingClientRect(element) {\n var rect = {}; // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n }; // subtract scrollbar size from sizes\n\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.width;\n var height = sizes.height || element.clientHeight || result.height;\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height; // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth); // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0; // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop);\n var marginLeft = parseFloat(styles.marginLeft);\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft; // Attach marginTop and marginLeft because in some circumstances we may need them\n\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n return getClientRect(offset);\n}\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\n\n\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n\n var parentNode = getParentNode(element);\n\n if (!parentNode) {\n return false;\n }\n\n return isFixed(parentNode);\n}\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n\n var el = element.parentElement;\n\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n\n return el || document.documentElement;\n}\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\n\n\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; // NOTE: 1 DOM access here\n\n var boundaries = {\n top: 0,\n left: 0\n };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference)); // Handle viewport case\n\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition); // In case of HTML, we need a different computation\n\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n } // Add paddings\n\n\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n return width * height;\n}\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n var variation = placement.split('-')[1];\n return computedPlacement + (variation ? '-' + variation : '');\n}\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\n\n\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\n\n\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\n\n\nfunction getOppositePlacement(placement) {\n var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\n\n\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0]; // Get popper node sizes\n\n var popperRect = getOuterSizes(popper); // Add position, width and height to our offsets object\n\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n }; // depending by the popper placement we have to compute its offsets slightly differently\n\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\n\n\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n } // use `filter` to obtain the same behavior of `find`\n\n\n return arr.filter(check)[0];\n}\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\n\n\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n } // use `find` + `indexOf` if `findIndex` isn't supported\n\n\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\n\n\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n data = fn(data, modifier);\n }\n });\n return data;\n}\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style. \n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\n\n\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n }; // compute reference element offsets\n\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed); // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding); // store the computed placement inside `originalPlacement`\n\n data.originalPlacement = data.placement;\n data.positionFixed = this.options.positionFixed; // compute the popper offsets\n\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute'; // run the modifiers\n\n data = runModifiers(this.modifiers, data); // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\n\n\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\n\n\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n\n return null;\n}\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\n\n\nfunction destroy() {\n this.state.isDestroyed = true; // touch DOM only if `applyStyle` modifier is enabled\n\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners(); // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n\n return this;\n}\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\n\n\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, {\n passive: true\n });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n\n scrollParents.push(target);\n}\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\n\n\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, {\n passive: true\n }); // Scroll event listener on scroll parents\n\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n return state;\n}\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\n\n\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\n\n\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound); // Remove scroll event listener on scroll parents\n\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n }); // Reset state\n\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\n\n\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\n\n\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\n\n\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = ''; // add unit if the value is numeric and is one of the following\n\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n\n element.style[prop] = styles[prop] + unit;\n });\n}\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\n\n\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\n\n\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles); // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n\n setAttributes(data.instance.popper, data.attributes); // if arrowElement is defined and arrowStyles has some properties\n\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\n\n\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed); // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n popper.setAttribute('x-placement', placement); // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n\n setStyles(popper, {\n position: options.positionFixed ? 'fixed' : 'absolute'\n });\n return options;\n}\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\n\n\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper; // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent); // Styles\n\n var styles = {\n position: popper.position\n };\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right'; // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n\n var prefixedProperty = getSupportedPropertyName('transform'); // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n\n var left = void 0,\n top = void 0;\n\n if (sideA === 'bottom') {\n // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n } // Attributes\n\n\n var attributes = {\n 'x-placement': data.placement\n }; // Update `data` attributes, styles and arrowStyles\n\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n return data;\n}\n/**\n * Helper used to know if the given modifier depends from another one. \n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\n\n\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n\n return isRequired;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction arrow(data, options) {\n var _data$offsets$arrow; // arrow depends on keepTogether in order to work\n\n\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element; // if arrowElement is a string, suppose it's a CSS selector\n\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement); // if arrowElement is not found, don't run the modifier\n\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len]; //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n // top/left side\n\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n } // bottom/right side\n\n\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n\n data.offsets.popper = getClientRect(data.offsets.popper); // compute center of the popper\n\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2; // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide; // prevent arrowElement from being placed not contiguously to its popper\n\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n return data;\n}\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\n\n\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n\n return variation;\n}\n/**\n * List of accepted placements to use as values of the `placement` option. \n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right. \n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\n\n\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start']; // Get rid of `auto` `auto-start` and `auto-end`\n\nvar validPlacements = placements.slice(3);\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\n\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference; // using floor because the reference offsets may contain decimals we are not going to consider here\n\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom; // flip the variation if required\n\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1; // flips variation if reference element overflows boundaries\n\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom); // flips variation if popper content overflows boundaries\n\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : ''); // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\n\n\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2]; // If it's not a number it's an operator, I guess\n\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\n\n\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0]; // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1; // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n }); // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n } // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n\n\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments]; // Convert the values with units to absolute pixels to allow our computations\n\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, []) // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n }); // Loop trough the offsets arrays and execute the operations\n\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var basePlacement = placement.split('-')[0];\n var offsets = void 0;\n\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper); // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n } // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n\n\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed); // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n options.boundaries = boundaries;\n var order = options.priority;\n var popper = data.offsets.popper;\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n\n return defineProperty({}, mainSide, value);\n }\n };\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n data.offsets.popper = popper;\n return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1]; // if shift shiftvariation is specified, run the modifier\n\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n return data;\n}\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property. \n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers. \n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\n\n\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element. \n * It will read the variation of the `placement` property. \n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper. \n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces. \n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2. \n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n\n /** @prop {ModifierFn} */\n fn: offset,\n\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries. \n * We can say it has \"escaped the boundaries\" — or just \"escaped\". \n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n\n /** @prop {ModifierFn} */\n fn: arrow,\n\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n\n /** @prop {ModifierFn} */\n fn: flip,\n\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n\n /** @prop {ModifierFn} */\n fn: computeStyle,\n\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n\n /** @prop {ModifierFn} */\n fn: applyStyle,\n\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor. \n * These can be overridden using the `options` argument of Popper.js. \n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\n\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created. \n * By default, it is set to no-op. \n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates. \n * By default, it is set to no-op. \n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n// Utils\n// Methods\n\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n }; // make update() debounced, so that it only runs at most once-per-tick\n\n\n this.update = debounce(this.update.bind(this)); // with {} we create a new object with the options inside it\n\n this.options = _extends({}, Popper.Defaults, options); // init state\n\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n }; // get reference and popper elements (allow jQuery wrappers)\n\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper; // Deep merge modifiers options\n\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n }); // Refactoring modifiers' list (Object => Array)\n\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n }) // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n }); // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n }); // fire the first update to position the popper in the right place\n\n this.update();\n var eventsEnabled = this.options.eventsEnabled;\n\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n } // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node. \n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\nexport default Popper;","import React from \"react\"\n\nconst Calendar = (props) => {\n const content = props.content\n \n return (\n \n Content: {content}\n \n );\n};\n\nexport default Calendar;","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n'use strict';\n/* eslint-disable no-unused-vars */\n\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n if (val === null || val === undefined) {\n throw new TypeError('Object.assign cannot be called with null or undefined');\n }\n\n return Object(val);\n}\n\nfunction shouldUseNative() {\n try {\n if (!Object.assign) {\n return false;\n } // Detect buggy property enumeration order in older V8 versions.\n // https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\n\n var test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\n test1[5] = 'de';\n\n if (Object.getOwnPropertyNames(test1)[0] === '5') {\n return false;\n } // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\n\n var test2 = {};\n\n for (var i = 0; i < 10; i++) {\n test2['_' + String.fromCharCode(i)] = i;\n }\n\n var order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n return test2[n];\n });\n\n if (order2.join('') !== '0123456789') {\n return false;\n } // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\n\n var test3 = {};\n 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n test3[letter] = letter;\n });\n\n if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {\n return false;\n }\n\n return true;\n } catch (err) {\n // We don't expect any of the above to throw, but better to be safe.\n return false;\n }\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n var from;\n var to = toObject(target);\n var symbols;\n\n for (var s = 1; s < arguments.length; s++) {\n from = Object(arguments[s]);\n\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n\n if (getOwnPropertySymbols) {\n symbols = getOwnPropertySymbols(from);\n\n for (var i = 0; i < symbols.length; i++) {\n if (propIsEnumerable.call(from, symbols[i])) {\n to[symbols[i]] = from[symbols[i]];\n }\n }\n }\n }\n\n return to;\n};","module.exports = __webpack_public_path__ + \"media/navi/photo_keyflow_1-54f13165.png\";","module.exports = __webpack_public_path__ + \"media/navi/photo_keyflow_2-57c5f911.png\";","module.exports = __webpack_public_path__ + \"media/navi/photo_keyflow_3-74d77fe1.png\";","module.exports = __webpack_public_path__ + \"media/navi/photo_keyflow_4-fb7b7b5c.png\";","module.exports = __webpack_public_path__ + \"media/navi/populife_open-5a75e817.png\";","module.exports = __webpack_public_path__ + \"media/navi/populife_close-8934718e.png\";","module.exports = __webpack_public_path__ + \"media/navi/populife_lock-4d1bf07d.png\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('p',[_vm._v(\"現在の内見フロー: \"),_c('span',{staticClass:\"fwb\"},[_vm._v(_vm._s(_vm.currentStepText))])]),_vm._v(\" \"),(_vm.showIdentificationBtn)?_c('a',{staticClass:\"btn btn-md btn-outline-success btn-rounded mt-3 mr-3\",class:_vm.identifyDisabledClass,attrs:{\"href\":\"\"},on:{\"click\":function($event){$event.preventDefault();return _vm.onIdentifyBtnClicked()}}},[_c('i',{staticClass:\"fas fa-id-badge\"}),_vm._v(\"\\n \"+_vm._s(_vm.identifyBtnText))]):_vm._e(),_vm._v(\" \"),_c('a',{staticClass:\"btn btn-md btn-outline-info btn-rounded mt-3\",class:_vm.callDisabledClass,attrs:{\"href\":\"\"},on:{\"click\":function($event){$event.preventDefault();return _vm.onCallBtnClicked()}}},[_c('i',{staticClass:\"fas fa-phone\"}),_vm._v(\"\\n \"+_vm._s(_vm.callBtnText))]),_vm._v(\" \"),(_vm.reservation.identification_count >= 3)?_c('div',[_c('div',{staticClass:\"row mt-4\"},[_c('p',{staticClass:\"mr-3\"},[_vm._v(\"お客様画像\")]),_vm._v(\" \"),_c('img',{attrs:{\"src\":_vm.reservation.customer.face_image,\"width\":\"180\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"row mt-4\"},[_c('p',{staticClass:\"mr-3\"},[_vm._v(\"認証画像\")]),_vm._v(\" \"),_vm._l((_vm.reservation.customer.collating_photos),function(cPhoto,index){return _c('span',{key:cPhoto.url},[_c('img',{attrs:{\"src\":cPhoto.url,\"width\":\"180\"}})])})],2)]):_vm._e(),_vm._v(\" \"),_c('form',{staticClass:\"m-t-40\",attrs:{\"role\":\"form\",\"accept-charset\":\"UTF-8\"},on:{\"submit\":function($event){$event.preventDefault();}}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-3\"},[_c('div',{staticClass:\"form-group m-b-20\"},[_c('label',{attrs:{\"for\":\"\"}},[_vm._v(\"名前(姓)\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.customer.lastName),expression:\"customer.lastName\"}],staticClass:\"form-control form-control without-shadow\",attrs:{\"disabled\":\"true\"},domProps:{\"value\":(_vm.customer.lastName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.customer, \"lastName\", $event.target.value)}}}),_vm._v(\" \"),_c('span',{staticClass:\"bar\"})])]),_vm._v(\" \"),_c('div',{staticClass:\"col-md-3\"},[_c('div',{staticClass:\"form-group m-b-20\"},[_c('label',{attrs:{\"for\":\"\"}},[_vm._v(\"名前(名)\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.customer.firstName),expression:\"customer.firstName\"}],staticClass:\"form-control form-control without-shadow\",attrs:{\"disabled\":\"true\"},domProps:{\"value\":(_vm.customer.firstName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.customer, \"firstName\", $event.target.value)}}})])]),_vm._v(\" \"),_c('div',{staticClass:\"col-md-2\"},[_c('div',{staticClass:\"form-group m-b-20\"},[_c('label',{attrs:{\"for\":\"\"}},[_vm._v(\"性別\")]),_vm._v(\" \"),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.customer.sex),expression:\"customer.sex\"}],staticClass:\"form-control widhout-shadow\",on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.customer, \"sex\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},[_c('option',{attrs:{\"value\":\"male\"}},[_vm._v(\"男性\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"female\"}},[_vm._v(\"女性\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"others\"}},[_vm._v(\"その他\")])])])]),_vm._v(\" \"),_c('div',{staticClass:\"col-md-2\"},[_c('div',{staticClass:\"form-group m-b-20\"},[_c('label',{attrs:{\"for\":\"\"}},[_vm._v(\"年齢層\")]),_vm._v(\" \"),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.customer.ageRange),expression:\"customer.ageRange\"}],staticClass:\"form-control widhout-shadow\",on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.customer, \"ageRange\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},[_c('option',{attrs:{\"value\":\"teenage\"}},[_vm._v(\"10代\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"twenties\"}},[_vm._v(\"20代\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"thirties\"}},[_vm._v(\"30代\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"fourties\"}},[_vm._v(\"40代\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"fifties\"}},[_vm._v(\"50代\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"sixties\"}},[_vm._v(\"60代\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"seventies\"}},[_vm._v(\"70代\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"eighties\"}},[_vm._v(\"80代\")])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-4\"},[_c('div',{staticClass:\"form-group m-b-20\"},[_c('label',{attrs:{\"for\":\"\"}},[_vm._v(\"家族構成\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.customer.familyStructure),expression:\"customer.familyStructure\"}],staticClass:\"form-control form-control without-shadow\",domProps:{\"value\":(_vm.customer.familyStructure)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.customer, \"familyStructure\", $event.target.value)}}}),_vm._v(\" \"),_c('span',{staticClass:\"bar\"})])]),_vm._v(\" \"),_c('div',{staticClass:\"col-md-4\"},[_c('div',{staticClass:\"form-group m-b-20\"},[_c('label',{attrs:{\"for\":\"\"}},[_vm._v(\"入居者構成\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.customer.residentStructure),expression:\"customer.residentStructure\"}],staticClass:\"form-control form-control without-shadow\",domProps:{\"value\":(_vm.customer.residentStructure)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.customer, \"residentStructure\", $event.target.value)}}}),_vm._v(\" \"),_c('span',{staticClass:\"bar\"})])]),_vm._v(\" \"),_c('div',{staticClass:\"col-md-4\"},[_c('div',{staticClass:\"form-group m-b-20\"},[_c('label',{attrs:{\"for\":\"\"}},[_vm._v(\"職業\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.customer.occupation),expression:\"customer.occupation\"}],staticClass:\"form-control form-control without-shadow\",domProps:{\"value\":(_vm.customer.occupation)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.customer, \"occupation\", $event.target.value)}}}),_vm._v(\" \"),_c('span',{staticClass:\"bar\"})])])]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-4\"},[_c('div',{staticClass:\"form-group m-b-20\"},[_vm._m(0),_vm._v(\" \"),_c('Select2',{attrs:{\"options\":_vm.livingAreaPrefectures,\"placeholder\":\"都道府県\"},on:{\"change\":function($event){return _vm.onPrefectureChanged(_vm.selectedLivingAreaPrefectureId, 'livingArea')}},model:{value:(_vm.selectedLivingAreaPrefectureId),callback:function ($$v) {_vm.selectedLivingAreaPrefectureId=$$v},expression:\"selectedLivingAreaPrefectureId\"}}),_vm._v(\" \"),_c('span',{staticClass:\"bar\"})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"col-md-4\",staticStyle:{\"margin-top\":\"7px\"}},[_c('div',{staticClass:\"form-group m-b-20\"},[_c('label'),_vm._v(\" \"),_c('Select2',{attrs:{\"options\":_vm.livingAreaCityGroups,\"placeholder\":\"グループ\"},on:{\"change\":function($event){return _vm.onCityGroupChanged(_vm.selectedLivingAreaPrefectureId, _vm.selectedLivingAreaCityGroupId, 'livingArea')}},model:{value:(_vm.selectedLivingAreaCityGroupId),callback:function ($$v) {_vm.selectedLivingAreaCityGroupId=$$v},expression:\"selectedLivingAreaCityGroupId\"}}),_vm._v(\" \"),_c('span',{staticClass:\"bar\"})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"col-md-4\",staticStyle:{\"margin-top\":\"7px\"}},[_c('div',{staticClass:\"form-group m-b-20\"},[_c('label',{staticStyle:{\"margin-top\":\"7px\"}}),_vm._v(\" \"),_c('Select2',{attrs:{\"options\":_vm.livingAreaCities,\"placeholder\":\"エリア名\"},model:{value:(_vm.customer.livingArea),callback:function ($$v) {_vm.$set(_vm.customer, \"livingArea\", $$v)},expression:\"customer.livingArea\"}}),_vm._v(\" \"),_c('span',{staticClass:\"bar\"})],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-4\"},[_c('div',{staticClass:\"form-group m-b-20\"},[_vm._m(1),_vm._v(\" \"),_c('Select2',{attrs:{\"options\":_vm.workPlaceAreaPrefectures,\"placeholder\":\"都道府県\"},on:{\"change\":function($event){return _vm.onPrefectureChanged(_vm.selectedWorkPlaceAreaPrefectureId, 'workPlaceArea')}},model:{value:(_vm.selectedWorkPlaceAreaPrefectureId),callback:function ($$v) {_vm.selectedWorkPlaceAreaPrefectureId=$$v},expression:\"selectedWorkPlaceAreaPrefectureId\"}}),_vm._v(\" \"),_c('span',{staticClass:\"bar\"})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"col-md-4\",staticStyle:{\"margin-top\":\"7px\"}},[_c('div',{staticClass:\"form-group m-b-20\"},[_c('label'),_vm._v(\" \"),_c('Select2',{attrs:{\"options\":_vm.workPlaceAreaCityGroups,\"placeholder\":\"グループ\"},on:{\"change\":function($event){return _vm.onCityGroupChanged(_vm.selectedWorkPlaceAreaPrefectureId, _vm.selectedWorkPlaceAreaCityGroupId, 'workPlaceArea')}},model:{value:(_vm.selectedWorkPlaceAreaCityGroupId),callback:function ($$v) {_vm.selectedWorkPlaceAreaCityGroupId=$$v},expression:\"selectedWorkPlaceAreaCityGroupId\"}}),_vm._v(\" \"),_c('span',{staticClass:\"bar\"})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"col-md-4\",staticStyle:{\"margin-top\":\"7px\"}},[_c('div',{staticClass:\"form-group m-b-20\"},[_c('label',{staticStyle:{\"margin-top\":\"7px\"}}),_vm._v(\" \"),_c('Select2',{attrs:{\"options\":_vm.workPlaceAreaCities,\"placeholder\":\"エリア名\"},model:{value:(_vm.customer.workPlaceArea),callback:function ($$v) {_vm.$set(_vm.customer, \"workPlaceArea\", $$v)},expression:\"customer.workPlaceArea\"}}),_vm._v(\" \"),_c('span',{staticClass:\"bar\"})],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-4\"},[_c('div',{staticClass:\"form-group m-b-20\"},[_vm._m(2),_vm._v(\" \"),_c('Select2',{attrs:{\"options\":_vm.desiredAreaPrefectures,\"placeholder\":\"都道府県\"},on:{\"change\":function($event){return _vm.onPrefectureChanged(_vm.selectedDesiredAreaPrefectureId, 'desiredArea')}},model:{value:(_vm.selectedDesiredAreaPrefectureId),callback:function ($$v) {_vm.selectedDesiredAreaPrefectureId=$$v},expression:\"selectedDesiredAreaPrefectureId\"}}),_vm._v(\" \"),_c('span',{staticClass:\"bar\"})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"col-md-4\",staticStyle:{\"margin-top\":\"7px\"}},[_c('div',{staticClass:\"form-group m-b-20\"},[_c('label'),_vm._v(\" \"),_c('Select2',{attrs:{\"options\":_vm.desiredAreaCityGroups,\"placeholder\":\"グループ\"},on:{\"change\":function($event){return _vm.onCityGroupChanged(_vm.selectedDesiredAreaPrefectureId, _vm.selectedDesiredAreaCityGroupId, 'desiredArea')}},model:{value:(_vm.selectedDesiredAreaCityGroupId),callback:function ($$v) {_vm.selectedDesiredAreaCityGroupId=$$v},expression:\"selectedDesiredAreaCityGroupId\"}}),_vm._v(\" \"),_c('span',{staticClass:\"bar\"})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"col-md-4\",staticStyle:{\"margin-top\":\"7px\"}},[_c('div',{staticClass:\"form-group m-b-20\"},[_c('label',{staticStyle:{\"margin-top\":\"7px\"}}),_vm._v(\" \"),_c('Select2',{attrs:{\"options\":_vm.desiredAreaCities,\"placeholder\":\"エリア名\"},model:{value:(_vm.customer.desiredArea),callback:function ($$v) {_vm.$set(_vm.customer, \"desiredArea\", $$v)},expression:\"customer.desiredArea\"}}),_vm._v(\" \"),_c('span',{staticClass:\"bar\"})],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-3\"},[_c('div',{staticClass:\"form-group m-b-20\"},[_c('label',{attrs:{\"for\":\"\"}},[_vm._v(\"希望入居時期(以降)\")]),_vm._v(\" \"),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.customer.desiredDate),expression:\"customer.desiredDate\"}],staticClass:\"form-control widhout-shadow\",on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.customer, \"desiredDate\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},[_c('option',{attrs:{\"value\":\"soon\"}},[_vm._v(\"今すぐ\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"in_one_month\"}},[_vm._v(\"1ヶ月以内\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"in_three_monthes\"}},[_vm._v(\"3ヶ月以内\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"in_six_monthes\"}},[_vm._v(\"半年以内\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"not_decided\"}},[_vm._v(\"決めていない\")])])])]),_vm._v(\" \"),_c('div',{staticClass:\"col-md-3\"},[_c('div',{staticClass:\"form-group m-b-20\"},[_c('label',{attrs:{\"for\":\"\"}},[_vm._v(\"希望家賃(万円以下)\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.customer.desiredRent),expression:\"customer.desiredRent\"}],staticClass:\"form-control form-control without-shadow\",attrs:{\"type\":\"number\",\"step\":\"0.1\"},domProps:{\"value\":(_vm.customer.desiredRent)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.customer, \"desiredRent\", $event.target.value)}}})])]),_vm._v(\" \"),_c('div',{staticClass:\"col-md-3\"},[_c('div',{staticClass:\"form-group m-b-20\"},[_c('label',{attrs:{\"for\":\"\"}},[_vm._v(\"希望間取り(以上)\")]),_vm._v(\" \"),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.customer.desiredLayout),expression:\"customer.desiredLayout\"}],staticClass:\"form-control widhout-shadow\",on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.customer, \"desiredLayout\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},[_c('option',{attrs:{\"value\":\"one_r\"}},[_vm._v(\"1R\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"one_k\"}},[_vm._v(\"1K\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"one_dk\"}},[_vm._v(\"1DK\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"one_ldk\"}},[_vm._v(\"1LDK\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"two_k\"}},[_vm._v(\"2K\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"two_dk\"}},[_vm._v(\"2DK\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"two_ldk\"}},[_vm._v(\"2LDK\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"three_k\"}},[_vm._v(\"3K\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"three_dk\"}},[_vm._v(\"3DK\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"three_ldk\"}},[_vm._v(\"3LDK\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"four_k\"}},[_vm._v(\"4K\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"four_dk\"}},[_vm._v(\"4DK\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"four_ldk\"}},[_vm._v(\"4LDK\")])])])]),_vm._v(\" \"),_c('div',{staticClass:\"col-md-3\"},[_c('div',{staticClass:\"form-group m-b-20\"},[_c('label',{attrs:{\"for\":\"\"}},[_vm._v(\"入居予定人数(人)\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.customer.desiredNum),expression:\"customer.desiredNum\"}],staticClass:\"form-control form-control without-shadow\",attrs:{\"type\":\"number\",\"step\":\"1\"},domProps:{\"value\":(_vm.customer.desiredNum)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.customer, \"desiredNum\", $event.target.value)}}}),_vm._v(\" \"),_c('span',{staticClass:\"bar\"})])])]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-12\"},[_c('div',{staticClass:\"form-group m-b-5\"},[_c('label',{attrs:{\"for\":\"\"}},[_vm._v(\"住み替えの理由\")]),_vm._v(\" \"),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.customer.movingReason),expression:\"customer.movingReason\"}],staticClass:\"form-control form-control without-shadow\",attrs:{\"rows\":\"2\"},domProps:{\"value\":(_vm.customer.movingReason)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.customer, \"movingReason\", $event.target.value)}}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-12\"},[_c('div',{staticClass:\"form-group m-b-5\"},[_c('label',{attrs:{\"for\":\"\"}},[_vm._v(\"その他\")]),_vm._v(\" \"),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.customer.others),expression:\"customer.others\"}],staticClass:\"form-control form-control without-shadow\",attrs:{\"rows\":\"2\"},domProps:{\"value\":(_vm.customer.others)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.customer, \"others\", $event.target.value)}}}),_vm._v(\" \"),_c('span',{staticClass:\"bar\"})])])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.successFlashShowable),expression:\"successFlashShowable\"}],staticClass:\"alert alert-success alert-rounded\"},[_vm._v(\"\\n 更新しました\\n \")]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.failedFlashShowable),expression:\"failedFlashShowable\"}],staticClass:\"alert alert-danger alert-rounded\"},[_vm._v(\"\\n 更新時にエラーが発生しました\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"form-group m-b-5 mt-2 w100\"},[_c('button',{staticClass:\"btn btn-info d-lg-block float-right mr-2\",attrs:{\"name\":\"button\",\"type\":\"submit\"},on:{\"click\":function($event){return _vm.onFormSubmit()}}},[_c('i',{staticClass:\"fas fa-plus\"}),_vm._v(\"\\n 更新\\n \")])])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',[_vm._v(\"お住まいエリア\"),_c('span',{staticClass:\"fs075 text-color\"},[_vm._v(\"(エリア名まで選択必須)\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',[_vm._v(\"職場の場所\"),_c('span',{staticClass:\"fs075 text-color\"},[_vm._v(\"(エリア名まで選択必須)\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',[_vm._v(\"希望エリア\"),_c('span',{staticClass:\"fs075 text-color\"},[_vm._v(\"(エリア名まで選択必須)\")])])}]\n\nexport { render, staticRenderFns }","\n \n
現在の内見フロー: {{currentStepText}}
\n
\n \n {{identifyBtnText}} \n
\n \n {{callBtnText}} \n\n
= 3\">\n
\n
お客様画像
\n
\n
\n\n
\n
認証画像
\n
\n \n \n
\n
\n\n
\n \n
\n
\n
\n
\n 性別 \n \n 男性 \n 女性 \n その他 \n \n
\n
\n
\n
\n 年齢層 \n \n 10代 \n 20代 \n 30代 \n 40代 \n 50代 \n 60代 \n 70代 \n 80代 \n \n
\n
\n
\n \n\n \n
\n
\n お住まいエリア(エリア名まで選択必須) \n \n \n
\n
\n
\n
\n
\n\n \n
\n
\n 職場の場所(エリア名まで選択必須) \n \n \n
\n
\n
\n
\n
\n\n \n
\n
\n 希望エリア(エリア名まで選択必須) \n \n \n
\n
\n
\n
\n
\n\n \n
\n
\n 希望入居時期(以降) \n \n 今すぐ \n 1ヶ月以内 \n 3ヶ月以内 \n 半年以内 \n 決めていない \n \n
\n
\n
\n
\n
\n 希望間取り(以上) \n \n 1R \n 1K \n 1DK \n 1LDK \n 2K \n 2DK \n 2LDK \n 3K \n 3DK \n 3LDK \n 4K \n 4DK \n 4LDK \n \n
\n
\n
\n
\n 入居予定人数(人) \n \n \n
\n
\n
\n \n \n \n 更新しました\n
\n \n 更新時にエラーが発生しました\n
\n \n \n
\n \n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomerInfoForm.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomerInfoForm.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CustomerInfoForm.vue?vue&type=template&id=4d238ee2&scoped=true&\"\nimport script from \"./CustomerInfoForm.vue?vue&type=script&lang=js&\"\nexport * from \"./CustomerInfoForm.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4d238ee2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('form',{staticClass:\"m-t-40\",attrs:{\"role\":\"form\",\"accept-charset\":\"UTF-8\"},on:{\"submit\":function($event){$event.preventDefault();}}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-12\"},[_c('div',{staticClass:\"form-group m-b-5\"},[_c('label',{attrs:{\"for\":\"\"}},[_vm._v(\"お客様が気になった点\")]),_vm._v(\" \"),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form.concern),expression:\"form.concern\"}],staticClass:\"form-control form-control without-shadow\",attrs:{\"rows\":\"4\"},domProps:{\"value\":(_vm.form.concern)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.form, \"concern\", $event.target.value)}}}),_vm._v(\" \"),_c('span',{staticClass:\"bar\"})])])]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-12\"},[_c('div',{staticClass:\"form-group m-b-5\"},[_c('label',{attrs:{\"for\":\"\"}},[_vm._v(\"お客様が気に入った点\")]),_vm._v(\" \"),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form.favorite),expression:\"form.favorite\"}],staticClass:\"form-control form-control without-shadow\",attrs:{\"rows\":\"4\"},domProps:{\"value\":(_vm.form.favorite)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.form, \"favorite\", $event.target.value)}}}),_vm._v(\" \"),_c('span',{staticClass:\"bar\"})])])]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-12\"},[_c('div',{staticClass:\"form-group m-b-5\"},[_c('label',{attrs:{\"for\":\"\"}},[_vm._v(\"部屋に関して確認したい事項\")]),_vm._v(\" \"),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form.aboutRoom),expression:\"form.aboutRoom\"}],staticClass:\"form-control form-control without-shadow\",attrs:{\"rows\":\"4\"},domProps:{\"value\":(_vm.form.aboutRoom)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.form, \"aboutRoom\", $event.target.value)}}}),_vm._v(\" \"),_c('span',{staticClass:\"bar\"})])])]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-12\"},[_c('div',{staticClass:\"form-group m-b-5\"},[_c('label',{attrs:{\"for\":\"\"}},[_vm._v(\"共有部分に関して確認したい事項\")]),_vm._v(\" \"),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form.aboutSharedArea),expression:\"form.aboutSharedArea\"}],staticClass:\"form-control form-control without-shadow\",attrs:{\"rows\":\"4\"},domProps:{\"value\":(_vm.form.aboutSharedArea)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.form, \"aboutSharedArea\", $event.target.value)}}}),_vm._v(\" \"),_c('span',{staticClass:\"bar\"})])])]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-12\"},[_c('div',{staticClass:\"form-group m-b-5\"},[_c('label',{attrs:{\"for\":\"\"}},[_vm._v(\"周辺環境に関して確認したい事項\")]),_vm._v(\" \"),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form.aboutEnvironment),expression:\"form.aboutEnvironment\"}],staticClass:\"form-control form-control without-shadow\",attrs:{\"rows\":\"4\"},domProps:{\"value\":(_vm.form.aboutEnvironment)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.form, \"aboutEnvironment\", $event.target.value)}}}),_vm._v(\" \"),_c('span',{staticClass:\"bar\"})])])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.successFlashShowable),expression:\"successFlashShowable\"}],staticClass:\"alert alert-success alert-rounded\"},[_vm._v(\"\\n 更新しました\\n \")]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.failedFlashShowable),expression:\"failedFlashShowable\"}],staticClass:\"alert alert-danger alert-rounded\"},[_vm._v(\"\\n 更新時にエラーが発生しました\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"form-group m-b-5 mt-2 w100\"},[_c('button',{staticClass:\"btn btn-info d-lg-block float-right mr-2\",attrs:{\"name\":\"button\",\"type\":\"submit\"},on:{\"click\":function($event){return _vm.onFormSubmit()}}},[_c('i',{staticClass:\"fas fa-plus\"}),_vm._v(\"\\n 更新\\n \")])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n
\n \n
\n
\n お客様が気になった点 \n \n \n \n
\n
\n
\n \n
\n
\n お客様が気に入った点 \n \n \n \n
\n
\n
\n \n
\n
\n 部屋に関して確認したい事項 \n \n \n \n
\n
\n
\n \n
\n
\n 共有部分に関して確認したい事項 \n \n \n \n
\n
\n
\n \n
\n
\n 周辺環境に関して確認したい事項 \n \n \n \n
\n
\n
\n \n 更新しました\n
\n \n 更新時にエラーが発生しました\n
\n \n \n
\n \n\n\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReservationOpinionForm.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReservationOpinionForm.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ReservationOpinionForm.vue?vue&type=template&id=5bc5147b&scoped=true&\"\nimport script from \"./ReservationOpinionForm.vue?vue&type=script&lang=js&\"\nexport * from \"./ReservationOpinionForm.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5bc5147b\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('modal',{attrs:{\"name\":\"take-face-image-modal\",\"height\":\"100%\",\"width\":\"90%\",\"clickToClose\":false}},[_c('div',{staticClass:\"modal-header\",staticStyle:{\"margin-top\":\"70px\"}},[_c('h4',{staticClass:\"card-title\",staticStyle:{\"margin\":\"0 auto\"}},[_vm._v(\"写真撮影\")])]),_vm._v(\" \"),_c('div',{staticClass:\"modal-body\"},[_c('h4',{staticClass:\"text-center\"},[_vm._v(\"本システムをご利用いただく為に、まずはご本人様の顔写真を撮影してください\")]),_vm._v(\" \"),_c('p',{staticClass:\"text-center\"},[_vm._v(\"(今後、鍵パスワード発行時の認証用写真として使用させて頂きます)\")])]),_vm._v(\" \"),_c('take-face-image')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n
本システムをご利用いただく為に、まずはご本人様の顔写真を撮影してください \n
(今後、鍵パスワード発行時の認証用写真として使用させて頂きます)
\n
\n \n \n \n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TakeFaceImageModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TakeFaceImageModal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TakeFaceImageModal.vue?vue&type=template&id=5dce00a6&scoped=true&\"\nimport script from \"./TakeFaceImageModal.vue?vue&type=script&lang=js&\"\nexport * from \"./TakeFaceImageModal.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5dce00a6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.shooting),expression:\"shooting\"}]},[_c('div',[(!_vm.errorMsg == '')?_c('div',{staticClass:\"alert alert-danger alert-rounded\"},[_vm._v(\"\\n \"+_vm._s(_vm.errorMsg)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.capturedUrl == ''),expression:\"capturedUrl == ''\"}],staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center\",attrs:{\"id\":\"faceCamera\"}},[_c('video',{ref:\"video\",attrs:{\"id\":\"video\",\"width\":\"300\",\"height\":\"200\",\"autoplay\":\"\"}}),_vm._v(\" \"),_c('img',{attrs:{\"src\":require(\"face_size_image.png\"),\"width\":\"300\",\"height\":\"200\",\"id\":\"faceSizeImage\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"col-12 text-center\"},[_c('a',{staticClass:\"btn btn--circle btn--circle-a btn--shadow\",attrs:{\"href\":\"#\",\"id\":\"camera-icon\"},on:{\"click\":function($event){return _vm.capture()}}},[_c('i',{staticClass:\"fas fa-camera fs28\"})])])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.capturedUrl == ''),expression:\"!capturedUrl == ''\"}],staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-12 text-center\"},[_c('img',{attrs:{\"src\":_vm.capturedUrl}})])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.capturedUrl == ''),expression:\"!capturedUrl == ''\"}],staticClass:\"row bgw pr-3 pl-3 pb-5 pt-3\"},[_c('div',{staticClass:\"col-6 text-center mt-3\"},[_c('button',{staticClass:\"btn btn-block btn-rounded btn-secondary\",on:{\"click\":_vm.retake}},[_vm._v(\"取り直し\")])]),_vm._v(\" \"),_c('div',{staticClass:\"col-6 text-center mt-3\"},[_c('button',{staticClass:\"btn btn-block btn-rounded btn-success\",on:{\"click\":_vm.save}},[_vm._v(\"決定\")])])]),_vm._v(\" \"),_c('canvas',{ref:\"canvas\",attrs:{\"id\":\"canvas\",\"width\":\"300px\",\"height\":\"200px\"}})]),_vm._v(\" \"),_c('photo-untakeable-modal')],1),_vm._v(\" \"),_c('Loading',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.shooting),expression:\"!shooting\"}]})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n
\n
\n
\n {{ errorMsg }}\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n 取り直し \n
\n
\n 決定 \n
\n\n
\n
\n
\n
\n
\n
\n \n \n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TakeFaceImage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TakeFaceImage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TakeFaceImage.vue?vue&type=template&id=f993e486&\"\nimport script from \"./TakeFaceImage.vue?vue&type=script&lang=js&\"\nexport * from \"./TakeFaceImage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TakeFaceImage.vue?vue&type=style&index=0&scope=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('form',{staticClass:\"m-t-40\",attrs:{\"role\":\"form\",\"accept-charset\":\"UTF-8\"},on:{\"submit\":function($event){$event.preventDefault();}}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.successFlashShowable),expression:\"successFlashShowable\"}],staticClass:\"alert alert-success alert-rounded\"},[_vm._v(\"\\n 更新しました\\n \")]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.failedFlashShowable),expression:\"failedFlashShowable\"}],staticClass:\"alert alert-danger alert-rounded\"},[_vm._v(\"\\n \"+_vm._s(_vm.errorMsg)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-6\"},[_c('div',{staticClass:\"form-group m-b-40\"},[_c('label',{attrs:{\"for\":\"\"}},[_vm._v(\"フォーマット選択\")]),_vm._v(\" \"),_c('select',{staticClass:\"form-control widhout-shadow\",domProps:{\"value\":_vm.flowDetailFormat},on:{\"change\":function($event){return _vm.onFormatChanged($event.target.value)}}},[_c('option',{attrs:{\"value\":\"\"}},[_vm._v(\"フォーマットを選択してください\")]),_vm._v(\" \"),_vm._l((_vm.formats),function(f){return _c('option',{domProps:{\"value\":f.value}},[_vm._v(_vm._s(f.text))])})],2)])])]),_vm._v(\" \"),_c('div',[(_vm.showTitleForm)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-8\"},[_c('div',{staticClass:\"form-group m-b-40\"},[_c('label',{attrs:{\"for\":\"\"}},[_vm._v(\"タイトル\")]),_vm._v(\" \"),_c('input',{staticClass:\"form-control form-control without-shadow\",domProps:{\"value\":_vm.flowDetailTitle},on:{\"input\":function($event){return _vm.onTitleChanged($event.target.value)}}}),_vm._v(\" \"),_c('span',{staticClass:\"bar\"})])])]):_vm._e(),_vm._v(\" \"),(_vm.showSubTitleForm)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-12\"},[_c('div',{staticClass:\"form-group m-b-40\"},[_c('label',{attrs:{\"for\":\"\"}},[_vm._v(\"サブタイトル\")]),_vm._v(\" \"),_c('input',{staticClass:\"form-control form-control without-shadow\",domProps:{\"value\":_vm.flowDetailSubTitle},on:{\"input\":function($event){return _vm.onSubTitleChanged($event.target.value)}}}),_vm._v(\" \"),_c('span',{staticClass:\"bar\"})])])]):_vm._e(),_vm._v(\" \"),(_vm.showBtnTextForm)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-12\"},[_c('div',{staticClass:\"form-group m-b-40\"},[_c('label',{attrs:{\"for\":\"\"}},[_vm._v(\"ボタンテキスト\")]),_vm._v(\" \"),_c('input',{staticClass:\"form-control form-control without-shadow\",domProps:{\"value\":_vm.flowDetailText},on:{\"input\":function($event){return _vm.onTextChanged($event.target.value)}}}),_vm._v(\" \"),_c('span',{staticClass:\"bar\"})])])]):_vm._e(),_vm._v(\" \"),(_vm.showDescriptionForm)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-12\"},[_c('div',{staticClass:\"form-group m-b-40\"},[_c('label',{attrs:{\"for\":\"\"}},[_vm._v(\"説明文\")]),_vm._v(\" \"),_c('textarea',{staticClass:\"form-control form-control without-shadow\",attrs:{\"rows\":\"4\"},domProps:{\"value\":_vm.flowDetailText},on:{\"input\":function($event){return _vm.onTextChanged($event.target.value)}}}),_vm._v(\" \"),_c('span',{staticClass:\"bar\"})])])]):_vm._e(),_vm._v(\" \"),(_vm.showImageForm)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-6\"},[_c('div',{staticClass:\"form-group m-b-5\"},[_c('label',{attrs:{\"for\":\"\"}},[_vm._v(\"画像1\")]),_vm._v(\" \"),_c('div',{staticClass:\"input-group\"},[_c('div',{staticClass:\"custom-file\"},[_c('input',{staticClass:\"custom-file-input\",attrs:{\"type\":\"file\"},on:{\"change\":function($event){return _vm.onImage1Changed($event)}}}),_vm._v(\" \"),_c('label',{staticClass:\"custom-file-label\",attrs:{\"for\":\"\"}},[_vm._v(\"Choose file\")])])]),_vm._v(\" \"),(_vm.image1Displayable)?_c('div',{staticClass:\"mt-3 imagePreview\",staticStyle:{\"position\":\"relative\"}},[_c('img',{staticClass:\"img\",attrs:{\"src\":_vm.flowDetailImage1}}),_vm._v(\" \"),_c('span',{on:{\"click\":function($event){return _vm.onImageDeleted(1)}}},[_c('i',{staticClass:\"fas fa-trash deleteBtn text-danger\"})])]):_vm._e()])]),_vm._v(\" \"),_c('div',{staticClass:\"col-md-6\"},[_c('div',{staticClass:\"form-group m-b-5\"},[_c('label',{attrs:{\"for\":\"\"}},[_vm._v(\"画像2\")]),_vm._v(\" \"),_c('div',{staticClass:\"input-group\"},[_c('div',{staticClass:\"custom-file\"},[_c('input',{staticClass:\"custom-file-input\",attrs:{\"type\":\"file\"},on:{\"change\":function($event){return _vm.onImage2Changed($event)}}}),_vm._v(\" \"),_c('label',{staticClass:\"custom-file-label\",attrs:{\"for\":\"\"}},[_vm._v(\"Choose file\")])])])]),_vm._v(\" \"),(_vm.image2Displayable)?_c('div',{staticClass:\"mt-3 imagePreview\"},[_c('img',{staticClass:\"img\",attrs:{\"src\":_vm.flowDetailImage2}}),_vm._v(\" \"),_c('span',{on:{\"click\":function($event){return _vm.onImageDeleted(2)}}},[_c('i',{staticClass:\"fas fa-trash deleteBtn text-danger\"})])]):_vm._e()])]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"form-group m-b-5 mt-4 w100\"},[_c('button',{staticClass:\"btn btn-info d-lg-block float-right\",attrs:{\"name\":\"button\",\"type\":\"submit\"},on:{\"click\":function($event){return _vm.onFormSubmit()}}},[_c('i',{staticClass:\"fas fa-plus\"}),_vm._v(\"\\n 登録\\n \")])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n
\n \n 更新しました\n
\n \n {{errorMsg}}\n
\n\n \n
\n
\n フォーマット選択 \n \n フォーマットを選択してください \n {{f.text}} \n \n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n
\n \n\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FlowDetailForm.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FlowDetailForm.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FlowDetailForm.vue?vue&type=template&id=fc2f7800&scoped=true&\"\nimport script from \"./FlowDetailForm.vue?vue&type=script&lang=js&\"\nexport * from \"./FlowDetailForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FlowDetailForm.vue?vue&type=style&index=0&id=fc2f7800&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"fc2f7800\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card\"},[_c('div',{staticClass:\"card-body\"},[_c('h4',{staticClass:\"card-title\"},[_vm._v(\"\\n 内見時注意事項\\n \")]),_vm._v(\" \"),_c('form',{staticClass:\"m-t-40\",attrs:{\"role\":\"form\",\"accept-charset\":\"UTF-8\"},on:{\"submit\":function($event){$event.preventDefault();}}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.successFlashShowable),expression:\"successFlashShowable\"}],staticClass:\"alert alert-success alert-rounded\"},[_vm._v(\"\\n 更新しました\\n \")]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.failedFlashShowable),expression:\"failedFlashShowable\"}],staticClass:\"alert alert-danger alert-rounded\"},[_vm._v(\"\\n 更新時にエラーが発生しました\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-12\"},[_c('div',{staticClass:\"form-group\"},[_c('textarea',{staticClass:\"form-control form-control without-shadow\",attrs:{\"rows\":\"5\"},domProps:{\"value\":_vm.flowNotes},on:{\"input\":function($event){return _vm.onNotesChanged($event.target.value)}}}),_vm._v(\" \"),_c('span',{staticClass:\"bar\"})])])]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"form-group m-b-5 mt-2 w100 pr-2\"},[_c('button',{staticClass:\"btn btn-info d-lg-block float-right\",attrs:{\"name\":\"button\",\"type\":\"submit\"},on:{\"click\":function($event){return _vm.onFormSubmit()}}},[_c('i',{staticClass:\"fas fa-plus\"}),_vm._v(\"\\n 登録\\n \")])])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n
\n
\n 内見時注意事項\n \n
\n \n 更新しました\n
\n \n 更新時にエラーが発生しました\n
\n \n \n \n
\n
\n \n\n\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FlowNotesForm.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FlowNotesForm.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FlowNotesForm.vue?vue&type=template&id=38645262&scoped=true&\"\nimport script from \"./FlowNotesForm.vue?vue&type=script&lang=js&\"\nexport * from \"./FlowNotesForm.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"38645262\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container\"},[_vm._m(0),_vm._v(\" \"),_c('div',{staticClass:\"text-center mt-5\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-6 text-center\"},[_c('div',{staticClass:\"card clickable\",on:{\"click\":function($event){return _vm.onStepSelected('local')}}},[_vm._m(1)])]),_vm._v(\" \"),_c('div',{staticClass:\"col-md-6 text-center\"},[_c('div',{staticClass:\"card clickable\",on:{\"click\":function($event){return _vm.onStepSelected('remote')}}},[_vm._m(2)])])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"text-center\"},[_c('p',{staticClass:\"welcome-title\"},[_vm._v(\"案内方法を選択してください\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card-body top-selection\"},[_c('h4',{staticClass:\"card-title top-selection-title\"},[_c('i',{staticClass:\"fas fa-person-booth\"}),_vm._v(\"\\n 現地案内\\n \")]),_vm._v(\" \"),_c('span',{staticClass:\"text-color\"},[_vm._v(\"従来通り、お客様と現地で待ち合わせをしてご案内をする方法\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card-body top-selection\"},[_c('h4',{staticClass:\"card-title top-selection-title\"},[_c('i',{staticClass:\"fas fa-laptop-house\"}),_vm._v(\"\\n 遠隔案内\\n \")]),_vm._v(\" \"),_c('span',{staticClass:\"text-color\"},[_vm._v(\"いつでも内見の機能を利用し、遠隔で現地までのガイド、鍵の受け渡し、ご案内を行う方法\")])])}]\n\nexport { render, staticRenderFns }","\n \n
\n
\n
\n
\n
\n
\n
\n \n 現地案内\n \n 従来通り、お客様と現地で待ち合わせをしてご案内をする方法 \n \n
\n
\n
\n
\n
\n
\n \n 遠隔案内\n \n いつでも内見の機能を利用し、遠隔で現地までのガイド、鍵の受け渡し、ご案内を行う方法 \n \n
\n
\n
\n
\n
\n \n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectGuidanceWay.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectGuidanceWay.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SelectGuidanceWay.vue?vue&type=template&id=1efcf237&scoped=true&\"\nimport script from \"./SelectGuidanceWay.vue?vue&type=script&lang=js&\"\nexport * from \"./SelectGuidanceWay.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SelectGuidanceWay.vue?vue&type=style&index=0&id=1efcf237&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1efcf237\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container mb-3\"},[_vm._m(0),_vm._v(\" \"),_c('div',{staticClass:\"row w80 m0a mt-4\"},[_c('div',{staticClass:\"col-6 text-center pl-0\"},[_c('button',{staticClass:\"btn btn-lg btn-block btn-rounded btn-secondary\",on:{\"click\":function($event){return _vm.onStepSelected('top')}}},[_c('i',{staticClass:\"fas fa-backward\"}),_vm._v(\"\\n 別の方法にする\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"col-6 text-center pr-0\"},[_c('button',{staticClass:\"btn btn-lg btn-block btn-rounded btn-success\",on:{\"click\":function($event){return _vm.showCautionModal()}}},[_vm._v(\"\\n 現地案内にする\\n \"),_c('i',{staticClass:\"fas fa-forward\"})]),_vm._v(\" \"),_c('caution-modal',{on:{\"onStepSelected\":_vm.onStepSelected}})],1)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 w80 m0a h400 scrollable bwhite fs14 pt-3 pb-3\"},[_c('p',[_vm._v(\"・従来通り、お客様と現地にてお待ち合わせを頂き、物件をご案内頂く方法です。\")]),_vm._v(\" \"),_c('p',[_vm._v(\"・鍵の取得に関しては、この後発行される鍵発行ナビに従って取得してください。\")]),_vm._v(\" \"),_c('p',[_vm._v(\"・物件の場所と鍵の取得場所が異なる場合がございますので、事前にナビより場所のご確認をお願い致します。\")]),_vm._v(\" \"),_c('p',[_vm._v(\"・鍵取得時には本人確認を実施致します。その為、必ず担当者として登録された方が現地でご案内を行ってださい。\")])])])}]\n\nexport { render, staticRenderFns }","\n \n
\n
\n
\n \n \n 別の方法にする\n \n
\n
\n \n 現地案内にする\n \n \n \n
\n
\n
\n \n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocalGuidanceIntroduction.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocalGuidanceIntroduction.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LocalGuidanceIntroduction.vue?vue&type=template&id=aa14aef0&scoped=true&\"\nimport script from \"./LocalGuidanceIntroduction.vue?vue&type=script&lang=js&\"\nexport * from \"./LocalGuidanceIntroduction.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LocalGuidanceIntroduction.vue?vue&type=style&index=0&id=aa14aef0&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"aa14aef0\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container mb-3\"},[_vm._m(0),_vm._v(\" \"),_c('div',{staticClass:\"row w80 m0a mt-4\"},[_c('div',{staticClass:\"col-6 text-center pl-0\"},[_c('button',{staticClass:\"btn btn-lg btn-block btn-rounded btn-secondary\",on:{\"click\":function($event){return _vm.onStepSelected('top')}}},[_c('i',{staticClass:\"fas fa-backward\"}),_vm._v(\"\\n 別の方法にする\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"col-6 text-center pr-0\"},[_c('button',{staticClass:\"btn btn-lg btn-block btn-rounded btn-success\",on:{\"click\":function($event){return _vm.showCautionModal()}}},[_vm._v(\"\\n 遠隔案内にする\\n \"),_c('i',{staticClass:\"fas fa-forward\"})]),_vm._v(\" \"),_c('caution-modal',{on:{\"onStepSelected\":_vm.onStepSelected}})],1)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 w80 m0a h400 scrollable bwhite fs14 pt-3 pb-3\"},[_c('p',[_vm._v(\"・発行される内見用のナビゲーションに従い、お客様のみで現地の内見を行って頂く方法です。\"),_c('br'),_vm._v(\"\\n その為、仲介会社様が現地に行かずとも内見のご案内が可能となります。\")]),_vm._v(\" \"),_c('p',[_vm._v(\"・お客様にはこの後発行されますナビゲーション用のURLをお渡しください\")]),_vm._v(\" \"),_c('p',[_vm._v(\"・その他詳しい内見の流れはこの後表示される資料にまとめておりますので、ご確認ください。\")])])])}]\n\nexport { render, staticRenderFns }","\n \n
\n
\n
\n \n \n 別の方法にする\n \n
\n
\n \n 遠隔案内にする\n \n \n \n
\n
\n
\n \n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RemoteGuidanceIntroduction.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RemoteGuidanceIntroduction.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RemoteGuidanceIntroduction.vue?vue&type=template&id=1c942a43&scoped=true&\"\nimport script from \"./RemoteGuidanceIntroduction.vue?vue&type=script&lang=js&\"\nexport * from \"./RemoteGuidanceIntroduction.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RemoteGuidanceIntroduction.vue?vue&type=style&index=0&id=1c942a43&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1c942a43\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('navi-header'),_vm._v(\" \"),_c('main',{attrs:{\"role\":\"main\"}},[_c('div',{staticClass:\"contents-box my-2 py-2\"},[_c('div',{staticClass:\"container\"},[_c('room-info')],1),_vm._v(\" \"),_c('step',{on:{\"changeCurrentStep\":_vm.onStepSelected}})],1),_vm._v(\" \"),(_vm.isFirstStep)?_c('welcome'):_vm._e(),_vm._v(\" \"),_c('h2',{staticClass:\"contents-title font-weight-bold container mt-3\"},[_vm._v(\"STEP\"+_vm._s(_vm.reservationStep))]),_vm._v(\" \"),_c('div',{staticClass:\"contents-box my-2\"},[_c('div',{staticClass:\"container pt-3\"},[_c('h3',{staticClass:\"h5 font-weight-bold mb-2\"},[_vm._v(_vm._s(_vm.flowDetail.title))]),_vm._v(\" \"),_c('h4',{staticClass:\"h6 font-weight-bold mb-3\"},[_vm._v(_vm._s(_vm.flowDetail.sub_title))]),_vm._v(\" \"),_c('div',{staticClass:\"step-flow pb-3\"},[_c('p',{staticClass:\"u-pre-wrap\"},[_vm._v(_vm._s(_vm.flowDetail.text))]),_vm._v(\" \"),(_vm.flowDetail.image1_url)?_c('div',{staticClass:\"image-box mt-5\"},[_c('img',{staticClass:\"w-100 rounded\",attrs:{\"src\":_vm.flowDetail.image1_url}})]):_vm._e(),_vm._v(\" \"),(_vm.flowDetail.image2_url)?_c('div',{staticClass:\"image-box mt-5\"},[_c('img',{staticClass:\"w-100 rounded\",attrs:{\"src\":_vm.flowDetail.image2_url}})]):_vm._e()])])])],1),_vm._v(\" \"),_c('navi-footer',{on:{\"goToNextStep\":_vm.onNextStepSelected}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n
\n
\n \n \n STEP{{reservationStep}} \n \n
\n
{{flowDetail.title}} \n
{{flowDetail.sub_title}} \n
\n
{{flowDetail.text}}
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n \n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Basic.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Basic.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Basic.vue?vue&type=template&id=32142ce6&scoped=true&\"\nimport script from \"./Basic.vue?vue&type=script&lang=js&\"\nexport * from \"./Basic.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Basic.vue?vue&type=style&index=0&id=32142ce6&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"32142ce6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('navi-header'),_vm._v(\" \"),_c('main',{attrs:{\"role\":\"main\"}},[_c('div',{staticClass:\"contents-box my-2 py-2\"},[_c('div',{staticClass:\"container\"},[_c('room-info')],1),_vm._v(\" \"),_c('step',{on:{\"changeCurrentStep\":_vm.onStepSelected}})],1),_vm._v(\" \"),(_vm.isFirstStep)?_c('welcome'):_vm._e(),_vm._v(\" \"),_c('h2',{staticClass:\"contents-title font-weight-bold container mt-3\"},[_vm._v(\"STEP\"+_vm._s(_vm.reservationStep))]),_vm._v(\" \"),(_vm.customerTel.length == 0)?_c('div',{staticClass:\"contents-box my-2\"},[_c('div',{staticClass:\"container py-3\"},[_c('h3',{staticClass:\"h5 font-weight-bold\"},[_vm._v(_vm._s(_vm.callTitleText))]),_vm._v(\" \"),_vm._m(0),_vm._v(\" \"),_c('p',{staticClass:\"my-3\"},[_vm._v(_vm._s(_vm.callSubTitleText))]),_vm._v(\" \"),_c('div',{staticClass:\"text-center mb-1\"},[_c('a',{staticClass:\"btn btn-primary rounded-pill px-4 py-2\",attrs:{\"href\":_vm.hrefTel}},[_vm._v(_vm._s(_vm.callBtnText))])])])]):_c('div',{staticClass:\"contents-box my-2\"},[_c('div',{staticClass:\"container py-3\"},[_c('h3',{staticClass:\"h5 font-weight-bold\"},[_vm._v(_vm._s(_vm.callRequestTitleText))]),_vm._v(\" \"),_vm._m(1),_vm._v(\" \"),_c('p',{staticClass:\"my-3\"},[_vm._v(_vm._s(_vm.callRequestSubTitleText))]),_vm._v(\" \"),_c('div',{staticClass:\"text-center mb-1\"},[_c('a',{staticClass:\"btn btn-primary rounded-pill px-4 py-2\",class:_vm.actionBtnDisabledClass,attrs:{\"href\":_vm.hrefTel},on:{\"click\":function($event){$event.preventDefault();return _vm.createCallRequestMsg.apply(null, arguments)}}},[_vm._v(_vm._s(_vm.callRequestBtnText))])])])]),_vm._v(\" \"),(_vm.flowDetailProceedable)?_c('div',{staticClass:\"contents-box my-2\"},[_vm._m(2)]):_vm._e()],1),_vm._v(\" \"),_c('navi-footer',{on:{\"goToNextStep\":_vm.onNextStepSelected}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"text-center\"},[_c('img',{attrs:{\"src\":require(\"navi/phone_tell.png\"),\"width\":\"160\",\"alt\":\"電話をかける\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"text-center\"},[_c('img',{attrs:{\"src\":require(\"navi/phone_tell.png\"),\"width\":\"160\",\"alt\":\"入電リクエストを送る\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container py-3\"},[_c('h3',{staticClass:\"h5 font-weight-bold\"},[_vm._v(\"通話が完了しました\")]),_vm._v(\" \"),_c('div',{staticClass:\"row align-items-center\"},[_c('div',{staticClass:\"col-4 text-center g-2\"},[_c('img',{staticClass:\"mx-auto\",attrs:{\"src\":require(\"navi/navi_ok.png\"),\"height\":\"160\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"col-8 g-2\"},[_c('p',{staticClass:\"mb-1\"},[_vm._v(\"\\n 通話が完了しました。\"),_c('br'),_vm._v(\"次のステップに進めるようになりましたので、以下のボタンから次のステップにお進みください。\\n \")])])])])}]\n\nexport { render, staticRenderFns }","\n \n
\n
\n \n \n STEP{{reservationStep}} \n \n
\n
{{callTitleText}} \n
\n
\n
\n
{{callSubTitleText}}
\n
\n
\n
\n \n
\n
{{callRequestTitleText}} \n
\n
\n
\n
{{callRequestSubTitleText}}
\n
\n
\n
\n \n
\n
通話が完了しました \n
\n
\n
\n
\n
\n
\n 通話が完了しました。 次のステップに進めるようになりましたので、以下のボタンから次のステップにお進みください。\n
\n
\n
\n
\n
\n \n
\n
\n \n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Call.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Call.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Call.vue?vue&type=template&id=7f545f14&scoped=true&\"\nimport script from \"./Call.vue?vue&type=script&lang=js&\"\nexport * from \"./Call.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7f545f14\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('navi-header'),_vm._v(\" \"),_c('main',{attrs:{\"role\":\"main\"}},[_c('div',{staticClass:\"contents-box my-2 py-2\"},[_c('div',{staticClass:\"container\"},[_c('room-info')],1),_vm._v(\" \"),_c('step',{on:{\"changeCurrentStep\":_vm.onStepSelected}})],1),_vm._v(\" \"),(_vm.isFirstStep)?_c('welcome'):_vm._e(),_vm._v(\" \"),_c('h2',{staticClass:\"contents-title font-weight-bold container mt-3\"},[_vm._v(\"STEP\"+_vm._s(_vm.reservationStep))]),_vm._v(\" \"),_c('div',{staticClass:\"contents-box my-2\"},[_c('div',{staticClass:\"container pt-3\"},[_c('h3',{staticClass:\"h5 font-weight-bold mb-3\"},[_vm._v(\"以下の暗証番号を入力し、キーボックスから鍵を取り出します。\")]),_vm._v(\" \"),_c('div',{staticClass:\"step-flow pb-3\"},[_vm._m(0),_vm._v(\" \"),_c('img',{staticClass:\"w-100 rounded mb-2\",attrs:{\"src\":require(\"navi/photo_keyflow_1.png\")}}),_vm._v(\" \"),_c('div',{staticClass:\"bg-primary p-2 text-center text-white\"},[_vm._v(\"\\n お客様の暗証番号:\"+_vm._s(_vm.keyStationPassword)+\"\\n \")]),_vm._v(\" \"),_vm._m(1)]),_vm._v(\" \"),_vm._m(2),_vm._v(\" \"),_vm._m(3),_vm._v(\" \"),_vm._m(4)])])],1),_vm._v(\" \"),_c('navi-footer',{on:{\"goToNextStep\":_vm.onNextStepSelected}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h4',{staticClass:\"h6 font-weight-bold\"},[_c('span',{staticClass:\"count-icon\"},[_vm._v(\"1\")]),_vm._v(\"6桁パスワード+ENTを押します。\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"border p-2 mt-2\"},[_c('p',{staticClass:\"mb-2\"},[_vm._v(\"パスワードを入力しても扉が開かないなど、キーステーションに関するトラブルはこちら\")]),_vm._v(\" \"),_c('p',{staticClass:\"border-top pt-2 mb-1 small text-center\"},[_vm._v(\"キーステーションカスタマーサポート連絡先\")]),_vm._v(\" \"),_c('div',{staticClass:\"text-center mb-1\"},[_c('a',{staticClass:\"btn btn-outline-secondary rounded-pill px-5 py-2\",attrs:{\"href\":\"tel:05032013735\"}},[_c('span',{staticClass:\"fas fa-phone-alt\"}),_vm._v(\"\\n 050-3201-3735\\n \")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"step-flow pb-3\"},[_c('h4',{staticClass:\"h6 font-weight-bold\"},[_c('span',{staticClass:\"count-icon\"},[_vm._v(\"2\")]),_vm._v(\"ボックスのドアの右側部分を押すと扉が開きます。\")]),_vm._v(\" \"),_c('img',{staticClass:\"w-100 rounded mb-2\",attrs:{\"src\":require(\"navi/photo_keyflow_2.png\")}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"step-flow pb-3\"},[_c('h4',{staticClass:\"h6 font-weight-bold\"},[_c('span',{staticClass:\"count-icon\"},[_vm._v(\"3\")]),_vm._v(\"点灯している番号の鍵を抜き出します。(一度奥に押した後、手前に引き抜くことで取り出し可能となります)\")]),_vm._v(\" \"),_c('img',{staticClass:\"w-100 rounded mb-2\",attrs:{\"src\":require(\"navi/photo_keyflow_3.png\")}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"step-flow pb-2\"},[_c('h4',{staticClass:\"h6 font-weight-bold\"},[_c('span',{staticClass:\"count-icon\"},[_vm._v(\"4\")]),_vm._v(\"扉を閉めます。\")]),_vm._v(\" \"),_c('img',{staticClass:\"w-100 rounded mb-2\",attrs:{\"src\":require(\"navi/photo_keyflow_4.png\")}})])}]\n\nexport { render, staticRenderFns }","\n \n
\n
\n \n \n STEP{{reservationStep}} \n \n
\n
以下の暗証番号を入力し、キーボックスから鍵を取り出します。 \n
\n
1 6桁パスワード+ENTを押します。\n
\n
\n お客様の暗証番号:{{keyStationPassword}}\n
\n
\n
パスワードを入力しても扉が開かないなど、キーステーションに関するトラブルはこちら
\n
キーステーションカスタマーサポート連絡先
\n
\n
\n
\n
\n
2 ボックスのドアの右側部分を押すと扉が開きます。\n
\n
\n
\n
3 点灯している番号の鍵を抜き出します。(一度奥に押した後、手前に引き抜くことで取り出し可能となります)\n
\n
\n
\n
4 扉を閉めます。\n
\n
\n
\n
\n \n
\n
\n \n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GetKeyFromKs.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GetKeyFromKs.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./GetKeyFromKs.vue?vue&type=template&id=38034917&scoped=true&\"\nimport script from \"./GetKeyFromKs.vue?vue&type=script&lang=js&\"\nexport * from \"./GetKeyFromKs.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"38034917\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('navi-header'),_vm._v(\" \"),_c('main',{attrs:{\"role\":\"main\"}},[_c('div',{staticClass:\"contents-box my-2 py-2\"},[_c('div',{staticClass:\"container\"},[_c('room-info')],1),_vm._v(\" \"),_c('step',{on:{\"changeCurrentStep\":_vm.onStepSelected}})],1),_vm._v(\" \"),(_vm.isFirstStep)?_c('welcome'):_vm._e(),_vm._v(\" \"),_c('h2',{staticClass:\"contents-title font-weight-bold container mt-3\"},[_vm._v(\"STEP\"+_vm._s(_vm.reservationStep))]),_vm._v(\" \"),_c('div',{staticClass:\"contents-box my-2\"},[_c('div',{staticClass:\"container py-3\"},[_c('h3',{staticClass:\"h5 font-weight-bold\"},[_vm._v(\"鍵ボックスから鍵を取り出します\")]),_vm._v(\" \"),_c('p',{staticClass:\"mb-4\"},[_vm._v(\"\\n 鍵ボックスが設置された場所まで移動し、下記の手順で鍵を取り出しましょう。\\n \")]),_vm._v(\" \"),(!_vm.flowDetail['text'] == '')?_c('p',{staticClass:\"mb-3\"},[_c('span',{staticClass:\"badge bg-primary\"},[_vm._v(\"詳細\")]),_vm._v(\"\\n \"+_vm._s(_vm.flowDetail['text'])),_c('br')]):_vm._e(),_vm._v(\" \"),_vm._m(0),_vm._v(\" \"),(!_vm.flowDetail['image1_url'] == '')?_c('p',{staticClass:\"mb-3\"},[_c('span',{staticClass:\"badge bg-primary\"},[_vm._v(\"参考画像1\")]),_vm._v(\" \"),_c('img',{staticClass:\"w-100 rounded mb-2\",attrs:{\"src\":_vm.flowDetail['image1_url']}})]):_vm._e(),_vm._v(\" \"),(!_vm.flowDetail['image2_url'] == '')?_c('p',{staticClass:\"mb-3\"},[_c('span',{staticClass:\"badge bg-primary\"},[_vm._v(\"参考画像2\")]),_vm._v(\" \"),_c('img',{staticClass:\"w-100 rounded mb-2\",attrs:{\"src\":_vm.flowDetail['image2_url']}})]):_vm._e(),_vm._v(\" \"),_vm._m(1)])]),_vm._v(\" \"),_c('h2',{staticClass:\"contents-title font-weight-bold container mt-3\"},[_vm._v(\"STEP\"+_vm._s(_vm.reservationStep)+\"-1\")]),_vm._v(\" \"),_c('div',{staticClass:\"contents-box my-2\"},[_c('div',{staticClass:\"container pt-3\"},[_c('h3',{staticClass:\"h5 font-weight-bold mb-3\"},[_vm._v(\"以下の暗証番号を入力し、鍵ボックスから鍵を取り出します。\")]),_vm._v(\" \"),_c('div',{staticClass:\"step-flow pb-3\"},[_vm._m(2),_vm._v(\" \"),_c('img',{staticClass:\"w-100 rounded mb-2\",attrs:{\"src\":require(\"navi/populife_input_password.png\")}}),_vm._v(\" \"),_c('div',{staticClass:\"bg-primary p-2 text-center text-white\"},[_vm._v(\"\\n お客様の暗証番号:\"),_c('br'),_vm._v(\" \"),_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.currentPw))])]),_vm._v(\" \"),_vm._m(3)]),_vm._v(\" \"),_vm._m(4),_vm._v(\" \"),_vm._m(5),_vm._v(\" \"),_vm._m(6),_vm._v(\" \"),_vm._m(7)])])],1),_vm._v(\" \"),_c('navi-footer',{on:{\"goToNextStep\":_vm.onNextStepSelected}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',{staticClass:\"mb-3\"},[_c('span',{staticClass:\"badge bg-primary\"},[_vm._v(\"鍵ボックスイメージ画像\")]),_vm._v(\" \"),_c('img',{staticClass:\"w-100 rounded mb-2\",attrs:{\"src\":require(\"navi/populife_input_password.png\")}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',{staticClass:\"mb-3\"},[_c('span',{staticClass:\"badge bg-primary\"},[_vm._v(\"注意\")]),_c('br'),_vm._v(\"\\n ・5回パスワードを間違えると5分間使用不可となります。ご注意ください。\"),_c('br'),_vm._v(\"\\n ・指を挟まないようご注意ください。\"),_c('br')])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h4',{staticClass:\"h6 font-weight-bold\"},[_c('span',{staticClass:\"count-icon\"},[_vm._v(\"1\")]),_vm._v(\"パスワード+ 右下の開錠ボタンを押します。\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"border p-2 mt-2\"},[_c('p',{staticClass:\"mb-2\"},[_vm._v(\"パスワードを入力しても扉が開かないなど、鍵ボックスに関するトラブルはこちら\")]),_vm._v(\" \"),_c('p',{staticClass:\"border-top pt-2 mb-1 small text-center\"},[_vm._v(\"キーステーションカスタマーサポート連絡先\")]),_vm._v(\" \"),_c('div',{staticClass:\"text-center mb-1\"},[_c('a',{staticClass:\"btn btn-outline-secondary rounded-pill px-5 py-2\",attrs:{\"href\":\"tel:05032013735\"}},[_c('span',{staticClass:\"fas fa-phone-alt\"}),_vm._v(\"\\n 050-3201-3735\\n \")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"step-flow pb-3\"},[_c('h4',{staticClass:\"h6 font-weight-bold\"},[_c('span',{staticClass:\"count-icon\"},[_vm._v(\"2\")]),_vm._v(\"ロックが解除され、扉が開きます\")]),_vm._v(\" \"),_c('img',{staticClass:\"w-100 rounded mb-2\",attrs:{\"src\":require(\"navi/populife_open.png\")}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"step-flow pb-3\"},[_c('h4',{staticClass:\"h6 font-weight-bold\"},[_c('span',{staticClass:\"count-icon\"},[_vm._v(\"3\")]),_vm._v(\"中から鍵を取り出します\")]),_vm._v(\" \"),_c('img',{staticClass:\"w-100 rounded mb-2\",attrs:{\"src\":require(\"navi/populife_pick_key.png\")}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"step-flow pb-2\"},[_c('h4',{staticClass:\"h6 font-weight-bold\"},[_c('span',{staticClass:\"count-icon\"},[_vm._v(\"4\")]),_vm._v(\"鍵を取り出したら、扉を閉めます\")]),_vm._v(\" \"),_c('img',{staticClass:\"w-100 rounded mb-2\",attrs:{\"src\":require(\"navi/populife_close.png\")}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"step-flow pb-2\"},[_c('h4',{staticClass:\"h6 font-weight-bold\"},[_c('span',{staticClass:\"count-icon\"},[_vm._v(\"5\")]),_vm._v(\"扉を完全に閉めると、自動でロックが掛かります\")]),_vm._v(\" \"),_c('img',{staticClass:\"w-100 rounded mb-2\",attrs:{\"src\":require(\"navi/populife_lock.png\")}})])}]\n\nexport { render, staticRenderFns }","\n \n
\n
\n \n \n STEP{{reservationStep}} \n \n
\n
鍵ボックスから鍵を取り出します \n
\n 鍵ボックスが設置された場所まで移動し、下記の手順で鍵を取り出しましょう。\n
\n
\n 詳細 \n {{flowDetail['text']}}\n
\n
\n 鍵ボックスイメージ画像 \n \n\n
\n
\n 参考画像1 \n \n\n
\n
\n 参考画像2 \n \n\n
\n
\n 注意 \n ・5回パスワードを間違えると5分間使用不可となります。ご注意ください。\n ・指を挟まないようご注意ください。\n
\n
\n
\n\n STEP{{reservationStep}}-1 \n \n
\n
以下の暗証番号を入力し、鍵ボックスから鍵を取り出します。 \n
\n
1 パスワード+ 右下の開錠ボタンを押します。\n
\n
\n お客様の暗証番号: \n {{currentPw}} \n
\n
\n
パスワードを入力しても扉が開かないなど、鍵ボックスに関するトラブルはこちら
\n
キーステーションカスタマーサポート連絡先
\n
\n
\n
\n
\n
2 ロックが解除され、扉が開きます\n
\n
\n
\n
3 中から鍵を取り出します\n
\n
\n
\n
4 鍵を取り出したら、扉を閉めます\n
\n
\n
\n
5 扉を完全に閉めると、自動でロックが掛かります\n
\n
\n
\n
\n \n
\n
\n \n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GetKeyFromPopulife.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GetKeyFromPopulife.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./GetKeyFromPopulife.vue?vue&type=template&id=5d61ded2&scoped=true&\"\nimport script from \"./GetKeyFromPopulife.vue?vue&type=script&lang=js&\"\nexport * from \"./GetKeyFromPopulife.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5d61ded2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('navi-header'),_vm._v(\" \"),_c('main',{attrs:{\"role\":\"main\"}},[_c('div',{staticClass:\"contents-box my-2 py-2\"},[_c('div',{staticClass:\"container\"},[_c('room-info')],1),_vm._v(\" \"),_c('step',{on:{\"changeCurrentStep\":_vm.onStepSelected}})],1),_vm._v(\" \"),(_vm.isFirstStep)?_c('welcome'):_vm._e(),_vm._v(\" \"),_c('h2',{staticClass:\"contents-title font-weight-bold container mt-3\"},[_vm._v(\"STEP\"+_vm._s(_vm.reservationStep))]),_vm._v(\" \"),_c('div',{staticClass:\"contents-box my-2\"},[_c('div',{staticClass:\"container py-3\"},[_c('h3',{staticClass:\"h5 font-weight-bold\"},[_vm._v(\"KEY STATIONに向かう\")]),_vm._v(\" \"),_c('p',{staticClass:\"mb-1\"},[_vm._v(\"\\n 下記の場所に設置されているKEY STATIONヘと向かってください。\\n \")]),_vm._v(\" \"),_c('p',{staticClass:\"mb-2 mt-3\"},[_c('span',{staticClass:\"badge bg-primary\"},[_vm._v(\"目的地\")]),_vm._v(\"\\n \"+_vm._s(_vm.keyStationName)+\" \"),_c('br'),_vm._v(\" \"),_c('span',{staticClass:\"badge bg-primary\"},[_vm._v(\"住所\")]),_vm._v(\"\\n \"+_vm._s(_vm.keyStationAddress)+\"\\n \")]),_vm._v(\" \"),(_vm.haveLatLon)?_c('div',{staticClass:\"map border border-primary mb-3\",staticStyle:{\"height\":\"300px\"},attrs:{\"id\":\"map\"}},[_c('GmapMap',{staticStyle:{\"width\":\"100%\",\"height\":\"100%\"},attrs:{\"center\":_vm.gmap.center,\"zoom\":_vm.gmap.zoom,\"map-type-id\":\"roadmap\",\"options\":_vm.gmap.mapStyle}},[_vm._l((_vm.gmap.markerItems),function(item,index){return _c('GmapMarker',{key:index,attrs:{\"position\":item.position,\"title\":item.title,\"clickable\":true,\"draggable\":false},on:{\"click\":function($event){return _vm.toggleInfoWindow(item)}}})}),_vm._v(\" \"),_c('GmapInfoWindow',{attrs:{\"options\":_vm.gmap.infoOptions,\"position\":_vm.gmap.infoWindowPosition,\"opened\":_vm.gmap.infoWindowOpen},on:{\"closeclick\":function($event){_vm.gmap.infoWindowOpen=false}}},[_vm._v(\"\\n \"+_vm._s(_vm.keyStationName)+\"\\n \")])],2)],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"text-right\"},[_c('a',{staticClass:\"btn btn-outline-secondary btn-sm\",attrs:{\"href\":_vm.gmapNaviUrl,\"target\":\"_blank\"}},[_c('img',{staticClass:\"align-text-top\",attrs:{\"src\":require(\"navi/icon_pin.png\"),\"width\":\"16\"}}),_vm._v(\"\\n マップアプリで確認する\\n \")])])])])],1),_vm._v(\" \"),_c('navi-footer',{on:{\"goToNextStep\":_vm.onNextStepSelected}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n
\n
\n \n \n STEP{{reservationStep}} \n \n
\n
KEY STATIONに向かう \n
\n 下記の場所に設置されているKEY STATIONヘと向かってください。\n
\n
\n 目的地 \n {{keyStationName}} \n 住所 \n {{keyStationAddress}}\n
\n
\n \n \n \n \n {{keyStationName}}\n \n \n
\n
\n
\n
\n\n \n
\n
\n \n\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeadingToKs.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeadingToKs.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HeadingToKs.vue?vue&type=template&id=87a6e822&scoped=true&\"\nimport script from \"./HeadingToKs.vue?vue&type=script&lang=js&\"\nexport * from \"./HeadingToKs.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"87a6e822\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('navi-header'),_vm._v(\" \"),_c('main',{attrs:{\"role\":\"main\"}},[_c('div',{staticClass:\"contents-box my-2 py-2\"},[_c('div',{staticClass:\"container\"},[_c('room-info')],1),_vm._v(\" \"),_c('step',{on:{\"changeCurrentStep\":_vm.onStepSelected}})],1),_vm._v(\" \"),(_vm.isFirstStep)?_c('welcome'):_vm._e(),_vm._v(\" \"),_c('h2',{staticClass:\"contents-title font-weight-bold container mt-3\"},[_vm._v(\"STEP\"+_vm._s(_vm.reservationStep))]),_vm._v(\" \"),_c('div',{staticClass:\"contents-box my-2\"},[_c('div',{staticClass:\"container py-3\"},[_c('h3',{staticClass:\"h5 font-weight-bold\"},[_vm._v(\"本人確認を行ってください\")]),_vm._v(\" \"),(_vm.isFaceVerificationUsed)?_c('div',[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.onIdentificationRequesting && !_vm.flowDetailProceedable),expression:\"!onIdentificationRequesting && !flowDetailProceedable\"}]},[_vm._m(0),_vm._v(\" \"),_c('p',{staticClass:\"my-3\"},[_vm._v(\"本人確認を行います。下記のボタンをクリックし、画像認証による本人確認を開始してください。\")]),_vm._v(\" \"),_c('div',{staticClass:\"text-center mb-1\"},[_c('button',{staticClass:\"btn btn-primary rounded-pill px-4 py-2\",class:_vm.identificationBtnDisabledClass,on:{\"click\":_vm.startIdentification}},[_vm._v(\"本人確認を開始する\")])]),_vm._v(\" \"),_vm._m(1)]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.onIdentificationRequesting && !_vm.flowDetailProceedable),expression:\"onIdentificationRequesting && !flowDetailProceedable\"}]},[(_vm.identificationCount < 3)?_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.shooting),expression:\"shooting\"}]},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.capturedUrl == ''),expression:\"capturedUrl == ''\"}],staticClass:\"row\",staticStyle:{\"background-color\":\"white\"}},[(!_vm.errorMsg == '')?_c('div',{staticClass:\"alert alert-danger alert-rounded w100\"},[_vm._v(\"\\n \"+_vm._s(_vm.errorMsg)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-12 text-center mt-4\",attrs:{\"id\":\"faceCamera\"}},[_c('video',{ref:\"video\",attrs:{\"id\":\"video\",\"width\":\"300\",\"height\":\"200\",\"autoplay\":\"\"}}),_vm._v(\" \"),_c('img',{attrs:{\"src\":require(\"face_size_image.png\"),\"width\":\"300\",\"height\":\"200\",\"id\":\"faceSizeImage\"}})]),_vm._v(\" \"),(!_vm.showCautionModal)?_c('div',{staticClass:\"col-12 text-center\"},[_c('a',{staticClass:\"btn btn--circle btn--circle-a btn--shadow\",attrs:{\"href\":\"\",\"id\":\"camera-icon\"},on:{\"click\":function($event){$event.preventDefault();return _vm.capture()}}},[_c('i',{staticClass:\"fas fa-camera fs28\"})])]):_vm._e()]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.capturedUrl == ''),expression:\"!capturedUrl == ''\"}],staticClass:\"row bgw\"},[_c('div',{staticClass:\"col-12 text-center mt-4\"},[_c('img',{attrs:{\"src\":_vm.capturedUrl}})])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.capturedUrl == ''),expression:\"!capturedUrl == ''\"}],staticClass:\"row bgw pr-3 pl-3 pb-5 pt-3\"},[_c('div',{staticClass:\"col-sm-12 col-md-6 text-center mt-3\"},[_c('button',{staticClass:\"btn btn-block btn-rounded btn-secondary\",on:{\"click\":_vm.retake}},[_vm._v(\"取り直し\")])]),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-12 col-md-6 text-center mt-3\"},[_c('button',{staticClass:\"btn btn-block btn-rounded btn-success\",on:{\"click\":_vm.save}},[_vm._v(\"決定\")])])]),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"canvas_wrapper\"}},[_c('canvas',{ref:\"canvas\",attrs:{\"id\":\"canvas\",\"width\":\"300\",\"height\":\"200\"}})])]):_vm._e(),_vm._v(\" \"),_c('Loading',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.shooting),expression:\"!shooting\"}]}),_vm._v(\" \"),(_vm.identificationCount >= 3)?_c('div',[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.customerHasTel),expression:\"!customerHasTel\"}],staticClass:\"mb-4\"},[_c('div',{staticClass:\"contents-box my-2\"},[_c('div',{staticClass:\"container py-3\"},[_c('div',{staticClass:\"alert alert-danger alert-rounded w100\"},[_vm._v(\"\\n 画像での本人確認が複数回失敗しましたので、電話での本人確認を行います。お手数ですが、下記のボタンをタップし、担当者に入電をしてください。\\n \")]),_vm._v(\" \"),_vm._m(2),_vm._v(\" \"),_c('div',{staticClass:\"text-center mb-1\"},[_c('a',{staticClass:\"btn btn-primary rounded-pill mt-3 px-4 py-2\",attrs:{\"href\":_vm.hrefTel}},[_vm._v(\"電話をかける\")])])])])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.customerHasTel),expression:\"customerHasTel\"}],staticClass:\"mb-4\"},[_c('div',{staticClass:\"contents-box my-2\"},[_c('div',{staticClass:\"container py-3\"},[_c('div',{staticClass:\"alert alert-danger alert-rounded w100\"},[_vm._v(\"\\n 画像での本人確認が複数回失敗しましたので、電話での本人確認を行います。お手数ですが、下記のボタンをタップし、担当者に入電リクエストを送付してください。\\n \")]),_vm._v(\" \"),_vm._m(3),_vm._v(\" \"),_c('div',{staticClass:\"text-center mb-1\"},[_c('a',{staticClass:\"btn btn-primary rounded-pill px-4 py-2 mt-3\",class:_vm.actionBtnDisabledClass,attrs:{\"href\":_vm.hrefTel},on:{\"click\":function($event){$event.preventDefault();return _vm.createCallRequestMsg.apply(null, arguments)}}},[_vm._v(\"入電リクエストを送る\")])])])])])]):_vm._e(),_vm._v(\" \"),(_vm.onIdentificationRequesting)?_c('fetch-location',{on:{\"setLocation\":_vm.setLocation}}):_vm._e(),_vm._v(\" \"),_c('photo-untakeable-modal'),_vm._v(\" \"),_c('location-incorrect-modal')],1)]):_c('div',[_c('div',[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.customerHasTel),expression:\"!customerHasTel\"}],staticClass:\"mb-4\"},[_c('div',{staticClass:\"contents-box my-2\"},[_c('div',{staticClass:\"container py-3\"},[_c('div',{staticClass:\"alert alert-danger alert-rounded w100\"},[_vm._v(\"\\n 電話での本人確認を行います。お手数ですが、下記のボタンをタップし、担当者に入電をしてください。\\n \")]),_vm._v(\" \"),_vm._m(4),_vm._v(\" \"),_c('div',{staticClass:\"text-center mb-1\"},[_c('a',{staticClass:\"btn btn-primary rounded-pill mt-3 px-4 py-2\",attrs:{\"href\":_vm.hrefTel}},[_vm._v(\"電話をかける\")])])])])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.customerHasTel),expression:\"customerHasTel\"}],staticClass:\"mb-4\"},[_c('div',{staticClass:\"contents-box my-2\"},[_c('div',{staticClass:\"container py-3\"},[_c('div',{staticClass:\"alert alert-danger alert-rounded w100\"},[_vm._v(\"\\n 電話での本人確認を行います。お手数ですが、下記のボタンをタップし、担当者に入電リクエストを送付してください。\\n \")]),_vm._v(\" \"),_vm._m(5),_vm._v(\" \"),_c('div',{staticClass:\"text-center mb-1\"},[_c('a',{staticClass:\"btn btn-primary rounded-pill px-4 py-2 mt-3\",class:_vm.actionBtnDisabledClass,attrs:{\"href\":_vm.hrefTel},on:{\"click\":function($event){$event.preventDefault();return _vm.createCallRequestMsg.apply(null, arguments)}}},[_vm._v(\"入電リクエストを送る\")])])])])])])])])]),_vm._v(\" \"),(_vm.flowDetailProceedable)?_c('div',{staticClass:\"contents-box my-2\"},[_vm._m(6)]):_vm._e()],1),_vm._v(\" \"),_c('navi-footer',{on:{\"goToNextStep\":_vm.onNextStepSelected}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"text-center\"},[_c('img',{attrs:{\"src\":require(\"navi/camera_kao_ninshiki.png\"),\"width\":\"160\",\"alt\":\"本人確認をする\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',{staticClass:\"my-3 fs075 text-color\"},[_vm._v(\"\\n ※ 本人確認を完了させる為には、\"),_c('br'),_vm._v(\"\\n ・画像認証により、事前に撮影されたお写真と撮影された写真が同一人物であると認定されること\"),_c('br'),_vm._v(\"\\n ・鍵設置位置と、写真撮影位置が同じであること\"),_c('br'),_vm._v(\"\\n が必要となります。\"),_c('br'),_c('br'),_vm._v(\"\\n ですので、必ず指定の鍵設置場所に移動した上で、認証写真の撮影を行ってください。\"),_c('br')])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"text-center\"},[_c('img',{attrs:{\"src\":require(\"navi/phone_tell.png\"),\"width\":\"160\",\"alt\":\"電話をかける\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"text-center\"},[_c('img',{attrs:{\"src\":require(\"navi/phone_tell.png\"),\"width\":\"160\",\"alt\":\"電話をかける\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"text-center\"},[_c('img',{attrs:{\"src\":require(\"navi/phone_tell.png\"),\"width\":\"160\",\"alt\":\"電話をかける\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"text-center\"},[_c('img',{attrs:{\"src\":require(\"navi/phone_tell.png\"),\"width\":\"160\",\"alt\":\"電話をかける\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container py-3\"},[_c('h3',{staticClass:\"h5 font-weight-bold\"},[_vm._v(\"本人確認が完了しました\")]),_vm._v(\" \"),_c('div',{staticClass:\"row align-items-center\"},[_c('div',{staticClass:\"col-4 text-center g-2\"},[_c('img',{staticClass:\"mx-auto\",attrs:{\"src\":require(\"navi/navi_ok.png\"),\"height\":\"160\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"col-8 g-2\"},[_c('p',{staticClass:\"mb-1\"},[_vm._v(\"\\n 本人確認が完了しました。\"),_c('br'),_vm._v(\"次のステップに進めるようになりましたので、以下のボタンから次のステップに進み、鍵をお受取りください。\\n \")])])])])}]\n\nexport { render, staticRenderFns }","\n \n
\n
\n \n \n STEP{{reservationStep}} \n \n
\n
本人確認を行ってください \n\n \n
\n \n
\n
\n
\n
\n
本人確認を行います。下記のボタンをクリックし、画像認証による本人確認を開始してください。
\n
\n 本人確認を開始する \n
\n
\n ※ 本人確認を完了させる為には、 \n ・画像認証により、事前に撮影されたお写真と撮影された写真が同一人物であると認定されること \n ・鍵設置位置と、写真撮影位置が同じであること \n が必要となります。 \n ですので、必ず指定の鍵設置場所に移動した上で、認証写真の撮影を行ってください。 \n
\n
\n\n
\n \n
\n
\n
\n {{ errorMsg }}\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n 取り直し \n
\n
\n 決定 \n
\n
\n
\n \n
\n
\n
\n\n \n
= 3\">\n
\n
\n
\n
\n 画像での本人確認が複数回失敗しましたので、電話での本人確認を行います。お手数ですが、下記のボタンをタップし、担当者に入電をしてください。\n
\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n 画像での本人確認が複数回失敗しましたので、電話での本人確認を行います。お手数ですが、下記のボタンをタップし、担当者に入電リクエストを送付してください。\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n\n \n
\n
\n
\n
\n
\n
\n 電話での本人確認を行います。お手数ですが、下記のボタンをタップし、担当者に入電をしてください。\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n 電話での本人確認を行います。お手数ですが、下記のボタンをタップし、担当者に入電リクエストを送付してください。\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n\n \n \n
\n
本人確認が完了しました \n
\n
\n
\n
\n
\n
\n 本人確認が完了しました。 次のステップに進めるようになりましたので、以下のボタンから次のステップに進み、鍵をお受取りください。\n
\n
\n
\n
\n
\n \n
\n
\n \n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Identification.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Identification.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Identification.vue?vue&type=template&id=6588d18a&scoped=true&\"\nimport script from \"./Identification.vue?vue&type=script&lang=js&\"\nexport * from \"./Identification.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Identification.vue?vue&type=style&index=0&id=6588d18a&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6588d18a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container\"},[_c('vue-loading',{attrs:{\"type\":\"spin\",\"color\":\"#81CB2B\",\"size\":{ width: '100px', height: '100px' }}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loading.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loading.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Loading.vue?vue&type=template&id=c4950e54&scoped=true&\"\nimport script from \"./Loading.vue?vue&type=script&lang=js&\"\nexport * from \"./Loading.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Loading.vue?vue&type=style&index=0&id=c4950e54&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c4950e54\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('navi-header'),_vm._v(\" \"),_c('main',{attrs:{\"role\":\"main\"}},[_c('div',{staticClass:\"contents-box my-2 py-2\"},[_c('div',{staticClass:\"container\"},[_c('room-info')],1),_vm._v(\" \"),_c('step',{on:{\"changeCurrentStep\":_vm.onStepSelected}})],1),_vm._v(\" \"),(_vm.isFirstStep)?_c('welcome'):_vm._e(),_vm._v(\" \"),_c('h2',{staticClass:\"contents-title font-weight-bold container mt-3\"},[_vm._v(\"STEP\"+_vm._s(_vm.reservationStep))]),_vm._v(\" \"),_c('div',{staticClass:\"contents-box my-2\"},[_c('div',{staticClass:\"container pt-3\"},[_c('h3',{staticClass:\"h5 font-weight-bold mb-3\"},[_vm._v(\"お部屋を出たら、ドアジョイナーでしっかり施錠してください。\")]),_vm._v(\" \"),_c('div',{staticClass:\"step-flow pb-3\"},[_c('p',[_vm._v(\"ドアジョイナーが解錠したときと同様の暗証番号の状態のままになっていることを確認してから、もともと施錠されていたのと同じ場所に設置します。\")]),_vm._v(\" \"),_c('div',{staticClass:\"bg-primary p-2 text-center text-white\"},[_vm._v(\"\\n お客様の暗証番号:\"+_vm._s(_vm.doorJoinerPassword)+\"\\n \")])])])]),_vm._v(\" \"),_c('h2',{staticClass:\"contents-title font-weight-bold container mt-3\"},[_vm._v(\"STEP\"+_vm._s(_vm.reservationStep)+\"-2\")]),_vm._v(\" \"),_vm._m(0)],1),_vm._v(\" \"),_c('navi-footer',{on:{\"goToNextStep\":_vm.onNextStepSelected}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"contents-box my-2\"},[_c('div',{staticClass:\"container pt-3\"},[_c('h3',{staticClass:\"h5 font-weight-bold mb-3\"},[_vm._v(\"次に暗証番号以外の番号になるように数値をランダムに動かして、施錠をしてください。\")]),_vm._v(\" \"),_c('div',{staticClass:\"step-flow\"},[_c('div',{staticClass:\"image-box pb-3\"},[_c('img',{staticClass:\"w-100 rounded\",attrs:{\"src\":require(\"navi/lock_door_joiner.png\")}})])])])])}]\n\nexport { render, staticRenderFns }","\n \n
\n
\n \n \n STEP{{reservationStep}} \n \n
\n
お部屋を出たら、ドアジョイナーでしっかり施錠してください。 \n
\n
ドアジョイナーが解錠したときと同様の暗証番号の状態のままになっていることを確認してから、もともと施錠されていたのと同じ場所に設置します。
\n
\n お客様の暗証番号:{{doorJoinerPassword}}\n
\n
\n
\n
\n\n STEP{{reservationStep}}-2 \n \n
\n
次に暗証番号以外の番号になるように数値をランダムに動かして、施錠をしてください。 \n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n \n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LockDoorJoiner.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LockDoorJoiner.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LockDoorJoiner.vue?vue&type=template&id=33329018&scoped=true&\"\nimport script from \"./LockDoorJoiner.vue?vue&type=script&lang=js&\"\nexport * from \"./LockDoorJoiner.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"33329018\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('navi-header'),_vm._v(\" \"),_c('main',{attrs:{\"role\":\"main\"}},[_c('div',{staticClass:\"contents-box my-2 py-2\"},[_c('div',{staticClass:\"container\"},[_c('room-info')],1),_vm._v(\" \"),_c('step',{on:{\"changeCurrentStep\":_vm.onStepSelected}})],1),_vm._v(\" \"),(_vm.isFirstStep)?_c('welcome'):_vm._e(),_vm._v(\" \"),_c('h2',{staticClass:\"contents-title font-weight-bold container mt-3\"},[_vm._v(\"STEP\"+_vm._s(_vm.reservationStep))]),_vm._v(\" \"),_c('div',{staticClass:\"contents-box my-2\"},[_c('div',{staticClass:\"container py-3\"},[_c('h3',{staticClass:\"h5 font-weight-bold\"},[_vm._v(\"鍵を返却します\")]),_vm._v(\" \"),_c('p',{staticClass:\"mb-1\"},[_vm._v(\"\\n 内見が終了したら鍵をキーステーションに戻します。\\n \")]),_vm._v(\" \"),_c('p',{staticClass:\"mb-2\"},[_c('span',{staticClass:\"badge bg-primary\"},[_vm._v(\"目的地\")]),_vm._v(\"\\n \"+_vm._s(_vm.keyStationName)),_c('br'),_vm._v(\" \"),_c('span',{staticClass:\"badge bg-primary\"},[_vm._v(\"住所\")]),_vm._v(\"\\n \"+_vm._s(_vm.keyStationAddress)+\"\\n \")]),_vm._v(\" \"),(_vm.haveLatLon)?_c('div',{staticClass:\"map border border-primary mb-3\",staticStyle:{\"height\":\"300px\"},attrs:{\"id\":\"map\"}},[_c('GmapMap',{staticStyle:{\"width\":\"100%\",\"height\":\"100%\"},attrs:{\"center\":_vm.gmap.center,\"zoom\":_vm.gmap.zoom,\"map-type-id\":\"roadmap\",\"options\":_vm.gmap.mapStyle}},[_vm._l((_vm.gmap.markerItems),function(item,index){return _c('GmapMarker',{key:index,attrs:{\"position\":item.position,\"title\":item.title,\"clickable\":true,\"draggable\":false},on:{\"click\":function($event){return _vm.toggleInfoWindow(item)}}})}),_vm._v(\" \"),_c('GmapInfoWindow',{attrs:{\"options\":_vm.gmap.infoOptions,\"position\":_vm.gmap.infoWindowPosition,\"opened\":_vm.gmap.infoWindowOpen},on:{\"closeclick\":function($event){_vm.gmap.infoWindowOpen=false}}},[_vm._v(\"\\n \"+_vm._s(_vm.keyStationName)+\"\\n \")])],2)],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"text-right\"},[_c('a',{staticClass:\"btn btn-outline-secondary btn-sm\",attrs:{\"href\":_vm.gmapNaviUrl,\"target\":\"_blank\"}},[_c('img',{staticClass:\"align-text-top\",attrs:{\"src\":require(\"navi/icon_pin.png\"),\"width\":\"16\"}}),_vm._v(\"\\n マップアプリで確認する\\n \")])])])]),_vm._v(\" \"),_c('h2',{staticClass:\"contents-title font-weight-bold container mt-3\"},[_vm._v(\"STEP\"+_vm._s(_vm.reservationStep)+\"-1\")]),_vm._v(\" \"),_c('div',{staticClass:\"contents-box my-2\"},[_c('div',{staticClass:\"container pt-3\"},[_c('h3',{staticClass:\"h5 font-weight-bold mb-3\"},[_vm._v(\"キーステーションに到着したら、以下の暗証番号を入力し、キーボックスから鍵を返却します。\")]),_vm._v(\" \"),_c('div',{staticClass:\"step-flow pb-3\"},[_vm._m(0),_vm._v(\" \"),_c('img',{staticClass:\"w-100 rounded mb-2\",attrs:{\"src\":require(\"navi/photo_keyflow_1.png\")}}),_vm._v(\" \"),_c('div',{staticClass:\"bg-primary p-2 text-center text-white\"},[_vm._v(\"\\n お客様の暗証番号:\"+_vm._s(_vm.keyStationPassword)+\"\\n \")]),_vm._v(\" \"),_vm._m(1)]),_vm._v(\" \"),_vm._m(2),_vm._v(\" \"),_vm._m(3),_vm._v(\" \"),_vm._m(4)])])],1),_vm._v(\" \"),_c('navi-footer',{on:{\"goToNextStep\":_vm.onNextStepSelected}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h4',{staticClass:\"h6 font-weight-bold\"},[_c('span',{staticClass:\"count-icon\"},[_vm._v(\"1\")]),_vm._v(\"6桁パスワード+ENTを押します。\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"border p-2 mt-2\"},[_c('p',{staticClass:\"mb-2\"},[_vm._v(\"パスワードを入力しても扉が開かないなど、キーステーションに関するトラブルはこちら\")]),_vm._v(\" \"),_c('p',{staticClass:\"border-top pt-2 mb-1 small text-center\"},[_vm._v(\"キーステーションカスタマーサポート連絡先\")]),_vm._v(\" \"),_c('div',{staticClass:\"text-center mb-1\"},[_c('a',{staticClass:\"btn btn-outline-secondary rounded-pill px-5 py-2\",attrs:{\"href\":\"tel:05032013735\"}},[_c('span',{staticClass:\"fas fa-phone-alt\"}),_vm._v(\"\\n 050-3201-3735\\n \")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"step-flow pb-3\"},[_c('h4',{staticClass:\"h6 font-weight-bold\"},[_c('span',{staticClass:\"count-icon\"},[_vm._v(\"2\")]),_vm._v(\"ボックスのドアの右側部分を押すと扉が開きます。\")]),_vm._v(\" \"),_c('img',{staticClass:\"w-100 rounded mb-2\",attrs:{\"src\":require(\"navi/photo_keyflow_2.png\")}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"step-flow pb-3\"},[_c('h4',{staticClass:\"h6 font-weight-bold\"},[_c('span',{staticClass:\"count-icon\"},[_vm._v(\"3\")]),_vm._v(\"同じ番号のスロットに鍵を差します。\")]),_vm._v(\" \"),_c('img',{staticClass:\"w-100 rounded mb-2\",attrs:{\"src\":require(\"navi/photo_keyflow_3.png\")}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"step-flow pb-2\"},[_c('h4',{staticClass:\"h6 font-weight-bold\"},[_c('span',{staticClass:\"count-icon\"},[_vm._v(\"4\")]),_vm._v(\"鍵を戻したら、扉を閉めます。\")]),_vm._v(\" \"),_c('img',{staticClass:\"w-100 rounded mb-2\",attrs:{\"src\":require(\"navi/photo_keyflow_4.png\")}})])}]\n\nexport { render, staticRenderFns }","\n \n
\n
\n \n \n STEP{{reservationStep}} \n \n
\n
鍵を返却します \n
\n 内見が終了したら鍵をキーステーションに戻します。\n
\n
\n 目的地 \n {{keyStationName}}\n 住所 \n {{keyStationAddress}}\n
\n
\n \n \n \n \n {{keyStationName}}\n \n \n
\n
\n
\n
\n\n STEP{{reservationStep}}-1 \n \n
\n
キーステーションに到着したら、以下の暗証番号を入力し、キーボックスから鍵を返却します。 \n
\n
1 6桁パスワード+ENTを押します。\n
\n
\n お客様の暗証番号:{{keyStationPassword}}\n
\n
\n
パスワードを入力しても扉が開かないなど、キーステーションに関するトラブルはこちら
\n
キーステーションカスタマーサポート連絡先
\n
\n
\n
\n
\n
2 ボックスのドアの右側部分を押すと扉が開きます。\n
\n
\n
\n
3 同じ番号のスロットに鍵を差します。\n
\n
\n
\n
4 鍵を戻したら、扉を閉めます。\n
\n
\n
\n
\n \n
\n
\n \n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReturnKeyToKs.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReturnKeyToKs.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ReturnKeyToKs.vue?vue&type=template&id=aecf2808&scoped=true&\"\nimport script from \"./ReturnKeyToKs.vue?vue&type=script&lang=js&\"\nexport * from \"./ReturnKeyToKs.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"aecf2808\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('navi-header'),_vm._v(\" \"),_c('main',{attrs:{\"role\":\"main\"}},[_c('div',{staticClass:\"contents-box my-2 py-2\"},[_c('div',{staticClass:\"container\"},[_c('room-info')],1),_vm._v(\" \"),_c('step',{on:{\"changeCurrentStep\":_vm.onStepSelected}})],1),_vm._v(\" \"),(_vm.isFirstStep)?_c('welcome'):_vm._e(),_vm._v(\" \"),_c('h2',{staticClass:\"contents-title font-weight-bold container mt-3\"},[_vm._v(\"STEP\"+_vm._s(_vm.reservationStep))]),_vm._v(\" \"),_c('div',{staticClass:\"contents-box my-2\"},[_c('div',{staticClass:\"container py-3\"},[_c('h3',{staticClass:\"h5 font-weight-bold\"},[_vm._v(\"鍵を返却します\")]),_vm._v(\" \"),_c('p',{staticClass:\"mb-4\"},[_vm._v(\"\\n 内見が終了したら鍵ボックスに鍵を戻します。\\n \")]),_vm._v(\" \"),(!_vm.flowDetail['text'] == '')?_c('p',{staticClass:\"mb-3\"},[_c('span',{staticClass:\"badge bg-primary\"},[_vm._v(\"詳細\")]),_vm._v(\"\\n \"+_vm._s(_vm.flowDetail['text'])),_c('br')]):_vm._e(),_vm._v(\" \"),_vm._m(0),_vm._v(\" \"),(!_vm.flowDetail['image1_url'] == '')?_c('p',{staticClass:\"mb-3\"},[_c('span',{staticClass:\"badge bg-primary\"},[_vm._v(\"参考画像1\")]),_vm._v(\" \"),_c('img',{staticClass:\"w-100 rounded mb-2\",attrs:{\"src\":_vm.flowDetail['image1_url']}})]):_vm._e(),_vm._v(\" \"),(!_vm.flowDetail['image2_url'] == '')?_c('p',{staticClass:\"mb-3\"},[_c('span',{staticClass:\"badge bg-primary\"},[_vm._v(\"参考画像2\")]),_vm._v(\" \"),_c('img',{staticClass:\"w-100 rounded mb-2\",attrs:{\"src\":_vm.flowDetail['image2_url']}})]):_vm._e(),_vm._v(\" \"),_vm._m(1)])]),_vm._v(\" \"),_c('h2',{staticClass:\"contents-title font-weight-bold container mt-3\"},[_vm._v(\"STEP\"+_vm._s(_vm.reservationStep)+\"-1\")]),_vm._v(\" \"),_c('div',{staticClass:\"contents-box my-2\"},[_c('div',{staticClass:\"container pt-3\"},[_c('h3',{staticClass:\"h5 font-weight-bold mb-3\"},[_vm._v(\"以下の暗証番号を入力し、鍵ボックスに鍵を返却します。\")]),_vm._v(\" \"),_c('div',{staticClass:\"step-flow pb-3\"},[_vm._m(2),_vm._v(\" \"),_c('img',{staticClass:\"w-100 rounded mb-2\",attrs:{\"src\":require(\"navi/populife_input_password.png\")}}),_vm._v(\" \"),_c('div',{staticClass:\"bg-primary p-2 text-center text-white\"},[_vm._v(\"\\n お客様の暗証番号:\"),_c('br'),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.prevPwDateTime))]),_vm._v(\" / \"),_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.prevPw))]),_c('br'),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.currentPwDateTime))]),_vm._v(\" / \"),_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.currentPw))]),_c('br'),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.nextPwDateTime))]),_vm._v(\" / \"),_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.nextPw))]),_c('br')]),_vm._v(\" \"),_vm._m(3)]),_vm._v(\" \"),_vm._m(4),_vm._v(\" \"),_vm._m(5),_vm._v(\" \"),_vm._m(6),_vm._v(\" \"),_vm._m(7)])])],1),_vm._v(\" \"),_c('navi-footer',{on:{\"goToNextStep\":_vm.onNextStepSelected}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',{staticClass:\"mb-3\"},[_c('span',{staticClass:\"badge bg-primary\"},[_vm._v(\"鍵ボックス参考画像\")]),_vm._v(\" \"),_c('img',{staticClass:\"w-100 rounded mb-2\",attrs:{\"src\":require(\"navi/populife_input_password.png\")}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',{staticClass:\"mb-3\"},[_c('span',{staticClass:\"badge bg-primary\"},[_vm._v(\"注意\")]),_c('br'),_vm._v(\"\\n ・5回パスワードを間違えると5分間使用不可となります。ご注意ください。\"),_c('br'),_vm._v(\"\\n ・指を挟まないようご注意ください。\"),_c('br')])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h4',{staticClass:\"h6 font-weight-bold\"},[_c('span',{staticClass:\"count-icon\"},[_vm._v(\"1\")]),_vm._v(\"パスワード+ 右下の開錠ボタンを押します\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"border p-2 mt-2\"},[_c('p',{staticClass:\"mb-2\"},[_vm._v(\"パスワードを入力しても扉が開かないなど、鍵ボックスに関するトラブルはこちら\")]),_vm._v(\" \"),_c('p',{staticClass:\"border-top pt-2 mb-1 small text-center\"},[_vm._v(\"キーステーションカスタマーサポート連絡先\")]),_vm._v(\" \"),_c('div',{staticClass:\"text-center mb-1\"},[_c('a',{staticClass:\"btn btn-outline-secondary rounded-pill px-5 py-2\",attrs:{\"href\":\"tel:05032013735\"}},[_c('span',{staticClass:\"fas fa-phone-alt\"}),_vm._v(\"\\n 050-3201-3735\\n \")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"step-flow pb-3\"},[_c('h4',{staticClass:\"h6 font-weight-bold\"},[_c('span',{staticClass:\"count-icon\"},[_vm._v(\"2\")]),_vm._v(\"ロックが解除され、扉が開きます\")]),_vm._v(\" \"),_c('img',{staticClass:\"w-100 rounded mb-2\",attrs:{\"src\":require(\"navi/populife_open.png\")}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"step-flow pb-3\"},[_c('h4',{staticClass:\"h6 font-weight-bold\"},[_c('span',{staticClass:\"count-icon\"},[_vm._v(\"3\")]),_vm._v(\"鍵を中に戻します\")]),_vm._v(\" \"),_c('img',{staticClass:\"w-100 rounded mb-2\",attrs:{\"src\":require(\"navi/populife_return_key.png\")}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"step-flow pb-2\"},[_c('h4',{staticClass:\"h6 font-weight-bold\"},[_c('span',{staticClass:\"count-icon\"},[_vm._v(\"4\")]),_vm._v(\"鍵を戻したら、扉を閉めます。\")]),_vm._v(\" \"),_c('img',{staticClass:\"w-100 rounded mb-2\",attrs:{\"src\":require(\"navi/populife_close.png\")}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"step-flow pb-2\"},[_c('h4',{staticClass:\"h6 font-weight-bold\"},[_c('span',{staticClass:\"count-icon\"},[_vm._v(\"5\")]),_vm._v(\"扉を閉めると、自動でロックが掛かります\")]),_vm._v(\" \"),_c('img',{staticClass:\"w-100 rounded mb-2\",attrs:{\"src\":require(\"navi/populife_lock.png\")}})])}]\n\nexport { render, staticRenderFns }","\n \n
\n
\n \n \n STEP{{reservationStep}} \n \n
\n
鍵を返却します \n
\n 内見が終了したら鍵ボックスに鍵を戻します。\n
\n
\n 詳細 \n {{flowDetail['text']}}\n
\n
\n 鍵ボックス参考画像 \n \n\n
\n
\n 参考画像1 \n \n\n
\n
\n 参考画像2 \n \n\n
\n
\n 注意 \n ・5回パスワードを間違えると5分間使用不可となります。ご注意ください。\n ・指を挟まないようご注意ください。\n
\n
\n
\n\n STEP{{reservationStep}}-1 \n \n
\n
以下の暗証番号を入力し、鍵ボックスに鍵を返却します。 \n
\n
1 パスワード+ 右下の開錠ボタンを押します\n
\n
\n お客様の暗証番号: \n {{prevPwDateTime}} / {{prevPw}} \n {{currentPwDateTime}} / {{currentPw}} \n {{nextPwDateTime}} / {{nextPw}} \n
\n
\n
パスワードを入力しても扉が開かないなど、鍵ボックスに関するトラブルはこちら
\n
キーステーションカスタマーサポート連絡先
\n
\n
\n
\n
\n
2 ロックが解除され、扉が開きます\n
\n
\n
\n
3 鍵を中に戻します\n
\n
\n
\n
4 鍵を戻したら、扉を閉めます。\n
\n
\n
\n
5 扉を閉めると、自動でロックが掛かります\n
\n
\n
\n
\n \n
\n
\n \n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReturnKeyToPopulife.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReturnKeyToPopulife.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ReturnKeyToPopulife.vue?vue&type=template&id=4baa1834&scoped=true&\"\nimport script from \"./ReturnKeyToPopulife.vue?vue&type=script&lang=js&\"\nexport * from \"./ReturnKeyToPopulife.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4baa1834\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('navi-header'),_vm._v(\" \"),_c('main',{attrs:{\"role\":\"main\"}},[_c('div',{staticClass:\"contents-box my-2 py-2\"},[_c('div',{staticClass:\"container\"},[_c('room-info')],1),_vm._v(\" \"),_c('step',{on:{\"changeCurrentStep\":_vm.onStepSelected}})],1),_vm._v(\" \"),(_vm.isFirstStep)?_c('welcome'):_vm._e(),_vm._v(\" \"),_c('h2',{staticClass:\"contents-title font-weight-bold container mt-3\"},[_vm._v(\"STEP\"+_vm._s(_vm.reservationStep))]),_vm._v(\" \"),_c('div',{staticClass:\"contents-box my-2\"},[_c('div',{staticClass:\"container pt-3\"},[_c('h3',{staticClass:\"h5 font-weight-bold mb-3\"},[_vm._v(\"お部屋のドアはドアジョイナーで施錠されているため、解錠してお部屋に入っていただきます。\")]),_vm._v(\" \"),_c('div',{staticClass:\"step-flow pb-3\"},[_c('p',[_vm._v(\"退出時には再度施錠をして頂きますので、解錠したドアジョイナーは無くさずにお持ちください\")]),_vm._v(\" \"),_c('div',{staticClass:\"image-box pb-3\"},[_c('img',{staticClass:\"w-100 rounded\",attrs:{\"src\":_vm.doorJoinerImageUrl}})]),_vm._v(\" \"),_c('p',[_vm._v(\"以下の暗証番号でドアジョイナーを解錠してください。\")]),_vm._v(\" \"),_c('div',{staticClass:\"bg-primary p-2 text-center text-white\"},[_vm._v(\"\\n お客様の暗証番号:\"+_vm._s(_vm.doorJoinerPassword)+\"\\n \")])])])])],1),_vm._v(\" \"),_c('navi-footer',{on:{\"goToNextStep\":_vm.onNextStepSelected}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n
\n
\n \n \n STEP{{reservationStep}} \n \n
\n
お部屋のドアはドアジョイナーで施錠されているため、解錠してお部屋に入っていただきます。 \n
\n
退出時には再度施錠をして頂きますので、解錠したドアジョイナーは無くさずにお持ちください
\n
\n
\n
\n
以下の暗証番号でドアジョイナーを解錠してください。
\n
\n お客様の暗証番号:{{doorJoinerPassword}}\n
\n
\n
\n
\n \n
\n
\n \n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnlockDoorJoiner.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnlockDoorJoiner.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UnlockDoorJoiner.vue?vue&type=template&id=70a16a25&scoped=true&\"\nimport script from \"./UnlockDoorJoiner.vue?vue&type=script&lang=js&\"\nexport * from \"./UnlockDoorJoiner.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"70a16a25\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('navi-header'),_vm._v(\" \"),_c('main',{attrs:{\"role\":\"main\"}},[_c('div',{staticClass:\"contents-box my-2 py-2\"},[_c('div',{staticClass:\"container\"},[_c('room-info')],1),_vm._v(\" \"),_c('step',{on:{\"changeCurrentStep\":_vm.onStepSelected}})],1),_vm._v(\" \"),(_vm.isFirstStep)?_c('welcome'):_vm._e(),_vm._v(\" \"),_c('h2',{staticClass:\"contents-title font-weight-bold container mt-3\"},[_vm._v(\"STEP\"+_vm._s(_vm.reservationStep))]),_vm._v(\" \"),_c('div',{staticClass:\"contents-box my-2\"},[_c('div',{staticClass:\"container py-3\"},[_c('h3',{staticClass:\"h5 font-weight-bold mb-3\"},[_vm._v(\"部屋に入りましたら、内見スタートです。質問などあればチャットから遠慮なくお聞きください。\")]),_vm._v(\" \"),_c('p',{staticClass:\"font-weight-bold mb-3 mt-3\",staticStyle:{\"text-decoration\":\"underline\"}},[_vm._v(\"※内見が終了されましたら必ず内見完了ボタンを押してください。\\n 内見開始後30分以内に内見終了ボタンが押されていない場合、お電話にてご連絡させて頂く場合がございます。\")]),_vm._v(\" \"),(_vm.roomLayoutImageUrl)?_c('div',{staticClass:\"step-flow pb-3\"},[_c('div',{staticClass:\"image-box\"},[_c('vue-pure-lightbox',{staticStyle:{\"width\":\"100%\"},attrs:{\"thumbnail\":_vm.roomLayoutImageUrl,\"images\":_vm.lightbox.images}}),_vm._v(\" \"),(_vm.roomLayoutImageUrl)?_c('div',{staticClass:\"text-center mb-4\"},[_c('vue-pure-lightbox',{staticStyle:{\"width\":\"10%\",\"margin\":\"0 auto\"},attrs:{\"thumbnail\":_vm.expandImageUrl,\"images\":_vm.lightbox.images}})],1):_vm._e()],1)]):_vm._e(),_vm._v(\" \"),_vm._m(0)])]),_vm._v(\" \"),_c('h2',{staticClass:\"contents-title font-weight-bold container mt-3\"},[_vm._v(\"STEP\"+_vm._s(_vm.reservationStep)+\"-2\")]),_vm._v(\" \"),_c('div',{staticClass:\"contents-box my-2\"},[_c('div',{staticClass:\"container py-3\"},[_c('h3',{staticClass:\"h5 font-weight-bold mb-3\"},[_vm._v(\"内見が終了したら、戸締まりをしてお部屋から出ます。\")]),_vm._v(\" \"),_c('div',{staticClass:\"check-list border border-primary p-3 pb-2\"},[_c('h4',{staticClass:\"h6 font-weight-bold mb-0\"},[_vm._v(\"内見終了時チェックリスト\")]),_vm._v(\" \"),_c('p',{staticClass:\"mb-3\"},[_vm._v(\"\\n (全てのチェックが完了すると、次のステップへと進めます)\\n \")]),_vm._v(\" \"),_vm._l((_vm.checklists),function(checklist,index){return _c('div',{key:index,staticClass:\"custom-checkbox custom-control\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.checked),expression:\"checked\"}],staticClass:\"custom-control-input\",attrs:{\"type\":\"checkbox\",\"id\":'checkbox' + index},domProps:{\"value\":'checkbox' + index,\"checked\":Array.isArray(_vm.checked)?_vm._i(_vm.checked,'checkbox' + index)>-1:(_vm.checked)},on:{\"change\":[function($event){var $$a=_vm.checked,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v='checkbox' + index,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.checked=$$a.concat([$$v]))}else{$$i>-1&&(_vm.checked=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.checked=$$c}},function($event){return _vm.onListChecked()}]}}),_vm._v(\" \"),_c('label',{staticClass:\"custom-control-label\",attrs:{\"for\":'checkbox' + index}},[_vm._v(\"\\n \"+_vm._s(checklist.text)+\"\\n \")])])})],2)])])],1),_vm._v(\" \"),_c('navi-footer',{attrs:{\"btnText\":\"内見終了\"},on:{\"goToNextStep\":_vm.onNextStepSelected}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"check-list border border-primary p-3 pb-2\"},[_c('h4',{staticClass:\"h6 font-weight-bold\"},[_vm._v(\"内見時チェックリスト\")]),_vm._v(\" \"),_c('div',{staticClass:\"custom-checkbox custom-control\"},[_c('input',{staticClass:\"custom-control-input\",attrs:{\"type\":\"checkbox\",\"id\":\"flexCheck1-1\"}}),_vm._v(\" \"),_c('label',{staticClass:\"custom-control-label\",attrs:{\"for\":\"flexCheck1-1\"}},[_vm._v(\"\\n コンセントの位置を確認した\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"custom-checkbox custom-control\"},[_c('input',{staticClass:\"custom-control-input\",attrs:{\"type\":\"checkbox\",\"id\":\"flexCheck1-2\"}}),_vm._v(\" \"),_c('label',{staticClass:\"custom-control-label\",attrs:{\"for\":\"flexCheck1-2\"}},[_vm._v(\"\\n 水回りを確認した\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"custom-checkbox custom-control\"},[_c('input',{staticClass:\"custom-control-input\",attrs:{\"type\":\"checkbox\",\"id\":\"flexCheck1-3\"}}),_vm._v(\" \"),_c('label',{staticClass:\"custom-control-label\",attrs:{\"for\":\"flexCheck1-3\"}},[_vm._v(\"\\n カーテンのサイズを確認した\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"custom-checkbox custom-control\"},[_c('input',{staticClass:\"custom-control-input\",attrs:{\"type\":\"checkbox\",\"id\":\"flexCheck1-4\"}}),_vm._v(\" \"),_c('label',{staticClass:\"custom-control-label\",attrs:{\"for\":\"flexCheck1-4\"}},[_vm._v(\"\\n 収納を確認した\\n \")])])])}]\n\nexport { render, staticRenderFns }","\n \n
\n
\n \n \n STEP{{reservationStep}} \n \n
\n
部屋に入りましたら、内見スタートです。質問などあればチャットから遠慮なくお聞きください。 \n
※内見が終了されましたら必ず内見完了ボタンを押してください。\n 内見開始後30分以内に内見終了ボタンが押されていない場合、お電話にてご連絡させて頂く場合がございます。
\n
\n
\n
\n
\n\n STEP{{reservationStep}}-2 \n \n
\n
内見が終了したら、戸締まりをしてお部屋から出ます。 \n
\n
内見終了時チェックリスト \n
\n (全てのチェックが完了すると、次のステップへと進めます)\n
\n
\n \n \n {{checklist.text}}\n \n
\n
\n
\n
\n \n
\n \n \n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Viewing.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Viewing.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Viewing.vue?vue&type=template&id=218e26d0&scoped=true&\"\nimport script from \"./Viewing.vue?vue&type=script&lang=js&\"\nexport * from \"./Viewing.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Viewing.vue?vue&type=style&index=0&id=218e26d0&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"218e26d0\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('navi-header'),_vm._v(\" \"),_c('main',{attrs:{\"role\":\"main\"}},[_c('div',{staticClass:\"contents-box my-2 py-2\"},[_c('div',{staticClass:\"container\"},[_c('room-info')],1),_vm._v(\" \"),_c('step',{on:{\"changeCurrentStep\":_vm.onStepSelected}})],1),_vm._v(\" \"),(_vm.isFirstStep)?_c('welcome'):_vm._e(),_vm._v(\" \"),_c('h2',{staticClass:\"contents-title font-weight-bold container mt-3\"},[_vm._v(\"STEP\"+_vm._s(_vm.reservationStep))]),_vm._v(\" \"),_c('div',{staticClass:\"contents-box my-2\"},[_c('div',{staticClass:\"container py-3\"},[_c('h3',{staticClass:\"h5 font-weight-bold\"},[_vm._v(_vm._s(_vm.customerFullName)+\"様、本日は内見お疲れ様でした。\")]),_vm._v(\" \"),_vm._m(0),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.impressionSelectShowable),expression:\"impressionSelectShowable\"}],staticClass:\"p-2 mt-5 text-center\"},[_c('p',{staticClass:\"mb-2\"},[_vm._v(\"本日見られたお部屋の感想をお聞かせください\")]),_vm._v(\" \"),_c('div',{staticClass:\"text-center mt-3\"},[_c('button',{staticClass:\"btn btn-outline-secondary rounded-pill px-5 py-2\",on:{\"click\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"prev\",undefined,$event.key,undefined)){ return null; }return _vm.onImpressionSelected('good')}}},[_c('i',{staticClass:\"far fa-thumbs-up\"}),_vm._v(\"\\n 気に入った\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"text-center mt-3\"},[_c('button',{staticClass:\"btn btn-outline-secondary rounded-pill px-5 py-2\",on:{\"click\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"prev\",undefined,$event.key,undefined)){ return null; }return _vm.onImpressionSelected('soso')}}},[_c('i',{staticClass:\"far fa-hand-point-right\"}),_vm._v(\"\\n まずまず\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"text-center mt-3\"},[_c('button',{staticClass:\"btn btn-outline-secondary rounded-pill px-5 py-2\",on:{\"click\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"prev\",undefined,$event.key,undefined)){ return null; }return _vm.onImpressionSelected('bad')}}},[_c('i',{staticClass:\"far fa-thumbs-down\"}),_vm._v(\"\\n いまいち\\n \")])])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.willingSelectShowable),expression:\"willingSelectShowable\"}],staticClass:\"p-2 mt-3 text-center\"},[_c('p',{staticClass:\"mb-2\"},[_vm._v(\"この物件の申し込みを検討されますか?\")]),_vm._v(\" \"),_c('div',{staticClass:\"text-center mt-3\"},[_c('button',{staticClass:\"btn btn-outline-secondary rounded-pill px-5 py-2\",on:{\"click\":function($event){$event.preventDefault();return _vm.onWillingSelected(true)}}},[_c('i',{staticClass:\"far fa-circle\"}),_vm._v(\"\\n 検討する\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"text-center mt-3\"},[_c('button',{staticClass:\"btn btn-outline-secondary rounded-pill px-5 py-2\",on:{\"click\":function($event){$event.preventDefault();return _vm.onWillingSelected(false)}}},[_c('i',{staticClass:\"fas fa-times\"}),_vm._v(\"\\n 検討しない\\n \")])])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.messageShowable),expression:\"messageShowable\"}],staticClass:\"p-2 mt-3 text-center\"},[_c('p',{staticClass:\"mb-2\"},[_vm._v(\"その他、物件の感想や内覧方法に関してなど、ご意見をいただけますと幸いです。\")]),_vm._v(\" \"),_c('div',{staticClass:\"text-center mb-1\"},[_c('a',{staticClass:\"btn btn-outline-secondary rounded-pill px-5 py-2\",attrs:{\"href\":\"\"},on:{\"click\":function($event){$event.preventDefault();return _vm.onChatOpenClicked()}}},[_vm._v(\"チャットを開く\")])])])])])],1),_vm._v(\" \"),_c('navi-footer',{on:{\"goToNextStep\":_vm.onNextStepSelected}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row align-items-center\"},[_c('div',{staticClass:\"col-4 text-center g-2\"},[_c('img',{staticClass:\"mx-auto\",attrs:{\"src\":require(\"navi/navi_ok.png\"),\"height\":\"160\",\"alt\":\"アドバイザー\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"col-8 g-2\"},[_c('p',{staticClass:\"mb-1\"},[_vm._v(\"\\n 今後お部屋に関するご質問、お申込みに関する事項などございましたらチャットよりお気軽にご連絡ください。お気をつけてお帰りください。\\n \")])])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FinishViewing.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FinishViewing.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FinishViewing.vue?vue&type=template&id=a747554a&scoped=true&\"\nimport script from \"./FinishViewing.vue?vue&type=script&lang=js&\"\nexport * from \"./FinishViewing.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a747554a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('navi-header'),_vm._v(\" \"),_c('main',{attrs:{\"role\":\"main\"}},[_c('div',{staticClass:\"contents-box my-2 py-2\"},[_c('div',{staticClass:\"container\"},[_c('room-info')],1),_vm._v(\" \"),_c('step',{on:{\"changeCurrentStep\":_vm.onStepSelected}})],1),_vm._v(\" \"),(_vm.isFirstStep)?_c('welcome'):_vm._e(),_vm._v(\" \"),_c('h2',{staticClass:\"contents-title font-weight-bold container mt-3\"},[_vm._v(\"STEP\"+_vm._s(_vm.reservationStep))]),_vm._v(\" \"),_c('div',{staticClass:\"contents-box my-2\"},[_c('div',{staticClass:\"container py-3\"},[_c('h3',{staticClass:\"h5 font-weight-bold\"},[_vm._v(\"物件に向かっていただきます。\")]),_vm._v(\" \"),_c('p',{staticClass:\"mb-1 mt-3\"},[_vm._v(\"\\n 物件住所: \"+_vm._s(_vm.propertyAddress)),_c('br'),_vm._v(\"\\n 最寄り駅: \"+_vm._s(_vm.propertyStationLine)+\" \"+_vm._s(_vm.propertyStation)+\"駅\"),_c('br')]),_vm._v(\" \"),_c('p',[_c('span',{staticClass:\"badge bg-primary\"},[_vm._v(\"目的地\")]),_vm._v(\"\\n \"+_vm._s(_vm.reservationRoomWithProperty)+\"\\n \")]),_vm._v(\" \"),(_vm.haveLatLon)?_c('div',{staticClass:\"map border border-primary mb-3\",staticStyle:{\"height\":\"300px\"},attrs:{\"id\":\"map\"}},[_c('GmapMap',{staticStyle:{\"width\":\"100%\",\"height\":\"100%\"},attrs:{\"center\":_vm.gmap.center,\"zoom\":_vm.gmap.zoom,\"map-type-id\":\"roadmap\",\"options\":_vm.gmap.mapStyle}},[_vm._l((_vm.gmap.markerItems),function(item,index){return _c('GmapMarker',{key:index,attrs:{\"position\":item.position,\"title\":item.title,\"clickable\":true,\"draggable\":false},on:{\"click\":function($event){return _vm.toggleInfoWindow(item)}}})}),_vm._v(\" \"),_c('GmapInfoWindow',{attrs:{\"options\":_vm.gmap.infoOptions,\"position\":_vm.gmap.infoWindowPosition,\"opened\":_vm.gmap.infoWindowOpen},on:{\"closeclick\":function($event){_vm.gmap.infoWindowOpen=false}}},[_vm._v(\"\\n \"+_vm._s(_vm.reservationRoomWithProperty)+\"\\n \")])],2)],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"text-right\"},[_c('a',{staticClass:\"btn btn-outline-secondary btn-sm\",attrs:{\"href\":_vm.gmapNaviUrl,\"target\":\"_blank\"}},[_c('img',{staticClass:\"align-text-top\",attrs:{\"src\":require(\"navi/icon_pin.png\"),\"width\":\"16\"}}),_vm._v(\"\\n マップアプリで確認する\\n \")])])])]),_vm._v(\" \"),_c('h2',{staticClass:\"contents-title font-weight-bold container mt-3\"},[_vm._v(\"STEP\"+_vm._s(_vm.reservationStep)+\"-2\")]),_vm._v(\" \"),_c('div',{staticClass:\"contents-box my-2\"},[_c('div',{staticClass:\"container py-3\"},[_c('h3',{staticClass:\"h5 font-weight-bold\"},[_vm._v(\"到着したらチャットより、到着した旨をお送りください。\")]),_vm._v(\" \"),_vm._m(0),_vm._v(\" \"),_c('div',{staticClass:\"text-center mb-1\"},[_c('a',{staticClass:\"btn btn-outline-secondary rounded-pill px-5 py-2\",attrs:{\"href\":\"\"},on:{\"click\":function($event){$event.preventDefault();return _vm.onChatOpenClicked()}}},[_vm._v(\"チャットを開く\")])])])])],1),_vm._v(\" \"),_c('navi-footer',{on:{\"goToNextStep\":_vm.onNextStepSelected}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"text-center mb-3\"},[_c('img',{attrs:{\"src\":require(\"navi/phone_chat.png\"),\"width\":\"160\",\"alt\":\"chat\"}})])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MoveToProperty.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MoveToProperty.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MoveToProperty.vue?vue&type=template&id=4003d320&scoped=true&\"\nimport script from \"./MoveToProperty.vue?vue&type=script&lang=js&\"\nexport * from \"./MoveToProperty.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4003d320\",\n null\n \n)\n\nexport default component.exports","module.exports = __webpack_public_path__ + \"media/character/character06-063b3ffc.png\";","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nmodule.exports =\n/******/\nfunction (modules) {\n // webpackBootstrap\n\n /******/\n // The module cache\n\n /******/\n var installedModules = {};\n /******/\n\n /******/\n // The require function\n\n /******/\n\n function __webpack_require__(moduleId) {\n /******/\n\n /******/\n // Check if module is in cache\n\n /******/\n if (installedModules[moduleId]) {\n /******/\n return installedModules[moduleId].exports;\n /******/\n }\n /******/\n // Create a new module (and put it into the cache)\n\n /******/\n\n\n var module = installedModules[moduleId] = {\n /******/\n i: moduleId,\n\n /******/\n l: false,\n\n /******/\n exports: {}\n /******/\n\n };\n /******/\n\n /******/\n // Execute the module function\n\n /******/\n\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n /******/\n\n /******/\n // Flag the module as loaded\n\n /******/\n\n module.l = true;\n /******/\n\n /******/\n // Return the exports of the module\n\n /******/\n\n return module.exports;\n /******/\n }\n /******/\n\n /******/\n\n /******/\n // expose the modules object (__webpack_modules__)\n\n /******/\n\n\n __webpack_require__.m = modules;\n /******/\n\n /******/\n // expose the module cache\n\n /******/\n\n __webpack_require__.c = installedModules;\n /******/\n\n /******/\n // define getter function for harmony exports\n\n /******/\n\n __webpack_require__.d = function (exports, name, getter) {\n /******/\n if (!__webpack_require__.o(exports, name)) {\n /******/\n Object.defineProperty(exports, name, {\n enumerable: true,\n get: getter\n });\n /******/\n }\n /******/\n\n };\n /******/\n\n /******/\n // define __esModule on exports\n\n /******/\n\n\n __webpack_require__.r = function (exports) {\n /******/\n if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n /******/\n Object.defineProperty(exports, Symbol.toStringTag, {\n value: 'Module'\n });\n /******/\n }\n /******/\n\n\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n /******/\n };\n /******/\n\n /******/\n // create a fake namespace object\n\n /******/\n // mode & 1: value is a module id, require it\n\n /******/\n // mode & 2: merge all properties of value into the ns\n\n /******/\n // mode & 4: return value when already ns object\n\n /******/\n // mode & 8|1: behave like require\n\n /******/\n\n\n __webpack_require__.t = function (value, mode) {\n /******/\n if (mode & 1) value = __webpack_require__(value);\n /******/\n\n if (mode & 8) return value;\n /******/\n\n if (mode & 4 && _typeof(value) === 'object' && value && value.__esModule) return value;\n /******/\n\n var ns = Object.create(null);\n /******/\n\n __webpack_require__.r(ns);\n /******/\n\n\n Object.defineProperty(ns, 'default', {\n enumerable: true,\n value: value\n });\n /******/\n\n if (mode & 2 && typeof value != 'string') for (var key in value) {\n __webpack_require__.d(ns, key, function (key) {\n return value[key];\n }.bind(null, key));\n }\n /******/\n\n return ns;\n /******/\n };\n /******/\n\n /******/\n // getDefaultExport function for compatibility with non-harmony modules\n\n /******/\n\n\n __webpack_require__.n = function (module) {\n /******/\n var getter = module && module.__esModule ?\n /******/\n function getDefault() {\n return module['default'];\n } :\n /******/\n function getModuleExports() {\n return module;\n };\n /******/\n\n __webpack_require__.d(getter, 'a', getter);\n /******/\n\n\n return getter;\n /******/\n };\n /******/\n\n /******/\n // Object.prototype.hasOwnProperty.call\n\n /******/\n\n\n __webpack_require__.o = function (object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n };\n /******/\n\n /******/\n // __webpack_public_path__\n\n /******/\n\n\n __webpack_require__.p = \"\";\n /******/\n\n /******/\n\n /******/\n // Load entry module and return exports\n\n /******/\n\n return __webpack_require__(__webpack_require__.s = \"fb15\");\n /******/\n}\n/************************************************************************/\n\n/******/\n({\n /***/\n \"06cf\":\n /***/\n function cf(module, exports, __webpack_require__) {\n var DESCRIPTORS = __webpack_require__(\"83ab\");\n\n var propertyIsEnumerableModule = __webpack_require__(\"d1e7\");\n\n var createPropertyDescriptor = __webpack_require__(\"5c6c\");\n\n var toIndexedObject = __webpack_require__(\"fc6a\");\n\n var toPrimitive = __webpack_require__(\"c04e\");\n\n var has = __webpack_require__(\"5135\");\n\n var IE8_DOM_DEFINE = __webpack_require__(\"0cfb\");\n\n var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; // `Object.getOwnPropertyDescriptor` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\n\n exports.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) {\n /* empty */\n }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n };\n /***/\n },\n\n /***/\n \"0cfb\":\n /***/\n function cfb(module, exports, __webpack_require__) {\n var DESCRIPTORS = __webpack_require__(\"83ab\");\n\n var fails = __webpack_require__(\"d039\");\n\n var createElement = __webpack_require__(\"cc12\"); // Thank's IE8 for his funny defineProperty\n\n\n module.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function get() {\n return 7;\n }\n }).a != 7;\n });\n /***/\n },\n\n /***/\n \"0ec0\":\n /***/\n function ec0(module, exports, __webpack_require__) {// extracted by mini-css-extract-plugin\n\n /***/\n },\n\n /***/\n \"1be4\":\n /***/\n function be4(module, exports, __webpack_require__) {\n var getBuiltIn = __webpack_require__(\"d066\");\n\n module.exports = getBuiltIn('document', 'documentElement');\n /***/\n },\n\n /***/\n \"1d80\":\n /***/\n function d80(module, exports) {\n // `RequireObjectCoercible` abstract operation\n // https://tc39.github.io/ecma262/#sec-requireobjectcoercible\n module.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n };\n /***/\n\n },\n\n /***/\n \"23cb\":\n /***/\n function cb(module, exports, __webpack_require__) {\n var toInteger = __webpack_require__(\"a691\");\n\n var max = Math.max;\n var min = Math.min; // 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).\n\n module.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n };\n /***/\n\n },\n\n /***/\n \"241c\":\n /***/\n function c(module, exports, __webpack_require__) {\n var internalObjectKeys = __webpack_require__(\"ca84\");\n\n var enumBugKeys = __webpack_require__(\"7839\");\n\n var hiddenKeys = enumBugKeys.concat('length', 'prototype'); // `Object.getOwnPropertyNames` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n\n exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n };\n /***/\n\n },\n\n /***/\n \"37e8\":\n /***/\n function e8(module, exports, __webpack_require__) {\n var DESCRIPTORS = __webpack_require__(\"83ab\");\n\n var definePropertyModule = __webpack_require__(\"9bf2\");\n\n var anObject = __webpack_require__(\"825a\");\n\n var objectKeys = __webpack_require__(\"df75\"); // `Object.defineProperties` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperties\n\n\n module.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\n while (length > index) {\n definePropertyModule.f(O, key = keys[index++], Properties[key]);\n }\n\n return O;\n };\n /***/\n },\n\n /***/\n \"3bbe\":\n /***/\n function bbe(module, exports, __webpack_require__) {\n var isObject = __webpack_require__(\"861d\");\n\n module.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n }\n\n return it;\n };\n /***/\n\n },\n\n /***/\n \"428f\":\n /***/\n function f(module, exports, __webpack_require__) {\n var global = __webpack_require__(\"da84\");\n\n module.exports = global;\n /***/\n },\n\n /***/\n \"44ad\":\n /***/\n function ad(module, exports, __webpack_require__) {\n var fails = __webpack_require__(\"d039\");\n\n var classof = __webpack_require__(\"c6b6\");\n\n var split = ''.split; // fallback for non-array-like ES3 and non-enumerable old V8 strings\n\n module.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 /***/\n },\n\n /***/\n \"4d64\":\n /***/\n function d64(module, exports, __webpack_require__) {\n var toIndexedObject = __webpack_require__(\"fc6a\");\n\n var toLength = __webpack_require__(\"50c4\");\n\n var toAbsoluteIndex = __webpack_require__(\"23cb\"); // `Array.prototype.{ indexOf, includes }` methods implementation\n\n\n var createMethod = function createMethod(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; // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++]; // eslint-disable-next-line no-self-compare\n\n if (value != value) return true; // 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 }\n return !IS_INCLUDES && -1;\n };\n };\n\n module.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 /***/\n },\n\n /***/\n \"50c4\":\n /***/\n function c4(module, exports, __webpack_require__) {\n var toInteger = __webpack_require__(\"a691\");\n\n var min = Math.min; // `ToLength` abstract operation\n // https://tc39.github.io/ecma262/#sec-tolength\n\n module.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n };\n /***/\n\n },\n\n /***/\n \"5135\":\n /***/\n function _(module, exports) {\n var hasOwnProperty = {}.hasOwnProperty;\n\n module.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n };\n /***/\n\n },\n\n /***/\n \"5692\":\n /***/\n function _(module, exports, __webpack_require__) {\n var IS_PURE = __webpack_require__(\"c430\");\n\n var store = __webpack_require__(\"c6cd\");\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 /***/\n },\n\n /***/\n \"5899\":\n /***/\n function _(module, exports) {\n // a string of all valid unicode whitespaces\n // eslint-disable-next-line max-len\n module.exports = \"\\t\\n\\x0B\\f\\r \\xA0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF\";\n /***/\n },\n\n /***/\n \"58a8\":\n /***/\n function a8(module, exports, __webpack_require__) {\n var requireObjectCoercible = __webpack_require__(\"1d80\");\n\n var whitespaces = __webpack_require__(\"5899\");\n\n var whitespace = '[' + whitespaces + ']';\n var ltrim = RegExp('^' + whitespace + whitespace + '*');\n var rtrim = RegExp(whitespace + whitespace + '*$'); // `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\n\n var createMethod = function createMethod(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\n module.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 /***/\n },\n\n /***/\n \"5c6c\":\n /***/\n function c6c(module, exports) {\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 /***/\n\n },\n\n /***/\n \"623a\":\n /***/\n function a(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n /* harmony import */\n\n var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Lightbox_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"fe1d\");\n /* harmony import */\n\n\n var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Lightbox_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Lightbox_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__);\n /* unused harmony reexport * */\n\n /* unused harmony default export */\n\n\n var _unused_webpack_default_export = _node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Lightbox_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a;\n /***/\n },\n\n /***/\n \"69f3\":\n /***/\n function f3(module, exports, __webpack_require__) {\n var NATIVE_WEAK_MAP = __webpack_require__(\"7f9a\");\n\n var global = __webpack_require__(\"da84\");\n\n var isObject = __webpack_require__(\"861d\");\n\n var createNonEnumerableProperty = __webpack_require__(\"9112\");\n\n var objectHas = __webpack_require__(\"5135\");\n\n var sharedKey = __webpack_require__(\"f772\");\n\n var hiddenKeys = __webpack_require__(\"d012\");\n\n var WeakMap = global.WeakMap;\n var set, get, has;\n\n var enforce = function enforce(it) {\n return has(it) ? get(it) : set(it, {});\n };\n\n var getterFor = function getterFor(TYPE) {\n return function (it) {\n var state;\n\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n }\n\n return state;\n };\n };\n\n if (NATIVE_WEAK_MAP) {\n var store = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n\n set = function set(it, metadata) {\n wmset.call(store, it, metadata);\n return metadata;\n };\n\n get = function get(it) {\n return wmget.call(store, it) || {};\n };\n\n has = function has(it) {\n return wmhas.call(store, it);\n };\n } else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n\n set = function set(it, metadata) {\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n\n get = function get(it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n\n has = function has(it) {\n return objectHas(it, STATE);\n };\n }\n\n module.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n };\n /***/\n },\n\n /***/\n \"6eeb\":\n /***/\n function eeb(module, exports, __webpack_require__) {\n var global = __webpack_require__(\"da84\");\n\n var createNonEnumerableProperty = __webpack_require__(\"9112\");\n\n var has = __webpack_require__(\"5135\");\n\n var setGlobal = __webpack_require__(\"ce4e\");\n\n var inspectSource = __webpack_require__(\"8925\");\n\n var InternalStateModule = __webpack_require__(\"69f3\");\n\n var getInternalState = InternalStateModule.get;\n var enforceInternalState = InternalStateModule.enforce;\n var TEMPLATE = String(String).split('String');\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\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\n if (O === global) {\n if (simple) O[key] = value;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\n if (simple) O[key] = value;else createNonEnumerableProperty(O, key, value); // 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 /***/\n },\n\n /***/\n \"7156\":\n /***/\n function _(module, exports, __webpack_require__) {\n var isObject = __webpack_require__(\"861d\");\n\n var setPrototypeOf = __webpack_require__(\"d2bb\"); // makes subclassing work correct for wrapped built-ins\n\n\n module.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if ( // it can work only with native `setPrototypeOf`\n setPrototypeOf && // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' && NewTarget !== Wrapper && isObject(NewTargetPrototype = NewTarget.prototype) && NewTargetPrototype !== Wrapper.prototype) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n };\n /***/\n\n },\n\n /***/\n \"7839\":\n /***/\n function _(module, exports) {\n // IE8- don't enum bug keys\n module.exports = ['constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf'];\n /***/\n },\n\n /***/\n \"7c73\":\n /***/\n function c73(module, exports, __webpack_require__) {\n var anObject = __webpack_require__(\"825a\");\n\n var defineProperties = __webpack_require__(\"37e8\");\n\n var enumBugKeys = __webpack_require__(\"7839\");\n\n var hiddenKeys = __webpack_require__(\"d012\");\n\n var html = __webpack_require__(\"1be4\");\n\n var documentCreateElement = __webpack_require__(\"cc12\");\n\n var sharedKey = __webpack_require__(\"f772\");\n\n var GT = '>';\n var LT = '<';\n var PROTOTYPE = 'prototype';\n var SCRIPT = 'script';\n var IE_PROTO = sharedKey('IE_PROTO');\n\n var EmptyConstructor = function EmptyConstructor() {\n /* empty */\n };\n\n var scriptTag = function scriptTag(content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n }; // Create object with fake `null` prototype: use ActiveX Object with cleared prototype\n\n\n var NullProtoObjectViaActiveX = function NullProtoObjectViaActiveX(activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n\n return temp;\n }; // Create object with fake `null` prototype: use iframe Object with cleared prototype\n\n\n var NullProtoObjectViaIFrame = function NullProtoObjectViaIFrame() {\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); // https://github.com/zloirock/core-js/issues/475\n\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 }; // 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\n\n\n var activeXDocument;\n\n var _NullProtoObject = function NullProtoObject() {\n try {\n /* global ActiveXObject */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) {\n /* ignore */\n }\n\n _NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n\n while (length--) {\n delete _NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n }\n\n return _NullProtoObject();\n };\n\n hiddenKeys[IE_PROTO] = true; // `Object.create` method\n // https://tc39.github.io/ecma262/#sec-object.create\n\n module.exports = Object.create || function create(O, Properties) {\n var result;\n\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null; // add \"__proto__\" for Object.getPrototypeOf polyfill\n\n result[IE_PROTO] = O;\n } else result = _NullProtoObject();\n\n return Properties === undefined ? result : defineProperties(result, Properties);\n };\n /***/\n\n },\n\n /***/\n \"7f9a\":\n /***/\n function f9a(module, exports, __webpack_require__) {\n var global = __webpack_require__(\"da84\");\n\n var inspectSource = __webpack_require__(\"8925\");\n\n var WeakMap = global.WeakMap;\n module.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n /***/\n },\n\n /***/\n \"825a\":\n /***/\n function a(module, exports, __webpack_require__) {\n var isObject = __webpack_require__(\"861d\");\n\n module.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n }\n\n return it;\n };\n /***/\n\n },\n\n /***/\n \"83ab\":\n /***/\n function ab(module, exports, __webpack_require__) {\n var fails = __webpack_require__(\"d039\"); // Thank's IE8 for his funny defineProperty\n\n\n module.exports = !fails(function () {\n return Object.defineProperty({}, 1, {\n get: function get() {\n return 7;\n }\n })[1] != 7;\n });\n /***/\n },\n\n /***/\n \"861d\":\n /***/\n function d(module, exports) {\n module.exports = function (it) {\n return _typeof(it) === 'object' ? it !== null : typeof it === 'function';\n };\n /***/\n\n },\n\n /***/\n \"8875\":\n /***/\n function _(module, exports, __webpack_require__) {\n var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // addapted from the document.currentScript polyfill by Adam Miller\n // MIT license\n // source: https://github.com/amiller-gh/currentScript-polyfill\n // added support for Firefox https://bugzilla.mozilla.org/show_bug.cgi?id=1620505\n\n\n (function (root, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = factory, __WEBPACK_AMD_DEFINE_RESULT__ = typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? __WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__) : __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else {}\n })(typeof self !== 'undefined' ? self : this, function () {\n function getCurrentScript() {\n var descriptor = Object.getOwnPropertyDescriptor(document, 'currentScript'); // for chrome\n\n if (!descriptor && 'currentScript' in document && document.currentScript) {\n return document.currentScript;\n } // for other browsers with native support for currentScript\n\n\n if (descriptor && descriptor.get !== getCurrentScript && document.currentScript) {\n return document.currentScript;\n } // IE 8-10 support script readyState\n // IE 11+ & Firefox support stack trace\n\n\n try {\n throw new Error();\n } catch (err) {\n // Find the second match for the \"at\" string to get file src url from stack.\n var ieStackRegExp = /.*at [^(]*\\((.*):(.+):(.+)\\)$/ig,\n ffStackRegExp = /@([^@]*):(\\d+):(\\d+)\\s*$/ig,\n stackDetails = ieStackRegExp.exec(err.stack) || ffStackRegExp.exec(err.stack),\n scriptLocation = stackDetails && stackDetails[1] || false,\n line = stackDetails && stackDetails[2] || false,\n currentLocation = document.location.href.replace(document.location.hash, ''),\n pageSource,\n inlineScriptSourceRegExp,\n inlineScriptSource,\n scripts = document.getElementsByTagName('script'); // Live NodeList collection\n\n if (scriptLocation === currentLocation) {\n pageSource = document.documentElement.outerHTML;\n inlineScriptSourceRegExp = new RegExp('(?:[^\\\\n]+?\\\\n){0,' + (line - 2) + '}[^<]*\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n }\n\n if (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n attr = _ref2[0],\n key = _ref2[1];\n\n var val = coerce(getAttrConfig(attr));\n\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n }\n\n var _default = {\n familyPrefix: DEFAULT_FAMILY_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n };\n\n var _config = _objectSpread({}, _default, initial);\n\n if (!_config.autoReplaceSvg) _config.observeMutations = false;\n\n var config = _objectSpread({}, _config);\n\n WINDOW.FontAwesomeConfig = config;\n var w = WINDOW || {};\n if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\n if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\n if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\n if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\n var namespace = w[NAMESPACE_IDENTIFIER];\n var functions = [];\n\n var listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n };\n\n var loaded = false;\n\n if (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n }\n\n function domready(fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n }\n\n var PENDING = 'pending';\n var SETTLED = 'settled';\n var FULFILLED = 'fulfilled';\n var REJECTED = 'rejected';\n\n var NOOP = function NOOP() {};\n\n var isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function';\n var asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate;\n var asyncQueue = [];\n var asyncTimer;\n\n function asyncFlush() {\n // run promise callbacks\n for (var i = 0; i < asyncQueue.length; i++) {\n asyncQueue[i][0](asyncQueue[i][1]);\n } // reset async asyncQueue\n\n\n asyncQueue = [];\n asyncTimer = false;\n }\n\n function asyncCall(callback, arg) {\n asyncQueue.push([callback, arg]);\n\n if (!asyncTimer) {\n asyncTimer = true;\n asyncSetTimer(asyncFlush, 0);\n }\n }\n\n function invokeResolver(resolver, promise) {\n function resolvePromise(value) {\n resolve(promise, value);\n }\n\n function rejectPromise(reason) {\n reject(promise, reason);\n }\n\n try {\n resolver(resolvePromise, rejectPromise);\n } catch (e) {\n rejectPromise(e);\n }\n }\n\n function invokeCallback(subscriber) {\n var owner = subscriber.owner;\n var settled = owner._state;\n var value = owner._data;\n var callback = subscriber[settled];\n var promise = subscriber.then;\n\n if (typeof callback === 'function') {\n settled = FULFILLED;\n\n try {\n value = callback(value);\n } catch (e) {\n reject(promise, e);\n }\n }\n\n if (!handleThenable(promise, value)) {\n if (settled === FULFILLED) {\n resolve(promise, value);\n }\n\n if (settled === REJECTED) {\n reject(promise, value);\n }\n }\n }\n\n function handleThenable(promise, value) {\n var resolved;\n\n try {\n if (promise === value) {\n throw new TypeError('A promises callback cannot return that same promise.');\n }\n\n if (value && (typeof value === 'function' || _typeof(value) === 'object')) {\n // then should be retrieved only once\n var then = value.then;\n\n if (typeof then === 'function') {\n then.call(value, function (val) {\n if (!resolved) {\n resolved = true;\n\n if (value === val) {\n fulfill(promise, val);\n } else {\n resolve(promise, val);\n }\n }\n }, function (reason) {\n if (!resolved) {\n resolved = true;\n reject(promise, reason);\n }\n });\n return true;\n }\n }\n } catch (e) {\n if (!resolved) {\n reject(promise, e);\n }\n\n return true;\n }\n\n return false;\n }\n\n function resolve(promise, value) {\n if (promise === value || !handleThenable(promise, value)) {\n fulfill(promise, value);\n }\n }\n\n function fulfill(promise, value) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = value;\n asyncCall(publishFulfillment, promise);\n }\n }\n\n function reject(promise, reason) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = reason;\n asyncCall(publishRejection, promise);\n }\n }\n\n function publish(promise) {\n promise._then = promise._then.forEach(invokeCallback);\n }\n\n function publishFulfillment(promise) {\n promise._state = FULFILLED;\n publish(promise);\n }\n\n function publishRejection(promise) {\n promise._state = REJECTED;\n publish(promise);\n\n if (!promise._handled && isNode) {\n global.process.emit('unhandledRejection', promise._data, promise);\n }\n }\n\n function notifyRejectionHandled(promise) {\n global.process.emit('rejectionHandled', promise);\n }\n /**\n * @class\n */\n\n\n function P(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('Promise resolver ' + resolver + ' is not a function');\n }\n\n if (this instanceof P === false) {\n throw new TypeError('Failed to construct \\'Promise\\': Please use the \\'new\\' operator, this object constructor cannot be called as a function.');\n }\n\n this._then = [];\n invokeResolver(resolver, this);\n }\n\n P.prototype = {\n constructor: P,\n _state: PENDING,\n _then: null,\n _data: undefined,\n _handled: false,\n then: function then(onFulfillment, onRejection) {\n var subscriber = {\n owner: this,\n then: new this.constructor(NOOP),\n fulfilled: onFulfillment,\n rejected: onRejection\n };\n\n if ((onRejection || onFulfillment) && !this._handled) {\n this._handled = true;\n\n if (this._state === REJECTED && isNode) {\n asyncCall(notifyRejectionHandled, this);\n }\n }\n\n if (this._state === FULFILLED || this._state === REJECTED) {\n // already resolved, call callback async\n asyncCall(invokeCallback, subscriber);\n } else {\n // subscribe\n this._then.push(subscriber);\n }\n\n return subscriber.then;\n },\n catch: function _catch(onRejection) {\n return this.then(null, onRejection);\n }\n };\n\n P.all = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.all().');\n }\n\n return new P(function (resolve, reject) {\n var results = [];\n var remaining = 0;\n\n function resolver(index) {\n remaining++;\n return function (value) {\n results[index] = value;\n\n if (! --remaining) {\n resolve(results);\n }\n };\n }\n\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolver(i), reject);\n } else {\n results[i] = promise;\n }\n }\n\n if (!remaining) {\n resolve(results);\n }\n });\n };\n\n P.race = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.race().');\n }\n\n return new P(function (resolve, reject) {\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolve, reject);\n } else {\n resolve(promise);\n }\n }\n });\n };\n\n P.resolve = function (value) {\n if (value && _typeof(value) === 'object' && value.constructor === P) {\n return value;\n }\n\n return new P(function (resolve) {\n resolve(value);\n });\n };\n\n P.reject = function (reason) {\n return new P(function (resolve, reject) {\n reject(reason);\n });\n };\n\n var picked = typeof Promise === 'function' ? Promise : P;\n var d = UNITS_IN_GRID;\n var meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n };\n\n function isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n }\n\n function bunker(fn) {\n try {\n fn();\n } catch (e) {\n if (!PRODUCTION) {\n throw e;\n }\n }\n }\n\n function insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n }\n\n var idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n\n function nextUniqueId() {\n var size = 12;\n var id = '';\n\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n\n return id;\n }\n\n function toArray(obj) {\n var array = [];\n\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n }\n\n function classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n return i;\n });\n }\n }\n\n function getIconName(familyPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n\n if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n }\n\n function htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(//g, '>');\n }\n\n function joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n }\n\n function joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName], \";\");\n }, '');\n }\n\n function transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n }\n\n function transformForSvg(_ref) {\n var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n }\n\n function transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n var val = '';\n\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n }\n\n val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n }\n\n var ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n };\n\n function fillBlack(abstract) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n\n return abstract;\n }\n\n function deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n }\n\n function makeIconMasking(_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n explicitMaskId = _ref.maskId,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n var trans = transformForSvg({\n transform: transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n var maskRect = {\n tag: 'rect',\n attributes: _objectSpread({}, ALL_SPACE, {\n fill: 'white'\n })\n };\n var maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n var maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [fillBlack(_objectSpread({\n tag: mainPath.tag,\n attributes: _objectSpread({}, mainPath.attributes, trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n var maskTag = {\n tag: 'mask',\n attributes: _objectSpread({}, ALL_SPACE, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children: children,\n attributes: attributes\n };\n }\n\n function makeIconStandard(_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n transform = _ref.transform,\n styles = _ref.styles;\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n if (transformIsMeaningful(transform)) {\n var trans = transformForSvg({\n transform: transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n children.push({\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread({}, main.icon.attributes, trans.path)\n }]\n }]\n });\n } else {\n children.push(main.icon);\n }\n\n return {\n children: children,\n attributes: attributes\n };\n }\n\n function asIcon(_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread({}, styles, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n }\n\n function asSymbol(_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.familyPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread({}, attributes, {\n id: id\n }),\n children: children\n }]\n }];\n }\n\n function makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n maskId = params.maskId,\n titleId = params.titleId,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n\n var isUploadedIcon = prefix === 'fak';\n var widthClass = isUploadedIcon ? '' : \"fa-w-\".concat(Math.ceil(width / height * 16));\n var attrClass = [config.replacementClass, iconName ? \"\".concat(config.familyPrefix, \"-\").concat(iconName) : '', widthClass].filter(function (c) {\n return extra.classes.indexOf(c) === -1;\n }).filter(function (c) {\n return c !== '' || !!c;\n }).concat(extra.classes).join(' ');\n var content = {\n children: [],\n attributes: _objectSpread({}, extra.attributes, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n } : {};\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n\n var args = _objectSpread({}, content, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n maskId: maskId,\n transform: transform,\n symbol: symbol,\n styles: _objectSpread({}, uploadedIconWidthStyle, extra.styles)\n });\n\n var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args),\n children = _ref2.children,\n attributes = _ref2.attributes;\n\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n }\n\n function makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n var styles = _objectSpread({}, extra.styles);\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform: transform,\n startCentered: true,\n width: width,\n height: height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n }\n\n function makeLayersCounterAbstract(params) {\n var content = params.content,\n title = params.title,\n extra = params.extra;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n var styleString = joinStyles(extra.styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n }\n\n var noop$1 = function noop() {};\n\n var p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n };\n var preamble = \"FA \\\"5.15.4\\\"\";\n\n var begin = function begin(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return function () {\n return end(name);\n };\n };\n\n var end = function end(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n };\n\n var perf = {\n begin: begin,\n end: end\n };\n /**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\n var bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n };\n /**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\n\n var reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n };\n\n function toHex(unicode) {\n var result = '';\n\n for (var i = 0; i < unicode.length; i++) {\n var hex = unicode.charCodeAt(i).toString(16);\n result += ('000' + hex).slice(-4);\n }\n\n return result;\n }\n\n function defineIcons(prefix, icons) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _params$skipHooks = params.skipHooks,\n skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n var normalized = Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n\n return acc;\n }, {});\n\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalized);\n } else {\n namespace.styles[prefix] = _objectSpread({}, namespace.styles[prefix] || {}, normalized);\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll easy the upgrade process for our users by automatically defining\n * this as well.\n */\n\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n }\n\n var styles = namespace.styles,\n shims = namespace.shims;\n var _byUnicode = {};\n var _byLigature = {};\n var _byOldName = {};\n\n var build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n\n _byUnicode = lookup(function (acc, icon, iconName) {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n\n return acc;\n });\n _byLigature = lookup(function (acc, icon, iconName) {\n var ligatures = icon[2];\n acc[iconName] = iconName;\n ligatures.forEach(function (ligature) {\n acc[ligature] = iconName;\n });\n return acc;\n });\n var hasRegular = ('far' in styles);\n _byOldName = reduce(shims, function (acc, shim) {\n var oldName = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n acc[oldName] = {\n prefix: prefix,\n iconName: iconName\n };\n return acc;\n }, {});\n };\n\n build();\n\n function byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n }\n\n function byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n }\n\n function byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n }\n\n var styles$1 = namespace.styles;\n\n var emptyCanonicalIcon = function emptyCanonicalIcon() {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n };\n\n function getCanonicalIcon(values) {\n return values.reduce(function (acc, cls) {\n var iconName = getIconName(config.familyPrefix, cls);\n\n if (styles$1[cls]) {\n acc.prefix = cls;\n } else if (config.autoFetchSvg && Object.keys(PREFIX_TO_STYLE).indexOf(cls) > -1) {\n acc.prefix = cls;\n } else if (iconName) {\n var shim = acc.prefix === 'fa' ? byOldName(iconName) : {};\n acc.iconName = shim.iconName || iconName;\n acc.prefix = shim.prefix || acc.prefix;\n } else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) {\n acc.rest.push(cls);\n }\n\n return acc;\n }, emptyCanonicalIcon());\n }\n\n function iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n }\n\n function toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"\").concat(tag, \">\");\n }\n }\n\n var noop$2 = function noop() {};\n\n function isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n }\n\n function getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n var mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n }\n\n var mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n var abstract = mutation[1];\n var newOuterHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n\n if (node.parentNode && node.outerHTML) {\n node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? \"\") : '');\n } else if (node.parentNode) {\n var newNode = document.createElement('span');\n node.parentNode.replaceChild(newNode, node);\n newNode.outerHTML = newOuterHTML;\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n var forSvg = new RegExp(\"\".concat(config.familyPrefix, \"-.*\"));\n delete abstract[0].attributes.style;\n delete abstract[0].attributes.id;\n var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n var newInnerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.setAttribute('class', splitClasses.toNode.join(' '));\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n };\n\n function performOperationSync(op) {\n op();\n }\n\n function perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = performOperationSync;\n\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n }\n\n var disabled = false;\n\n function disableObservation() {\n disabled = true;\n }\n\n function enableObservation() {\n disabled = false;\n }\n\n var mo = null;\n\n function observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n\n if (!config.observeMutations) {\n return;\n }\n\n var treeCallback = options.treeCallback,\n nodeCallback = options.nodeCallback,\n pseudoElementsCallback = options.pseudoElementsCallback,\n _options$observeMutat = options.observeMutationsRoot,\n observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class') {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n\n if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix);\n if (iconName) mutationRecord.target.setAttribute('data-icon', iconName);\n } else {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n }\n\n function disconnect() {\n if (!mo) return;\n mo.disconnect();\n }\n\n function styleParser(node) {\n var style = node.getAttribute('style');\n var val = [];\n\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n }\n\n function classParser(node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n var val = getCanonicalIcon(classArray(node));\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.prefix && innerText.length > 1) {\n val.iconName = byLigature(val.prefix, node.innerText);\n } else if (val.prefix && innerText.length === 1) {\n val.iconName = byUnicode(val.prefix, toHex(node.innerText));\n }\n\n return val;\n }\n\n var parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n\n if (!transformString) {\n return transform;\n } else {\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n\n case 'left':\n acc.x = acc.x - rest;\n break;\n\n case 'right':\n acc.x = acc.x + rest;\n break;\n\n case 'up':\n acc.y = acc.y - rest;\n break;\n\n case 'down':\n acc.y = acc.y + rest;\n break;\n\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n }\n };\n\n function transformParser(node) {\n return parseTransformString(node.getAttribute('data-fa-transform'));\n }\n\n function symbolParser(node) {\n var symbol = node.getAttribute('data-fa-symbol');\n return symbol === null ? false : symbol === '' ? true : symbol;\n }\n\n function attributesParser(node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n\n return acc;\n }, {});\n var title = node.getAttribute('title');\n var titleId = node.getAttribute('data-fa-title-id');\n\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n\n return extraAttributes;\n }\n\n function maskParser(node) {\n var mask = node.getAttribute('data-fa-mask');\n\n if (!mask) {\n return emptyCanonicalIcon();\n } else {\n return getCanonicalIcon(mask.split(' ').map(function (i) {\n return i.trim();\n }));\n }\n }\n\n function blankMeta() {\n return {\n iconName: null,\n title: null,\n titleId: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: null,\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n }\n\n function parseMeta(node) {\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n\n var extraStyles = styleParser(node);\n var transform = transformParser(node);\n var symbol = symbolParser(node);\n var extraAttributes = attributesParser(node);\n var mask = maskParser(node);\n return {\n iconName: iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix: prefix,\n transform: transform,\n symbol: symbol,\n mask: mask,\n maskId: node.getAttribute('data-fa-mask-id'),\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n };\n }\n\n function MissingIcon(error) {\n this.name = 'MissingIcon';\n this.message = error || 'Icon unavailable';\n this.stack = new Error().stack;\n }\n\n MissingIcon.prototype = Object.create(Error.prototype);\n MissingIcon.prototype.constructor = MissingIcon;\n var FILL = {\n fill: 'currentColor'\n };\n var ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n };\n var RING = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n };\n\n var OPACITY_ANIMATE = _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'opacity'\n });\n\n var DOT = {\n tag: 'circle',\n attributes: _objectSpread({}, FILL, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;1;1;0;1;'\n })\n }]\n };\n var QUESTION = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;0;0;0;1;'\n })\n }]\n };\n var EXCLAMATION = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '0;0;1;1;0;0;'\n })\n }]\n };\n var missing = {\n tag: 'g',\n children: [RING, DOT, QUESTION, EXCLAMATION]\n };\n var styles$2 = namespace.styles;\n\n function asFoundIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n\n var _icon$slice = icon.slice(4),\n _icon$slice2 = _slicedToArray(_icon$slice, 1),\n vectorData = _icon$slice2[0];\n\n var element = null;\n\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n\n return {\n found: true,\n width: width,\n height: height,\n icon: element\n };\n }\n\n function findIcon(iconName, prefix) {\n return new picked(function (resolve, reject) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: missing\n };\n\n if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) {\n var icon = styles$2[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n\n if (iconName && prefix && !config.showMissingIcons) {\n reject(new MissingIcon(\"Icon is missing for prefix \".concat(prefix, \" with icon name \").concat(iconName)));\n } else {\n resolve(val);\n }\n });\n }\n\n var styles$3 = namespace.styles;\n\n function generateSvgReplacementMutation(node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n titleId = nodeMeta.titleId,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n maskId = nodeMeta.maskId,\n extra = nodeMeta.extra;\n return new picked(function (resolve, reject) {\n picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n main = _ref2[0],\n mask = _ref2[1];\n\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main: main,\n mask: mask\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n mask: mask,\n maskId: maskId,\n title: title,\n titleId: titleId,\n extra: extra,\n watchable: true\n })]);\n });\n });\n }\n\n function generateLayersText(node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n var width = null;\n var height = null;\n\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return picked.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })]);\n }\n\n function generateMutation(node) {\n var nodeMeta = parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return generateLayersText(node, nodeMeta);\n } else {\n return generateSvgReplacementMutation(node, nodeMeta);\n }\n }\n\n function onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return;\n var htmlClassList = DOCUMENT.documentElement.classList;\n\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3);\n var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n })).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return;\n }\n\n var candidates = [];\n\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e) {// noop\n }\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return;\n }\n\n var mark = perf.begin('onTree');\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e instanceof MissingIcon) {\n console.error(e);\n }\n }\n }\n\n return acc;\n }, []);\n return new picked(function (resolve, reject) {\n picked.all(mutations).then(function (resolvedMutations) {\n perform(resolvedMutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(function () {\n mark();\n reject();\n });\n });\n }\n\n function onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(function (mutation) {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n }\n\n function replaceForPosition(node, position) {\n var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new picked(function (resolve, reject) {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n\n var children = toArray(node.children);\n var alreadyProcessedPseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n })[0];\n var styles = WINDOW.getComputedStyle(node, position);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var fontWeight = styles.getPropertyValue('font-weight');\n var content = styles.getPropertyValue('content');\n\n if (alreadyProcessedPseudoElement && !fontFamily) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamily && content !== 'none' && content !== '') {\n var _content = styles.getPropertyValue('content');\n\n var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];\n var hexValue = toHex(_content.length === 3 ? _content.substr(1, 1) : _content);\n var iconName = byUnicode(prefix, hexValue);\n var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n\n var meta = blankMeta();\n var extra = meta.extra;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(function (main) {\n var abstract = makeInlineSvgAbstract(_objectSpread({}, meta, {\n icons: {\n main: main,\n mask: emptyCanonicalIcon()\n },\n prefix: prefix,\n iconName: iconIdentifier,\n extra: extra,\n watchable: true\n }));\n var element = DOCUMENT.createElement('svg');\n\n if (position === ':before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n\n element.outerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n }\n\n function replace(node) {\n return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]);\n }\n\n function processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n }\n\n function searchPseudoElements(root) {\n if (!IS_DOM) return;\n return new picked(function (resolve, reject) {\n var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n var end = perf.begin('searchPseudoElements');\n disableObservation();\n picked.all(operations).then(function () {\n end();\n enableObservation();\n resolve();\n }).catch(function () {\n end();\n enableObservation();\n reject();\n });\n });\n }\n\n var baseStyles = \"svg:not(:root).svg-inline--fa{overflow:visible}.svg-inline--fa{display:inline-block;font-size:inherit;height:1em;overflow:visible;vertical-align:-.125em}.svg-inline--fa.fa-lg{vertical-align:-.225em}.svg-inline--fa.fa-w-1{width:.0625em}.svg-inline--fa.fa-w-2{width:.125em}.svg-inline--fa.fa-w-3{width:.1875em}.svg-inline--fa.fa-w-4{width:.25em}.svg-inline--fa.fa-w-5{width:.3125em}.svg-inline--fa.fa-w-6{width:.375em}.svg-inline--fa.fa-w-7{width:.4375em}.svg-inline--fa.fa-w-8{width:.5em}.svg-inline--fa.fa-w-9{width:.5625em}.svg-inline--fa.fa-w-10{width:.625em}.svg-inline--fa.fa-w-11{width:.6875em}.svg-inline--fa.fa-w-12{width:.75em}.svg-inline--fa.fa-w-13{width:.8125em}.svg-inline--fa.fa-w-14{width:.875em}.svg-inline--fa.fa-w-15{width:.9375em}.svg-inline--fa.fa-w-16{width:1em}.svg-inline--fa.fa-w-17{width:1.0625em}.svg-inline--fa.fa-w-18{width:1.125em}.svg-inline--fa.fa-w-19{width:1.1875em}.svg-inline--fa.fa-w-20{width:1.25em}.svg-inline--fa.fa-pull-left{margin-right:.3em;width:auto}.svg-inline--fa.fa-pull-right{margin-left:.3em;width:auto}.svg-inline--fa.fa-border{height:1.5em}.svg-inline--fa.fa-li{width:2em}.svg-inline--fa.fa-fw{width:1.25em}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers-text{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter{background-color:#ff253a;border-radius:1em;-webkit-box-sizing:border-box;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;right:0;text-overflow:ellipsis;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-bottom-right{bottom:0;right:0;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom right;transform-origin:bottom right}.fa-layers-bottom-left{bottom:0;left:0;right:auto;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom left;transform-origin:bottom left}.fa-layers-top-right{right:0;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-top-left{left:0;right:auto;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top left;transform-origin:top left}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;position:relative;width:2.5em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.svg-inline--fa.fa-stack-1x{height:1em;width:1.25em}.svg-inline--fa.fa-stack-2x{height:2em;width:2.5em}.fa-inverse{color:#fff}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.svg-inline--fa .fa-primary{fill:var(--fa-primary-color,currentColor);opacity:1;opacity:var(--fa-primary-opacity,1)}.svg-inline--fa .fa-secondary{fill:var(--fa-secondary-color,currentColor);opacity:.4;opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-primary{opacity:.4;opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-secondary{opacity:1;opacity:var(--fa-primary-opacity,1)}.svg-inline--fa mask .fa-primary,.svg-inline--fa mask .fa-secondary{fill:#000}.fad.fa-inverse{color:#fff}\";\n\n function css() {\n var dfp = DEFAULT_FAMILY_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config.familyPrefix;\n var rc = config.replacementClass;\n var s = baseStyles;\n\n if (fp !== dfp || rc !== drc) {\n var dPatt = new RegExp(\"\\\\.\".concat(dfp, \"\\\\-\"), 'g');\n var customPropPatt = new RegExp(\"\\\\--\".concat(dfp, \"\\\\-\"), 'g');\n var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n\n return s;\n }\n\n var Library = /*#__PURE__*/function () {\n function Library() {\n _classCallCheck(this, Library);\n\n this.definitions = {};\n }\n\n _createClass(Library, [{\n key: \"add\",\n value: function add() {\n var _this = this;\n\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n var additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _objectSpread({}, _this.definitions[key] || {}, additions[key]);\n defineIcons(key, additions[key]);\n build();\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: \"_pullDefinitions\",\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n if (!additions[prefix]) additions[prefix] = {};\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n }]);\n\n return Library;\n }();\n\n function ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n _cssInserted = true;\n }\n }\n\n function apiObject(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n }\n\n function findIconDefinition(iconLookup) {\n var _iconLookup$prefix = iconLookup.prefix,\n prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix,\n iconName = iconLookup.iconName;\n if (!iconName) return;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n }\n\n function resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n var mask = params.mask;\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, _objectSpread({}, params, {\n mask: mask\n }));\n };\n }\n\n var library = new Library();\n\n var noAuto = function noAuto() {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n disconnect();\n };\n\n var _cssInserted = false;\n var dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n ensureCss();\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === void 0 ? function () {} : _params$callback;\n\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n\n return onTree(node, callback);\n } else {\n return picked.reject('Operation requires a DOM of some kind.');\n }\n },\n css: css,\n insertCss: function insertCss$$1() {\n if (!_cssInserted) {\n insertCss(css());\n _cssInserted = true;\n }\n },\n watch: function watch() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var autoReplaceSvgRoot = params.autoReplaceSvgRoot,\n observeMutationsRoot = params.observeMutationsRoot;\n\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n\n config.observeMutations = true;\n domready(function () {\n autoReplace({\n autoReplaceSvgRoot: autoReplaceSvgRoot\n });\n observe({\n treeCallback: onTree,\n nodeCallback: onNode,\n pseudoElementsCallback: searchPseudoElements,\n observeMutationsRoot: observeMutationsRoot\n });\n });\n }\n };\n var parse = {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n };\n var icon = resolveIcons(function (iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === void 0 ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === void 0 ? null : _params$mask,\n _params$maskId = params.maskId,\n maskId = _params$maskId === void 0 ? null : _params$maskId,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$titleId = params.titleId,\n titleId = _params$titleId === void 0 ? null : _params$titleId,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n if (!iconDefinition) return;\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n return apiObject(_objectSpread({\n type: 'icon'\n }, iconDefinition), function () {\n ensureCss();\n\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix: prefix,\n iconName: iconName,\n transform: _objectSpread({}, meaninglessTransform, transform),\n symbol: symbol,\n title: title,\n maskId: maskId,\n titleId: titleId,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n });\n\n var text = function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform2 = params.transform,\n transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2,\n _params$title2 = params.title,\n title = _params$title2 === void 0 ? null : _params$title2,\n _params$classes2 = params.classes,\n classes = _params$classes2 === void 0 ? [] : _params$classes2,\n _params$attributes2 = params.attributes,\n attributes = _params$attributes2 === void 0 ? {} : _params$attributes2,\n _params$styles2 = params.styles,\n styles = _params$styles2 === void 0 ? {} : _params$styles2;\n return apiObject({\n type: 'text',\n content: content\n }, function () {\n ensureCss();\n return makeLayersTextAbstract({\n content: content,\n transform: _objectSpread({}, meaninglessTransform, transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n }\n });\n });\n };\n\n var counter = function counter(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$title3 = params.title,\n title = _params$title3 === void 0 ? null : _params$title3,\n _params$classes3 = params.classes,\n classes = _params$classes3 === void 0 ? [] : _params$classes3,\n _params$attributes3 = params.attributes,\n attributes = _params$attributes3 === void 0 ? {} : _params$attributes3,\n _params$styles3 = params.styles,\n styles = _params$styles3 === void 0 ? {} : _params$styles3;\n return apiObject({\n type: 'counter',\n content: content\n }, function () {\n ensureCss();\n return makeLayersCounterAbstract({\n content: content.toString(),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n }\n });\n });\n };\n\n var layer = function layer(assembler) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$classes4 = params.classes,\n classes = _params$classes4 === void 0 ? [] : _params$classes4;\n return apiObject({\n type: 'layer'\n }, function () {\n ensureCss();\n var children = [];\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (a) {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.familyPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n },\n children: children\n }];\n });\n };\n\n var api = {\n noAuto: noAuto,\n config: config,\n dom: dom,\n library: library,\n parse: parse,\n findIconDefinition: findIconDefinition,\n icon: icon,\n text: text,\n counter: counter,\n layer: layer,\n toHtml: toHtml\n };\n\n var autoReplace = function autoReplace() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n };\n\n function bootstrap() {\n if (IS_BROWSER) {\n if (!WINDOW.FontAwesome) {\n WINDOW.FontAwesome = api;\n }\n\n domready(function () {\n autoReplace();\n observe({\n treeCallback: onTree,\n nodeCallback: onNode,\n pseudoElementsCallback: searchPseudoElements\n });\n });\n }\n\n namespace.hooks = _objectSpread({}, namespace.hooks, {\n addPack: function addPack(prefix, icons) {\n namespace.styles[prefix] = _objectSpread({}, namespace.styles[prefix] || {}, icons);\n build();\n autoReplace();\n },\n addShims: function addShims(shims) {\n var _namespace$shims;\n\n (_namespace$shims = namespace.shims).push.apply(_namespace$shims, _toConsumableArray(shims));\n\n build();\n autoReplace();\n }\n });\n }\n\n bunker(bootstrap);\n})();","var map = {\n\t\"./af\": 151,\n\t\"./af.js\": 151,\n\t\"./ar\": 152,\n\t\"./ar-dz\": 153,\n\t\"./ar-dz.js\": 153,\n\t\"./ar-kw\": 154,\n\t\"./ar-kw.js\": 154,\n\t\"./ar-ly\": 155,\n\t\"./ar-ly.js\": 155,\n\t\"./ar-ma\": 156,\n\t\"./ar-ma.js\": 156,\n\t\"./ar-sa\": 157,\n\t\"./ar-sa.js\": 157,\n\t\"./ar-tn\": 158,\n\t\"./ar-tn.js\": 158,\n\t\"./ar.js\": 152,\n\t\"./az\": 159,\n\t\"./az.js\": 159,\n\t\"./be\": 160,\n\t\"./be.js\": 160,\n\t\"./bg\": 161,\n\t\"./bg.js\": 161,\n\t\"./bm\": 162,\n\t\"./bm.js\": 162,\n\t\"./bn\": 163,\n\t\"./bn-bd\": 164,\n\t\"./bn-bd.js\": 164,\n\t\"./bn.js\": 163,\n\t\"./bo\": 165,\n\t\"./bo.js\": 165,\n\t\"./br\": 166,\n\t\"./br.js\": 166,\n\t\"./bs\": 167,\n\t\"./bs.js\": 167,\n\t\"./ca\": 168,\n\t\"./ca.js\": 168,\n\t\"./cs\": 169,\n\t\"./cs.js\": 169,\n\t\"./cv\": 170,\n\t\"./cv.js\": 170,\n\t\"./cy\": 171,\n\t\"./cy.js\": 171,\n\t\"./da\": 172,\n\t\"./da.js\": 172,\n\t\"./de\": 173,\n\t\"./de-at\": 174,\n\t\"./de-at.js\": 174,\n\t\"./de-ch\": 175,\n\t\"./de-ch.js\": 175,\n\t\"./de.js\": 173,\n\t\"./dv\": 176,\n\t\"./dv.js\": 176,\n\t\"./el\": 177,\n\t\"./el.js\": 177,\n\t\"./en-au\": 178,\n\t\"./en-au.js\": 178,\n\t\"./en-ca\": 179,\n\t\"./en-ca.js\": 179,\n\t\"./en-gb\": 180,\n\t\"./en-gb.js\": 180,\n\t\"./en-ie\": 181,\n\t\"./en-ie.js\": 181,\n\t\"./en-il\": 182,\n\t\"./en-il.js\": 182,\n\t\"./en-in\": 183,\n\t\"./en-in.js\": 183,\n\t\"./en-nz\": 184,\n\t\"./en-nz.js\": 184,\n\t\"./en-sg\": 185,\n\t\"./en-sg.js\": 185,\n\t\"./eo\": 186,\n\t\"./eo.js\": 186,\n\t\"./es\": 187,\n\t\"./es-do\": 188,\n\t\"./es-do.js\": 188,\n\t\"./es-mx\": 189,\n\t\"./es-mx.js\": 189,\n\t\"./es-us\": 190,\n\t\"./es-us.js\": 190,\n\t\"./es.js\": 187,\n\t\"./et\": 191,\n\t\"./et.js\": 191,\n\t\"./eu\": 192,\n\t\"./eu.js\": 192,\n\t\"./fa\": 193,\n\t\"./fa.js\": 193,\n\t\"./fi\": 194,\n\t\"./fi.js\": 194,\n\t\"./fil\": 195,\n\t\"./fil.js\": 195,\n\t\"./fo\": 196,\n\t\"./fo.js\": 196,\n\t\"./fr\": 197,\n\t\"./fr-ca\": 198,\n\t\"./fr-ca.js\": 198,\n\t\"./fr-ch\": 199,\n\t\"./fr-ch.js\": 199,\n\t\"./fr.js\": 197,\n\t\"./fy\": 200,\n\t\"./fy.js\": 200,\n\t\"./ga\": 201,\n\t\"./ga.js\": 201,\n\t\"./gd\": 202,\n\t\"./gd.js\": 202,\n\t\"./gl\": 203,\n\t\"./gl.js\": 203,\n\t\"./gom-deva\": 204,\n\t\"./gom-deva.js\": 204,\n\t\"./gom-latn\": 205,\n\t\"./gom-latn.js\": 205,\n\t\"./gu\": 206,\n\t\"./gu.js\": 206,\n\t\"./he\": 207,\n\t\"./he.js\": 207,\n\t\"./hi\": 208,\n\t\"./hi.js\": 208,\n\t\"./hr\": 209,\n\t\"./hr.js\": 209,\n\t\"./hu\": 210,\n\t\"./hu.js\": 210,\n\t\"./hy-am\": 211,\n\t\"./hy-am.js\": 211,\n\t\"./id\": 212,\n\t\"./id.js\": 212,\n\t\"./is\": 213,\n\t\"./is.js\": 213,\n\t\"./it\": 214,\n\t\"./it-ch\": 215,\n\t\"./it-ch.js\": 215,\n\t\"./it.js\": 214,\n\t\"./ja\": 216,\n\t\"./ja.js\": 216,\n\t\"./jv\": 217,\n\t\"./jv.js\": 217,\n\t\"./ka\": 218,\n\t\"./ka.js\": 218,\n\t\"./kk\": 219,\n\t\"./kk.js\": 219,\n\t\"./km\": 220,\n\t\"./km.js\": 220,\n\t\"./kn\": 221,\n\t\"./kn.js\": 221,\n\t\"./ko\": 222,\n\t\"./ko.js\": 222,\n\t\"./ku\": 223,\n\t\"./ku.js\": 223,\n\t\"./ky\": 224,\n\t\"./ky.js\": 224,\n\t\"./lb\": 225,\n\t\"./lb.js\": 225,\n\t\"./lo\": 226,\n\t\"./lo.js\": 226,\n\t\"./lt\": 227,\n\t\"./lt.js\": 227,\n\t\"./lv\": 228,\n\t\"./lv.js\": 228,\n\t\"./me\": 229,\n\t\"./me.js\": 229,\n\t\"./mi\": 230,\n\t\"./mi.js\": 230,\n\t\"./mk\": 231,\n\t\"./mk.js\": 231,\n\t\"./ml\": 232,\n\t\"./ml.js\": 232,\n\t\"./mn\": 233,\n\t\"./mn.js\": 233,\n\t\"./mr\": 234,\n\t\"./mr.js\": 234,\n\t\"./ms\": 235,\n\t\"./ms-my\": 236,\n\t\"./ms-my.js\": 236,\n\t\"./ms.js\": 235,\n\t\"./mt\": 237,\n\t\"./mt.js\": 237,\n\t\"./my\": 238,\n\t\"./my.js\": 238,\n\t\"./nb\": 239,\n\t\"./nb.js\": 239,\n\t\"./ne\": 240,\n\t\"./ne.js\": 240,\n\t\"./nl\": 241,\n\t\"./nl-be\": 242,\n\t\"./nl-be.js\": 242,\n\t\"./nl.js\": 241,\n\t\"./nn\": 243,\n\t\"./nn.js\": 243,\n\t\"./oc-lnc\": 244,\n\t\"./oc-lnc.js\": 244,\n\t\"./pa-in\": 245,\n\t\"./pa-in.js\": 245,\n\t\"./pl\": 246,\n\t\"./pl.js\": 246,\n\t\"./pt\": 247,\n\t\"./pt-br\": 248,\n\t\"./pt-br.js\": 248,\n\t\"./pt.js\": 247,\n\t\"./ro\": 249,\n\t\"./ro.js\": 249,\n\t\"./ru\": 250,\n\t\"./ru.js\": 250,\n\t\"./sd\": 251,\n\t\"./sd.js\": 251,\n\t\"./se\": 252,\n\t\"./se.js\": 252,\n\t\"./si\": 253,\n\t\"./si.js\": 253,\n\t\"./sk\": 254,\n\t\"./sk.js\": 254,\n\t\"./sl\": 255,\n\t\"./sl.js\": 255,\n\t\"./sq\": 256,\n\t\"./sq.js\": 256,\n\t\"./sr\": 257,\n\t\"./sr-cyrl\": 258,\n\t\"./sr-cyrl.js\": 258,\n\t\"./sr.js\": 257,\n\t\"./ss\": 259,\n\t\"./ss.js\": 259,\n\t\"./sv\": 260,\n\t\"./sv.js\": 260,\n\t\"./sw\": 261,\n\t\"./sw.js\": 261,\n\t\"./ta\": 262,\n\t\"./ta.js\": 262,\n\t\"./te\": 263,\n\t\"./te.js\": 263,\n\t\"./tet\": 264,\n\t\"./tet.js\": 264,\n\t\"./tg\": 265,\n\t\"./tg.js\": 265,\n\t\"./th\": 266,\n\t\"./th.js\": 266,\n\t\"./tk\": 267,\n\t\"./tk.js\": 267,\n\t\"./tl-ph\": 268,\n\t\"./tl-ph.js\": 268,\n\t\"./tlh\": 269,\n\t\"./tlh.js\": 269,\n\t\"./tr\": 270,\n\t\"./tr.js\": 270,\n\t\"./tzl\": 271,\n\t\"./tzl.js\": 271,\n\t\"./tzm\": 272,\n\t\"./tzm-latn\": 273,\n\t\"./tzm-latn.js\": 273,\n\t\"./tzm.js\": 272,\n\t\"./ug-cn\": 274,\n\t\"./ug-cn.js\": 274,\n\t\"./uk\": 275,\n\t\"./uk.js\": 275,\n\t\"./ur\": 276,\n\t\"./ur.js\": 276,\n\t\"./uz\": 277,\n\t\"./uz-latn\": 278,\n\t\"./uz-latn.js\": 278,\n\t\"./uz.js\": 277,\n\t\"./vi\": 279,\n\t\"./vi.js\": 279,\n\t\"./x-pseudo\": 280,\n\t\"./x-pseudo.js\": 280,\n\t\"./yo\": 281,\n\t\"./yo.js\": 281,\n\t\"./zh-cn\": 282,\n\t\"./zh-cn.js\": 282,\n\t\"./zh-hk\": 283,\n\t\"./zh-hk.js\": 283,\n\t\"./zh-mo\": 284,\n\t\"./zh-mo.js\": 284,\n\t\"./zh-tw\": 285,\n\t\"./zh-tw.js\": 285\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 455;","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/dist/cjs.js??ref--4-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--4-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TakeCollatingPhoto.vue?vue&type=style&index=0&scope=true&lang=css&\"","import React, { useState, useEffect } from \"react\";\nimport iconDeleteBin from \"../../../assets/images/icon/icon-delete-bin.svg\";\nimport iconSearch from \"../../../assets/images/icon/icon-search.svg\";\nimport axios from \"axios\";\n\nconst MySearchPage = (props) => {\n const storageName1 = \"itudemo_save_condition1\";\n const storageName2 = \"itudemo_save_condition2\";\n\n const [condition1, setCondition1] = useState(\n localStorage.getItem(storageName1)\n );\n const [condition2, setCondition2] = useState(\n localStorage.getItem(storageName2)\n );\n const [isDelete, setIsDelete] = useState(false);\n const [deleteNo, setDeleteNo] = useState(0);\n\n // 保存した検索条件から整形した文字列を格納するState\n const conditionDetail = {\n saveDay: \"\",\n cities: [],\n stations: [],\n detail: \"\",\n };\n const [shapeCondition1, setShapeCondition1] = useState(conditionDetail);\n const [shapeCondition2, setShapeCondition2] = useState(conditionDetail);\n\n const [deleteCondition, setDeleteCondition] = useState(conditionDetail);\n\n useEffect(async () => {\n try {\n // ここで保存した検索条件から文字列を整形する(API実行も含む)\n if (condition1 && condition1 !== null) {\n await shapingCondition1();\n }\n if (condition2 && condition2 !== null) {\n await shapingCondition2();\n }\n } catch (error) {\n console.log(error);\n }\n }, []);\n\n /**\n * 検索条件1の条件整形\n */\n const shapingCondition1 = async () => {\n try {\n const condition = JSON.parse(condition1);\n const ret = await requestSaveSearches(condition);\n let stations = [];\n if (ret.stations.length !== 0) {\n stations = shapeStations(ret.stations);\n }\n let cities = [];\n if (ret.cities.length !== 0) {\n cities = shapeCities(ret.cities);\n }\n let detail = \"\";\n if (condition.detail !== \"null\") {\n detail = shapeDetail(condition.detail);\n }\n\n const shapCondtions = {\n saveDay: condition1.saveDay,\n cities: cities,\n stations: stations,\n detail: detail,\n };\n setShapeCondition1(shapCondtions);\n } catch (error) {\n throw error;\n }\n };\n\n /**\n * 検索条件2の条件整形\n */\n const shapingCondition2 = async () => {\n try {\n const condition = JSON.parse(condition2);\n const ret = await requestSaveSearches(condition);\n let stations = [];\n if (ret.stations.length !== 0) {\n stations = shapeStations(ret.stations);\n }\n let cities = [];\n if (ret.cities.length !== 0) {\n cities = shapeCities(ret.cities);\n }\n let detail = \"\";\n if (condition.detail !== \"null\") {\n detail = shapeDetail(condition.detail);\n }\n const shapCondtions = {\n saveDay: condition2.saveDay,\n cities: cities,\n stations: stations,\n detail: detail,\n };\n setShapeCondition2(shapCondtions);\n } catch (error) {\n throw error;\n }\n };\n\n /**\n * 検索結果の路線・駅の整形処理\n * @param {Object} argStations\n * @returns\n */\n const shapeStations = (argStations) => {\n let stations = [];\n let line = argStations[0].station_line_name;\n let stationsStr = line + \" / \";\n for (let i = 0; i < argStations.length; i++) {\n // 路線ごとの判定\n if (line !== argStations[i].station_line_name) {\n stations.push(stationsStr.slice(0, -1));\n line = argStations[i].station_line_name;\n stationsStr = line + \" / \";\n }\n stationsStr += argStations[i].station_name + \"、\";\n }\n stations.push(stationsStr.slice(0, -1));\n return stations;\n };\n\n /**\n * 検索結果の地域の整形処理\n * @param {*} argCities\n * @returns\n */\n const shapeCities = (argCities) => {\n let cities = [];\n let prefecture = argCities[0].prefecture_name;\n let citiesStr = prefecture + \" / \";\n for (let i = 0; i < argCities.length; i++) {\n // 都道府県ごとの判定\n if (prefecture !== argCities[i].prefecture_name) {\n cities.push(citiesStr.slice(0, -1));\n prefecture = argCities[i].prefecture_name;\n citiesStr = prefecture + \" / \";\n }\n citiesStr += argCities[i].city_name + \"、\";\n }\n cities.push(citiesStr.slice(0, -1));\n return cities;\n };\n\n /**\n * 詳細条件の整形処理\n * @param {*} argDetail\n * @returns\n */\n const shapeDetail = (argDetail) => {\n let detailStr = \"\";\n const connectStr = \"、\";\n\n let detailObj = {};\n try {\n detailObj = JSON.parse(argDetail);\n } catch (error) {\n detailObj = argDetail;\n }\n\n if (detailObj.contracts_rent_gteq) {\n const contracts_rent_mins = [\n { key: 0, value: \"下限なし\" },\n { key: 10000, value: \"1万\" },\n { key: 20000, value: \"2万\" },\n { key: 30000, value: \"3万\" },\n { key: 35000, value: \"3.5万\" },\n { key: 40000, value: \"4万\" },\n { key: 45000, value: \"4.5万\" },\n { key: 50000, value: \"5万\" },\n { key: 55000, value: \"5.5万\" },\n { key: 60000, value: \"6万\" },\n { key: 65000, value: \"6.5万\" },\n { key: 70000, value: \"7万\" },\n { key: 75000, value: \"7.5万\" },\n { key: 80000, value: \"8万\" },\n { key: 85000, value: \"8.5万\" },\n { key: 90000, value: \"9万\" },\n { key: 95000, value: \"9.5万\" },\n { key: 100000, value: \"10万\" },\n { key: 105000, value: \"10.5万\" },\n { key: 110000, value: \"11万\" },\n { key: 115000, value: \"11.5万\" },\n { key: 120000, value: \"12万\" },\n { key: 125000, value: \"12.5万\" },\n { key: 130000, value: \"13万\" },\n { key: 135000, value: \"13.5万\" },\n { key: 140000, value: \"14万\" },\n { key: 145000, value: \"14.5万\" },\n { key: 150000, value: \"15万\" },\n { key: 155000, value: \"15.5万\" },\n { key: 160000, value: \"16万\" },\n { key: 165000, value: \"16.5万\" },\n { key: 170000, value: \"17万\" },\n { key: 175000, value: \"17.5万\" },\n { key: 180000, value: \"18万\" },\n { key: 185000, value: \"18.5万\" },\n { key: 190000, value: \"19万\" },\n { key: 195000, value: \"19.5万\" },\n { key: 200000, value: \"20万\" },\n { key: 210000, value: \"21万\" },\n { key: 220000, value: \"22万\" },\n { key: 230000, value: \"23万\" },\n { key: 240000, value: \"24万\" },\n { key: 250000, value: \"25万\" },\n { key: 260000, value: \"26万\" },\n { key: 270000, value: \"27万\" },\n { key: 280000, value: \"28万\" },\n { key: 290000, value: \"29万\" },\n { key: 300000, value: \"30万\" },\n { key: 350000, value: \"35万\" },\n { key: 400000, value: \"40万\" },\n { key: 500000, value: \"50万\" },\n { key: 1000000, value: \"100万\" },\n ];\n const contracts_rent_min = contracts_rent_mins.find(\n (obj) => obj.key == detailObj.contracts_rent_gteq\n );\n if (contracts_rent_min.key >= 10000) {\n detailStr +=\n (detailStr === \"\" ? \"\" : connectStr) +\n contracts_rent_min.value +\n \"円以上\";\n }\n }\n if (detailObj.contracts_rent_lteq) {\n const contracts_rent_maxs = [\n { key: 0, value: \"上限なし\" },\n { key: 10000, value: \"1万\" },\n { key: 20000, value: \"2万\" },\n { key: 30000, value: \"3万\" },\n { key: 35000, value: \"3.5万\" },\n { key: 40000, value: \"4万\" },\n { key: 45000, value: \"4.5万\" },\n { key: 50000, value: \"5万\" },\n { key: 55000, value: \"5.5万\" },\n { key: 60000, value: \"6万\" },\n { key: 65000, value: \"6.5万\" },\n { key: 70000, value: \"7万\" },\n { key: 75000, value: \"7.5万\" },\n { key: 80000, value: \"8万\" },\n { key: 85000, value: \"8.5万\" },\n { key: 90000, value: \"9万\" },\n { key: 95000, value: \"9.5万\" },\n { key: 100000, value: \"10万\" },\n { key: 105000, value: \"10.5万\" },\n { key: 110000, value: \"11万\" },\n { key: 115000, value: \"11.5万\" },\n { key: 120000, value: \"12万\" },\n { key: 125000, value: \"12.5万\" },\n { key: 130000, value: \"13万\" },\n { key: 135000, value: \"13.5万\" },\n { key: 140000, value: \"14万\" },\n { key: 145000, value: \"14.5万\" },\n { key: 150000, value: \"15万\" },\n { key: 155000, value: \"15.5万\" },\n { key: 160000, value: \"16万\" },\n { key: 165000, value: \"16.5万\" },\n { key: 170000, value: \"17万\" },\n { key: 175000, value: \"17.5万\" },\n { key: 180000, value: \"18万\" },\n { key: 185000, value: \"18.5万\" },\n { key: 190000, value: \"19万\" },\n { key: 195000, value: \"19.5万\" },\n { key: 200000, value: \"20万\" },\n { key: 210000, value: \"21万\" },\n { key: 220000, value: \"22万\" },\n { key: 230000, value: \"23万\" },\n { key: 240000, value: \"24万\" },\n { key: 250000, value: \"25万\" },\n { key: 260000, value: \"26万\" },\n { key: 270000, value: \"27万\" },\n { key: 280000, value: \"28万\" },\n { key: 290000, value: \"29万\" },\n { key: 300000, value: \"30万\" },\n { key: 350000, value: \"35万\" },\n { key: 400000, value: \"40万\" },\n { key: 500000, value: \"50万\" },\n { key: 1000000, value: \"100万\" },\n ];\n const contracts_rent_max = contracts_rent_maxs.find(\n (obj) => obj.key == detailObj.contracts_rent_lteq\n );\n if (contracts_rent_max.key >= 10000) {\n detailStr +=\n (detailStr === \"\" ? \"\" : connectStr) +\n contracts_rent_max.value +\n \"円以下\";\n }\n }\n\n //こだわり条件\n if (detailObj.features_name_in) {\n detailStr += detailObj.features_name_in.join(connectStr);\n }\n //共益費/管理費\n if (detailObj.contracts_management_fee) {\n detailStr += (detailStr === \"\" ? \"\" : connectStr) + \"共益費/管理費含む\";\n }\n //駐車場料金\n if (detailObj.have_bicycle_parking_eq) {\n detailStr += (detailStr === \"\" ? \"\" : connectStr) + \"駐車場料金含む\";\n }\n //礼金\n if (detailObj.contracts_reikin_blank) {\n detailStr += (detailStr === \"\" ? \"\" : connectStr) + \"礼金なし\";\n }\n //初期費用\n if (detailObj.initialCostPayment_blank === \"true\") {\n detailStr +=\n (detailStr === \"\" ? \"\" : connectStr) + \"初期費用カード決済可\";\n }\n //家賃カード決済\n if (detailObj.rentCostPayment_blank === \"true\") {\n detailStr += (detailStr === \"\" ? \"\" : connectStr) + \"家賃カード決済可\";\n }\n //敷金/保証金\n if (detailObj.contracts_shikikin_blank) {\n detailStr += (detailStr === \"\" ? \"\" : connectStr) + \"敷金/保証金なし\";\n }\n //駅徒歩\n if (detailObj.property_accesses_walkby_lteq) {\n const walkStr =\n detailObj.property_accesses_walkby_lteq === \"0\"\n ? \"指定なし\"\n : detailObj.property_accesses_walkby_lteq + \"分以内\";\n\n detailStr += (detailStr === \"\" ? \"\" : connectStr) + walkStr;\n }\n //構造\n if (detailObj.structure_in) {\n const sructures = [\n { key: 1, value: \"木造\" },\n { key: 4, value: \"鉄骨系\" },\n { key: 5, value: \"鉄筋系\" },\n ];\n detailObj.structure_in.map((v) => {\n const sructure = sructures.find((obj) => obj.key == v);\n detailStr += (detailStr === \"\" ? \"\" : connectStr) + sructure.value;\n });\n }\n if (detailObj.building_in) {\n const buildings = [\n { key: 1, value: \"マンション\" },\n { key: 2, value: \"アパート\" },\n { key: 3, value: \"一戸建て・その他\" },\n ];\n detailObj.building_in.map((v) => {\n const building = buildings.find((obj) => obj.key == v);\n detailStr += (detailStr === \"\" ? \"\" : connectStr) + building.value;\n });\n }\n //間取りタイプ\n if (detailObj.rooms_layout_in) {\n const floorPlans = [\n { key: 1, value: \"ワンルーム\" },\n { key: 2, value: \"1K\" },\n { key: 3, value: \"1DK\" },\n { key: 13, value: \"1LDK\" },\n { key: 4, value: \"2K\" },\n { key: 5, value: \"2DK\" },\n { key: 6, value: \"2LDK\" },\n { key: 7, value: \"3K\" },\n { key: 8, value: \"3DK\" },\n { key: 9, value: \"3LDK\" },\n { key: 10, value: \"4K\" },\n { key: 11, value: \"4DK\" },\n { key: 12, value: \"4LDK以上\" },\n ];\n detailObj.rooms_layout_in.map((v) => {\n const floorPlan = floorPlans.find((obj) => obj.key == v);\n detailStr += (detailStr === \"\" ? \"\" : connectStr) + floorPlan.value;\n });\n }\n return detailStr;\n };\n\n /**\n * 保存されている検索条件から路線・駅、地域名を逆引き検索する処理\n * @param {*} condition\n * @returns\n */\n const requestSaveSearches = async (condition) => {\n try {\n if (!condition) return;\n const jsonObj = condition;\n let citys = \"city_ids=\";\n if (jsonObj.city_ids && jsonObj.city_ids !== \"null\") {\n citys += jsonObj.city_ids;\n }\n let stations = \"station_ids=\";\n if (jsonObj.station_master && jsonObj.station_master !== \"null\") {\n for (let i = 0; i < jsonObj.station_master.length; i++) {\n stations += jsonObj.station_master[i].station.join(\",\");\n }\n }\n\n const getSearchesURL = \"/api/portal/save_searches?\";\n const ret = await axios.get(getSearchesURL + citys + \"&\" + stations);\n return ret.data;\n } catch (error) {\n throw error;\n }\n };\n\n /**\n * 削除確認表示処理\n * @param {*} no\n */\n const deleteStep = (no) => {\n setDeleteNo(no);\n setIsDelete(true);\n if (no === 1) {\n setDeleteCondition(shapeCondition1);\n } else {\n setDeleteCondition(shapeCondition2);\n }\n };\n\n /**\n * localStorageから該当データを削除する処理\n */\n const deleteLocalStorage = () => {\n if (deleteNo === 1) {\n localStorage.removeItem(storageName1);\n setCondition1(null);\n if (condition2) {\n //検索条件2があれば検索条件1に昇格\n localStorage.setItem(storageName1, condition2);\n localStorage.removeItem(storageName2);\n setCondition1(condition2);\n setShapeCondition1(shapeCondition2);\n setShapeCondition2(null);\n setCondition2(null);\n }\n setIsDelete(false);\n } else if (deleteNo === 2) {\n localStorage.removeItem(storageName2);\n setCondition2(null);\n setIsDelete(false);\n } else {\n alert(\"削除できる検索条件が存在しません。\");\n }\n };\n\n return (\n <>\n \n\n \n
保存した検索条件 \n
\n {condition1 ? (\n
\n ) : (\n <>>\n )}\n {condition2 ? (\n
\n ) : (\n <>>\n )}\n {!condition1 && !condition2 ? (\n <>\n
保存された検索条件はありません。
\n >\n ) : (\n <>>\n )}\n
\n
\n\n \n
\n
\n
\n
検索条件の削除
\n
{\n setIsDelete(false);\n }}\n >\n
\n
\n
\n\n
\n 以下の検索条件を削除しますか?\n
\n
\n
\n
検索条件{deleteNo} \n
\n {deleteCondition.saveDay}\n
\n
\n
\n {deleteCondition.cities.length !== 0 ? (\n
\n
地域
\n
\n {deleteCondition.cities.map((value, index) => (\n \n {value}\n \n \n ))}\n
\n
\n ) : (\n <>>\n )}\n {deleteCondition.stations.length !== 0 ? (\n
\n
沿線・駅
\n
\n {deleteCondition.stations.map((value, index) => (\n \n {value}\n \n \n ))}\n
\n
\n ) : (\n <>>\n )}\n {deleteCondition.detail.length !== \"\" ? (\n
\n
詳細条件
\n
\n {deleteCondition.detail}\n
\n
\n ) : (\n <>>\n )}\n\n
\n
\n 削除する\n
\n
{\n setIsDelete(false);\n }}\n >\n キャンセル\n
\n
\n
\n
\n
\n
\n
\n >\n );\n};\n\nconst ConditionBlock = ({ no, shapes, conditions, deleteStep }) => {\n const search = () => {\n const jsonObj = JSON.parse(conditions);\n // session storageに詰め込む\n // 検索機能はPropertiesSearchPageにて実施\n sessionStorage.setItem(\"city_ids\", jsonObj.city_ids);\n sessionStorage.setItem(\"station_master\", JSON.stringify(jsonObj.station_master));\n jsonObj.detail && sessionStorage.setItem(\"detail\", JSON.stringify(jsonObj.detail));\n location.href = \"/searches\";\n };\n return (\n <>\n \n
\n
検索条件{no} \n
{shapes.saveDay}
\n
{\n deleteStep(no);\n }}\n >\n
\n
\n
\n
\n {shapes.cities.length !== 0 ? (\n
\n
地域
\n
\n {shapes.cities.map((value, index) => (\n \n {value}\n \n \n ))}\n
\n
\n ) : (\n <>>\n )}\n {shapes.stations.length !== 0 ? (\n
\n
沿線・駅
\n
\n {shapes.stations.map((value, index) => (\n \n {value}\n \n \n ))}\n
\n
\n ) : (\n <>>\n )}\n {shapes.detail !== \"\" ? (\n
\n
詳細条件
\n
{shapes.detail}
\n
\n ) : (\n <>>\n )}\n\n
\n
\n
\n この条件で検索する\n
\n
\n
\n
\n >\n );\n};\nexport default MySearchPage;\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","/**\n * Helper function for iterating over a collection\n *\n * @param collection\n * @param fn\n */\nfunction each(collection, fn) {\n var i = 0,\n length = collection.length,\n cont;\n\n for (i; i < length; i++) {\n cont = fn(collection[i], i);\n\n if (cont === false) {\n break; //allow early exit\n }\n }\n}\n/**\n * Helper function for determining whether target object is an array\n *\n * @param target the object under test\n * @return {Boolean} true if array, false otherwise\n */\n\n\nfunction isArray(target) {\n return Object.prototype.toString.apply(target) === '[object Array]';\n}\n/**\n * Helper function for determining whether target object is a function\n *\n * @param target the object under test\n * @return {Boolean} true if function, false otherwise\n */\n\n\nfunction isFunction(target) {\n return typeof target === 'function';\n}\n\nmodule.exports = {\n isFunction: isFunction,\n isArray: isArray,\n each: each\n};","import React from \"react\";\nimport Reservation_modal from \"./Reservation_modal\";\n\nconst Reservation = (props) => {\n return (\n <>\n {props.head}
\n \n >\n );\n};\n\nexport default Reservation;\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\n\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\n\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n\n var cache = _getRequireWildcardCache(nodeInterop);\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj[\"default\"] = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nmodule.exports = _interopRequireWildcard, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function get() {\n return _utils.createSvgIcon;\n }\n});\n\nvar _utils = require(\"@material-ui/core/utils\");","import React, { Fragment, FunctionComponent, useEffect, useState } from 'react'\n\nconst createCalendar = (year, month) => {\n const first = new Date(year, month - 1, 1).getDay()\n\n const last = new Date(year, month, 0).getDate()\n\n return [0, 1, 2, 3, 4, 5].map((weekIndex) => {\n return [0, 1, 2, 3, 4, 5, 6].map((dayIndex) => {\n const day = dayIndex + 1 + weekIndex * 7\n return day - 1 < first || last < day - first ? null : day - first\n })\n })\n}\n\nconst ReservationCalender = ({day,head,props})=> {\n const [year, setYear] = useState(new Date().getFullYear())\n\n const [month, setMonth] = useState(new Date().getMonth() + 1)\n\n const calendar = createCalendar(year, month)\n\n\n const onClick = (n) => () => {\n const nextMonth = month + n\n if (12 < nextMonth) {\n setMonth(1)\n setYear(year + 1)\n } else if (nextMonth < 1) {\n setMonth(12)\n setYear(year - 1)\n } else {\n setMonth(nextMonth)\n }\n }\n\n\n // useEffect(() => {\n // fetch('/reservations/room_id.json', {method: 'GET'})\n // .then(res => res.json())\n // .then(data => {\n // console.log(data)\n // setPosts(data)\n // })\n // },[])\n\n\n\n // ステート変数 openを更新するためのsetOpen 関数を宣言します。初期値は\"false\"\nconst [isOpen, setOpen] = useState(false);\n\n// clickイベントを発火させる関数\n// 発火によりopenを\"true\"へ\nconst timeDateTrigger = (j) => {\n setOpen(!isOpen);\n console.log(j)\n}\n\n\n const yearHead = ['日','月','火','水','木','金','土',]\n\n const HourData = [\n '00:00 - 01:00',\n '01:00 - 02:00',\n '02:00 - 03:00',\n '03:00 - 04:00',\n '04:00 - 05:00',\n '05:00 - 06:00',\n '06:00 - 07:00',\n '07:00 - 08:00',\n '08:00 - 09:00',\n '09:00 - 10:00',\n '10:00 - 11:00',\n '11:00 - 12:00',\n '12:00 - 13:00',\n '13:00 - 14:00',\n '14:00 - 15:00',\n '15:00 - 16:00',\n '16:00 - 17:00',\n '17:00 - 18:00',\n '18:00 - 19:00',\n '19:00 - 20:00',\n '20:00 - 21:00',\n '21:00 - 22:00',\n '22:00 - 23:00',\n '23:00 - 24:00',\n ]\n\n\n const getBackgroundColor =(j)=> {\n if (j === 0) {\n return 'rgba(255,0,0,.1)';\n }\n if (j === 6) {\n return 'rgba(0,0,255,.1)';\n }\n return '';\n }\n\n return (\n \n {`${year}年${month}月`} \n \n {'prev'} \n {'next'} \n
\n \n \n \n {yearHead.map((head,i)=> (\n {head}
\n ))}\n \n \n \n \n {calendar.map((week, i) => (\n \n {week.map((day, j) => (\n timeDateTrigger(day)}\n className='border border-gray-200'\n style={{ 'backgroundColor': getBackgroundColor(j) }}>\n {day}
\n ))}\n \n ))}\n \n
\n \n
\n {HourData.map((head,i)=> (\n timeDateTrigger(head)}\n className='text-s text-center w-3/12 p-2 pt-3 pb-3 border border-gray-200'>\n {head}
\n ))}\n \n\n
\n \n )\n}\n\n\nexport default ReservationCalender","import React, { useEffect, useState } from \"react\";\nimport axios from \"axios\";\nimport MapContent from \"./PropertiesSearch/MapContent\";\nimport Modal from \"./PropertiesSearch/Modal\";\nimport Property from \"./PropertiesSearch/Property\";\nimport ChangeConditions from \"./PropertiesSearch/ChangeConditions\";\nimport AreaSearch from \"./top/AreaSearch\";\nimport StationSearch from \"./top/StationSearch\";\nimport DetailConditions from \"./PropertiesSearch/DetailConditions\";\nimport { RecoilRoot, useRecoilState, useRecoilValue } from \"recoil\";\nimport {\n cityState,\n isShowModal,\n propertiesState,\n} from \"./PropertiesSearch/state\";\nimport { PropertiesApiPath } from \"./PropertiesSearch/common\";\nimport iconMapPin from \"../../../assets/images/icon/icon-map-pin.svg\";\nimport iconTodo from \"../../../assets/images/icon/icon-todo.svg\";\nimport iconAuto from \"../../../assets/images/icon/icon-autorenew.svg\";\nimport iconDl from \"../../../assets/images/icon/icon-download-2.svg\";\nimport iconDlGreen from \"../../../assets/images/icon/icon-download-2-green.svg\";\nimport iconMap from \"../../../assets/images/icon/icon-map.svg\";\nimport iconArrowLeft from \"../../../assets/images/icon/icon-arrow-left-black.svg\";\nimport iconArrowRight from \"../../../assets/images/icon/icon-arrow-right-black.svg\";\nimport iconClose from \"../../../assets/images/icon/icon-close.svg\";\nimport iconSelect from \"../../../assets/images/icon/icon_unfold_more.svg\";\nimport iconTrain from \"../../../assets/images/top/icon_train_36x36.svg\";\n\nimport ReactPaginate from \"react-paginate\";\nimport { format } from \"date-fns\";\nimport {\n showAreaSearchState,\n showDetailConditionsState,\n showStationSearchState,\n} from \"./top/state\";\n\nconst PropertiesSearchPage = (props) => {\n return (\n \n \n \n );\n};\n\nconst PropertiesSearch = (props) => {\n const citiesStorageName = \"city_ids\";\n const staionsStorageName = \"station_master\";\n const detailsStorageName = \"detail\";\n\n const googleMapsApiKey = process.env.GOOGLE_MAPS_API_KEY_202210;\n const isModalShow = useRecoilValue(isShowModal);\n const [properties, setProperties] = useRecoilState(propertiesState);\n const [cities, setCities] = useRecoilState(cityState);\n const [isShowChangeConditions, setIsShowChangeConditions] = useState(false);\n const [isShowAreaSearch, setIsShowAreaSearch] =\n useRecoilState(showAreaSearchState);\n const [isShowStationSearch, setIsShowStationSearch] = useRecoilState(\n showStationSearchState\n );\n const [isShowDetailConditions, setIsShowDetailConditions] = useRecoilState(\n showDetailConditionsState\n );\n const [isShowMap, setIsShowMap] = useState(false);\n const [isSaveConditions, setIsSaveConditions] = useState(false);\n const [stationNames, setStationNames] = useState([]);\n const [detailNames, setDetailNames] = useState(\"\");\n const [saveStationCondition, setSaveStationConditions] = useState([]);\n const [saveCitiesCondition, setSaveCitiesConditions] = useState([]);\n const [selectStation, setSelectStation] = useState([]);\n const [currentPage, setCurrentPage] = useState(1);\n const [totalPage, setTotalPage] = useState(1);\n const [totalCount, setTotalCount] = useState(0);\n const [sort, setSort] = useState(0);\n useEffect(() => {\n (async () => {\n let queryStr = `page=${currentPage}`;\n\n const citiesStorage = sessionStorage.getItem(citiesStorageName);\n const stationsStorage = sessionStorage.getItem(staionsStorageName);\n const detailStorage = sessionStorage.getItem(detailsStorageName);\n // クエリパラメータ作成\n // 地域\n if (props.city_ids) {\n const joinStr = queryStr === \"\" ? \"\" : \"&\";\n queryStr +=\n joinStr +\n [...new Set(props.city_ids)]\n .map((id) => `city_master_ids[]=${id}`)\n .join(\"&\");\n } else if (citiesStorage && citiesStorage !== \"null\") {\n const city_ids = citiesStorage.split(\",\");\n const joinStr = queryStr === \"\" ? \"\" : \"&\";\n queryStr +=\n joinStr +\n [...new Set(city_ids)]\n .map((id) => `city_master_ids[]=${id}`)\n .join(\"&\");\n }\n // 駅・路線\n if (props.station_master) {\n props.station_master.forEach((obj) => {\n const joinStr = queryStr === \"\" ? \"\" : \"&\";\n queryStr += joinStr + `station_master[][line]=${obj.line}`;\n if (obj.station) {\n queryStr +=\n \"&\" +\n obj.station\n .map((v) => `station_master[][station][]=${v}`)\n .join(\"&\");\n }\n });\n } else if (stationsStorage && stationsStorage !== \"null\") {\n const station_master = JSON.parse(stationsStorage);\n station_master.forEach((obj) => {\n const joinStr = queryStr === \"\" ? \"\" : \"&\";\n queryStr += joinStr + `station_master[][line]=${obj.line}`;\n if (obj.station) {\n queryStr +=\n \"&\" +\n obj.station\n .map((v) => `station_master[][station][]=${v}`)\n .join(\"&\");\n }\n });\n }\n // 詳細\n if (props.detail) {\n Object.keys(props.detail).forEach(function (key) {\n if (Array.isArray(this[key])) {\n this[key].forEach(function (value) {\n queryStr += `&detail[${key}][]=${value}`;\n });\n } else {\n queryStr += `&detail[${key}]=${this[key]}`;\n }\n }, props.detail);\n } else if (detailStorage && detailStorage !== \"null\") {\n const detail = JSON.parse(detailStorage);\n Object.keys(detail).forEach(function (key) {\n if (Array.isArray(this[key])) {\n this[key].forEach(function (value) {\n queryStr += `&detail[${key}][]=${value}`;\n });\n } else {\n queryStr += `&detail[${key}]=${this[key]}`;\n }\n }, detail);\n }\n\n if (\n props.south_west_lat &&\n props.north_east_lat &&\n props.south_west_lon &&\n props.north_east_lon\n ) {\n queryStr += `&south_west_lat=${props.south_west_lat}&north_east_lat=${props.north_east_lat}&south_west_lon=${props.south_west_lon}&north_east_lon=${props.north_east_lon}`;\n }\n\n if (sort) {\n queryStr += `&sort=${sort}`\n }\n\n // ブラウザバック用にpropsの値をsession storageへ保存\n if (props.city_ids || props.station_master || props.detail) {\n props.city_ids && sessionStorage.setItem(\"city_ids\", props.city_ids.join());\n props.station_master && sessionStorage.setItem(\"station_master\", JSON.stringify(props.station_master));\n props.detail && sessionStorage.setItem(\"detail\", JSON.stringify(props.detail));\n }\n axios.get(PropertiesApiPath + \"?\" + queryStr).then(async res => {\n setTotalPage(res.data.total_pages);\n setTotalCount(res.data.total_count);\n setProperties(res.data.properties)\n await setConditionsName();\n })\n const arrayStation = [];\n props.station_master &&\n props.station_master.map((line) => {\n line.station.map((stationId) =>\n arrayStation.push({\n line_id: parseInt(line.line),\n id: parseInt(stationId),\n })\n );\n });\n stationsStorage && JSON.parse(stationsStorage).map((line) => {\n line.station.map((stationId) =>\n arrayStation.push({\n line_id: parseInt(line.line),\n id: parseInt(stationId),\n })\n );\n });\n setSelectStation(arrayStation);\n })();\n }, [sort, currentPage]);\n\n // useEffect(() => {\n // const body = document.querySelector(\"body\");\n // body.style.overflow = isShowMap ? \"hidden\" : \"auto\";\n // }, [isShowMap]);\n\n useEffect(() => {\n const body = document.querySelector(\"body\");\n body.style.overflow = isModalShow ? \"hidden\" : \"auto\";\n }, [isModalShow]);\n\n const setConditionsName = async () => {\n // 名称検索\n const ret = await getConditionNames();\n const spilitStr = \"\";\n const connectStr = \"、\";\n\n // 駅・路線名の表示文字列整形\n const resStations = ret.stations;\n let stations = [];\n let stations2 = [];\n if (resStations.length !== 0) {\n let line = resStations[0].station_line_name;\n let stationsStr = line + spilitStr;\n for (let i = 0; i < resStations.length; i++) {\n // 路線ごとの判定\n if (line !== resStations[i].station_line_name) {\n stations.push(stationsStr.slice(0, -1));\n line = resStations[i].station_line_name;\n stationsStr = line + spilitStr;\n }\n stationsStr += resStations[i].station_name + connectStr;\n }\n stations.push(stationsStr.slice(0, -1));\n stations2 = shapeStations(resStations);\n }\n setStationNames(stations);\n setSaveStationConditions(stations2);\n // 地域の表示文字列整形\n const resCities = ret.cities;\n let cities = [];\n let cities2 = [];\n if (resCities.length !== 0) {\n let prefecture = resCities[0].prefecture_name;\n let citiesStr = prefecture + spilitStr;\n for (let i = 0; i < resCities.length; i++) {\n // 都道府県ごとの判定\n if (prefecture !== resCities[i].prefecture_name) {\n cities.push(citiesStr.slice(0, -1));\n prefecture = resCities[i].prefecture_name;\n citiesStr = prefecture + spilitStr;\n }\n citiesStr += resCities[i].city_name + connectStr;\n }\n cities.push(citiesStr.slice(0, -1));\n cities2 = shapeCities(resCities);\n }\n setCities(cities);\n setSaveCitiesConditions(cities2);\n\n // 駅・路線と地域の検索結果が0件の場合タグから遷移と判定\n if (resStations.length === 0 && resCities.length == 0) {\n const detailStorage = JSON.parse(\n sessionStorage.getItem(detailsStorageName)\n );\n\n if (\n detailStorage &&\n detailStorage !== \"null\" &&\n detailStorage.features_name_in\n ) {\n setDetailNames(detailStorage.features_name_in);\n }\n }\n };\n\n /**\n * 検索条件の名称検索処理\n */\n const getConditionNames = async () => {\n const citiesStorage = sessionStorage.getItem(citiesStorageName);\n const stationsStorage = sessionStorage.getItem(staionsStorageName);\n if (\n (!citiesStorage || citiesStorage === \"null\") &&\n (!stationsStorage || stationsStorage === \"null\")\n ) {\n return {\n cities: [],\n stations: [],\n };\n }\n let citys = \"city_ids=\";\n if (citiesStorage && citiesStorage !== \"null\") {\n citys += citiesStorage;\n }\n let stations = \"station_ids=\";\n const stationsObj = JSON.parse(stationsStorage);\n if (stationsObj && stationsObj !== \"null\") {\n for (let i = 0; i < stationsObj.length; i++) {\n if (stationsObj[i].station) {\n stations += stationsObj[i].station.join(\",\") + \",\";\n }\n }\n }\n\n const getSearchesURL = \"/api/portal/save_searches?\";\n const ret = await axios.get(getSearchesURL + citys + \"&\" + stations);\n return ret.data;\n };\n\n const handleShowChangeConditions = (value) => {\n setIsShowChangeConditions(value);\n };\n const handleShowAreaSearch = () => {\n setIsShowChangeConditions(false);\n setIsShowAreaSearch(true);\n };\n const handleShowStationSearch = () => {\n setIsShowChangeConditions(false);\n setIsShowStationSearch(true);\n };\n\n const handleShowDetailConditions = () => {\n setIsShowChangeConditions(false);\n setIsShowDetailConditions(true);\n };\n\n const handleShowMap = () => {\n setIsShowMap(!isShowMap);\n };\n\n const showDetailSetting = () => {\n const connectStr = \"、\";\n let detailStr = \"\";\n const detailObjct = sessionStorage.getItem(detailsStorageName);\n const detailObj_arr = JSON.parse(detailObjct);\n const detailObj = props.detail || detailObj_arr;\n //こだわり条件\n if (detailObj?.features_name_in) {\n detailStr += detailObj.features_name_in.join(connectStr);\n }\n //共益費/管理費\n if (detailObj?.contracts_management_fee) {\n detailStr += (detailStr === \"\" ? \"\" : connectStr) + \"共益費/管理費含む\";\n }\n //駐車場料金\n if (detailObj?.have_bicycle_parking_eq) {\n detailStr += (detailStr === \"\" ? \"\" : connectStr) + \"駐車場料金含む\";\n }\n //礼金\n if (detailObj?.contracts_reikin_blank) {\n detailStr += (detailStr === \"\" ? \"\" : connectStr) + \"礼金なし\";\n }\n //敷金/保証金\n if (detailObj?.contracts_shikikin_blank) {\n detailStr += (detailStr === \"\" ? \"\" : connectStr) + \"敷金/保証金なし\";\n }\n //初期費用カード決済\n if (detailObj?.initialCostPayment_blank) {\n detailStr +=\n (detailStr === \"\" ? \"\" : connectStr) + \"初期費用カード決済可\";\n }\n //家賃カード決済\n if (detailObj?.rentCostPayment_blank) {\n detailStr += (detailStr === \"\" ? \"\" : connectStr) + \"家賃カード決済可\";\n }\n //駅徒歩\n if (detailObj?.property_accesses_walkby_lteq) {\n const walkStr =\n detailObj?.property_accesses_walkby_lteq === \"0\"\n ? \"指定なし\"\n : detailObj?.property_accesses_walkby_lteq + \"分以内\";\n\n detailStr += (detailStr === \"\" ? \"\" : connectStr) + walkStr;\n }\n //構造\n if (detailObj?.structure_in) {\n const sructures = [\n { key: 1, value: \"木造\" },\n { key: 4, value: \"鉄骨系\" },\n { key: 5, value: \"鉄筋系\" },\n { key: 14, value: \"ブロック、その他\" },\n ];\n detailObj?.structure_in.map((v) => {\n const sructure = sructures.find((obj) => obj.key == v);\n detailStr += (detailStr === \"\" ? \"\" : connectStr) + sructure.value;\n });\n }\n //間取りタイプ\n if (detailObj?.rooms_layout_in) {\n const floorPlans = [\n { key: 1, value: \"ワンルーム\" },\n { key: 2, value: \"1K\" },\n { key: 3, value: \"1DK\" },\n { key: 13, value: \"1LDK\" },\n { key: 4, value: \"2K\" },\n { key: 5, value: \"2DK\" },\n { key: 6, value: \"2LDK\" },\n { key: 7, value: \"3K\" },\n { key: 8, value: \"3DK\" },\n { key: 9, value: \"3LDK\" },\n { key: 10, value: \"4K\" },\n { key: 11, value: \"4DK\" },\n { key: 12, value: \"4LDK以上\" },\n ];\n detailObj?.rooms_layout_in.map((v) => {\n const floorPlan = floorPlans.find((obj) => obj.key == v);\n detailStr += (detailStr === \"\" ? \"\" : connectStr) + floorPlan.value;\n });\n }\n\n //建物種別\n if (detailObj?.building_in) {\n const buildings = [\n { key: 1, value: \"マンション\" },\n { key: 2, value: \"アパート\" },\n { key: 3, value: \"一戸建て・その他\" },\n ];\n detailObj?.building_in.map((v) => {\n const building = buildings.find((obj) => obj.key == v);\n detailStr += (detailStr === \"\" ? \"\" : connectStr) + building.value;\n });\n }\n\n //賃料下限\n if (detailObj?.contracts_rent_gteq) {\n const contracts_rent_mins = [\n { key: 0, value: \"下限なし\" },\n { key: 10000, value: \"1万\" },\n { key: 20000, value: \"2万\" },\n { key: 30000, value: \"3万\" },\n { key: 35000, value: \"3.5万\" },\n { key: 40000, value: \"4万\" },\n { key: 45000, value: \"4.5万\" },\n { key: 50000, value: \"5万\" },\n { key: 55000, value: \"5.5万\" },\n { key: 60000, value: \"6万\" },\n { key: 65000, value: \"6.5万\" },\n { key: 70000, value: \"7万\" },\n { key: 75000, value: \"7.5万\" },\n { key: 80000, value: \"8万\" },\n { key: 85000, value: \"8.5万\" },\n { key: 90000, value: \"9万\" },\n { key: 95000, value: \"9.5万\" },\n { key: 100000, value: \"10万\" },\n { key: 105000, value: \"10.5万\" },\n { key: 110000, value: \"11万\" },\n { key: 115000, value: \"11.5万\" },\n { key: 120000, value: \"12万\" },\n { key: 125000, value: \"12.5万\" },\n { key: 130000, value: \"13万\" },\n { key: 135000, value: \"13.5万\" },\n { key: 140000, value: \"14万\" },\n { key: 145000, value: \"14.5万\" },\n { key: 150000, value: \"15万\" },\n { key: 155000, value: \"15.5万\" },\n { key: 160000, value: \"16万\" },\n { key: 165000, value: \"16.5万\" },\n { key: 170000, value: \"17万\" },\n { key: 175000, value: \"17.5万\" },\n { key: 180000, value: \"18万\" },\n { key: 185000, value: \"18.5万\" },\n { key: 190000, value: \"19万\" },\n { key: 195000, value: \"19.5万\" },\n { key: 200000, value: \"20万\" },\n { key: 210000, value: \"21万\" },\n { key: 220000, value: \"22万\" },\n { key: 230000, value: \"23万\" },\n { key: 240000, value: \"24万\" },\n { key: 250000, value: \"25万\" },\n { key: 260000, value: \"26万\" },\n { key: 270000, value: \"27万\" },\n { key: 280000, value: \"28万\" },\n { key: 290000, value: \"29万\" },\n { key: 300000, value: \"30万\" },\n { key: 350000, value: \"35万\" },\n { key: 400000, value: \"40万\" },\n { key: 500000, value: \"50万\" },\n { key: 1000000, value: \"100万\" },\n ];\n const contracts_rent_min = contracts_rent_mins.find(\n (obj) => obj.key == detailObj.contracts_rent_gteq\n );\n if (contracts_rent_min.key >= 10000) {\n detailStr +=\n (detailStr === \"\" ? \"\" : connectStr) +\n contracts_rent_min.value +\n \"円以上\";\n }\n }\n\n //賃料上限\n if (detailObj?.contracts_rent_lteq) {\n const contracts_rent_maxs = [\n { key: 0, value: \"上限なし\" },\n { key: 10000, value: \"1万\" },\n { key: 20000, value: \"2万\" },\n { key: 30000, value: \"3万\" },\n { key: 35000, value: \"3.5万\" },\n { key: 40000, value: \"4万\" },\n { key: 45000, value: \"4.5万\" },\n { key: 50000, value: \"5万\" },\n { key: 55000, value: \"5.5万\" },\n { key: 60000, value: \"6万\" },\n { key: 65000, value: \"6.5万\" },\n { key: 70000, value: \"7万\" },\n { key: 75000, value: \"7.5万\" },\n { key: 80000, value: \"8万\" },\n { key: 85000, value: \"8.5万\" },\n { key: 90000, value: \"9万\" },\n { key: 95000, value: \"9.5万\" },\n { key: 100000, value: \"10万\" },\n { key: 105000, value: \"10.5万\" },\n { key: 110000, value: \"11万\" },\n { key: 115000, value: \"11.5万\" },\n { key: 120000, value: \"12万\" },\n { key: 125000, value: \"12.5万\" },\n { key: 130000, value: \"13万\" },\n { key: 135000, value: \"13.5万\" },\n { key: 140000, value: \"14万\" },\n { key: 145000, value: \"14.5万\" },\n { key: 150000, value: \"15万\" },\n { key: 155000, value: \"15.5万\" },\n { key: 160000, value: \"16万\" },\n { key: 165000, value: \"16.5万\" },\n { key: 170000, value: \"17万\" },\n { key: 175000, value: \"17.5万\" },\n { key: 180000, value: \"18万\" },\n { key: 185000, value: \"18.5万\" },\n { key: 190000, value: \"19万\" },\n { key: 195000, value: \"19.5万\" },\n { key: 200000, value: \"20万\" },\n { key: 210000, value: \"21万\" },\n { key: 220000, value: \"22万\" },\n { key: 230000, value: \"23万\" },\n { key: 240000, value: \"24万\" },\n { key: 250000, value: \"25万\" },\n { key: 260000, value: \"26万\" },\n { key: 270000, value: \"27万\" },\n { key: 280000, value: \"28万\" },\n { key: 290000, value: \"29万\" },\n { key: 300000, value: \"30万\" },\n { key: 350000, value: \"35万\" },\n { key: 400000, value: \"40万\" },\n { key: 500000, value: \"50万\" },\n { key: 1000000, value: \"100万\" },\n ];\n const contracts_rent_max = contracts_rent_maxs.find(\n (obj) => obj.key == detailObj.contracts_rent_lteq\n );\n if (contracts_rent_max.key >= 10000) {\n detailStr +=\n (detailStr === \"\" ? \"\" : connectStr) +\n contracts_rent_max.value +\n \"円以下\";\n }\n }\n\n return detailStr;\n };\n\n /**\n * 検索結果の路線・駅の整形処理\n * @param {Object} argStations\n * @returns\n */\n const shapeStations = (argStations) => {\n let stations = [];\n let line = argStations[0].station_line_name;\n let stationsStr = line + \" / \";\n for (let i = 0; i < argStations.length; i++) {\n // 路線ごとの判定\n if (line !== argStations[i].station_line_name) {\n stations.push(stationsStr.slice(0, -1));\n line = argStations[i].station_line_name;\n stationsStr = line + \" / \";\n }\n stationsStr += argStations[i].station_name + \"、\";\n }\n stations.push(stationsStr.slice(0, -1));\n return stations;\n };\n\n /**\n * 検索結果の地域の整形処理\n * @param {*} argCities\n * @returns\n */\n const shapeCities = (argCities) => {\n let cities = [];\n let prefecture = argCities[0].prefecture_name;\n let citiesStr = prefecture + \" / \";\n for (let i = 0; i < argCities.length; i++) {\n // 都道府県ごとの判定\n if (prefecture !== argCities[i].prefecture_name) {\n cities.push(citiesStr.slice(0, -1));\n prefecture = argCities[i].prefecture_name;\n citiesStr = prefecture + \" / \";\n }\n citiesStr += argCities[i].city_name + \"、\";\n }\n cities.push(citiesStr.slice(0, -1));\n return cities;\n };\n\n const saveCondtions = () => {\n const storageName1 = \"itudemo_save_condition1\";\n const storageName2 = \"itudemo_save_condition2\";\n const nowDate = new Date();\n const toDay = format(nowDate, \"yyyy/MM/dd\");\n const saveObj = {\n saveDay: toDay,\n city_ids: props.city_ids\n ? props.city_ids\n : sessionStorage.getItem(\"city_ids\"),\n station_master: props.station_master\n ? props.station_master\n : sessionStorage.getItem(\"station_master\"),\n detail: props.detail ? props.detail : sessionStorage.getItem(\"detail\"),\n };\n if (!localStorage.getItem(storageName1)) {\n localStorage.setItem(storageName1, JSON.stringify(saveObj));\n setIsSaveConditions(true);\n return;\n }\n if (!localStorage.getItem(storageName2)) {\n localStorage.setItem(storageName2, JSON.stringify(saveObj));\n setIsSaveConditions(true);\n return;\n }\n alert(\"検索条件は2件までです。\");\n };\n const handleToDate = (date) => {\n date = new Date(date);\n if (date.getMinutes() < 10) {\n date =\n date.getFullYear() +\n \"/\" +\n ((date.getMonth() % 12) + 1) +\n \"/\" +\n date.getDate() +\n \" \";\n } else {\n date =\n date.getFullYear() +\n \"/\" +\n ((date.getMonth() % 12) + 1) +\n \"/\" +\n date.getDate() +\n \" \";\n }\n\n return date;\n };\n\n return (\n <>\n {!isShowChangeConditions &&\n !isShowStationSearch &&\n !isShowAreaSearch &&\n !isShowDetailConditions &&\n !isShowMap && (\n \n \n
\n
トップ \n
> \n
\n {cities.join(\",\") || stationNames.join(\",\")}\n {cities.length === 0 && stationNames.length === 0 && \"現在地\"}\n の賃貸\n \n
\n
\n {cities.join(\",\") || stationNames.join(\",\")}\n {cities.length === 0 && stationNames.length === 0 && \"現在地\"}\n の賃貸(賃貸マンション・アパート)\n \n
\n
\n
検索条件
\n
\n
\n
\n
\n 地域\n
\n
{cities.join(\",\")}
\n
\n
\n
\n
\n 駅・路線\n
\n
\n {stationNames.join(\",\")}\n
\n
\n\n
\n
\n
\n 詳細条件\n
\n
\n {showDetailSetting()}\n
\n
\n
\n
\n
{\n handleShowChangeConditions(true);\n }}\n >\n
\n 条件変更\n
\n
\n
\n 条件保存\n
\n
\n
\n 地図表示\n
\n
\n {/*検索一覧、固定ボタン(スクロールで表示切り替え)*/}\n
\n
\n
\n 検索条件を変更\n
\n
\n
\n 条件保存\n
\n
\n
\n
\n
\n
\n {`検索結果:${totalCount}件`}\n
\n
\n
\n
setSort(e.target.value)}\n >\n おすすめ \n 新着順 \n 賃料が安い順 \n 賃料が高い順 \n 築年数が新しい順 \n 面積が広い順 \n 住所別 \n 駅から近い順 \n \n
\n
\n
\n {properties.length === 0 && (\n
物件が見つかりませんでした
\n )}\n {properties.map((property) => {\n return
;\n })}\n \n
\n \"}\n pageCount={totalPage}\n onPageChange={(e) => {\n window.scrollTo({\n top: 0,\n left: 0,\n })\n setCurrentPage(e.selected + 1)\n }}\n containerClassName={\"searchResultNation_list\"}\n pageClassName={\"searchResultNation_item\"}\n previousLinkClassName={\"searchResultNation_arrow\"}\n nextLinkClassName={\"searchResultNation_arrow\"}\n activeClassName={\"active\"}\n disabledClassName={\"disabled\"}\n breakLabel={\"...\"}\n marginPagesDisplayed={1}\n pageRangeDisplayed={2}\n />\n
\n
\n {`${\n (currentPage - 1) * 14 + properties.length\n }件 /${totalCount}件`} \n
\n
\n \n
\n
\n
\n {/*検索一覧、条件保存モーダル(条件保存時に表示)*/}\n \n
\n
\n
\n
検索条件の保存
\n
{\n setIsSaveConditions(false);\n }}\n >\n
\n
\n
\n\n
\n 以下の検索条件を保存しました\n
\n\n
\n
地域
\n
\n {saveCitiesCondition.map((value, index) => (\n \n {value}\n \n \n ))}\n
\n
\n
\n
駅・路線
\n
\n {saveStationCondition.map((value, index) => (\n \n {value}\n \n \n ))}\n
\n
\n\n
\n
詳細条件
\n
\n {showDetailSetting()} \n
\n
\n
\n
\n
\n {/* \n \n
\n
\n
物件一覧 \n
\n {\n properties.length > 0 ? (\n properties.map((property) => {\n if (!property.rooms.length) return;\n return
\n })) :
物件が見つかりませんでした
\n }\n
\n
\n
\n
*/}\n \n )}\n\n {isModalShow ? : null}\n\n {/*検索一覧、地図表示部分(地図表示時に表示)*/}\n {isShowMap && (\n 0 ? properties : properties}\n />\n )}\n {isShowChangeConditions ? (\n \n ) : null}\n {isShowAreaSearch ? (\n \n ) : null}\n {isShowStationSearch ? (\n \n ) : null}\n {isShowDetailConditions ? (\n \n {props.city_ids &&\n props.city_ids.map((id) => {\n return (\n \n );\n })}\n {selectStation &&\n selectStation.map((station) => {\n return (\n \n );\n })}\n {selectStation &&\n [...new Set(selectStation.map((s) => s.line_id))].map((lineId) => {\n return (\n \n );\n })}\n {props.south_west_lat && (\n \n )}\n {props.north_east_lat && (\n \n )}\n {props.south_west_lon && (\n \n )}\n {props.north_east_lon && (\n \n )}\n \n \n ) : null}\n >\n );\n};\n\nexport default PropertiesSearchPage;\n","import React, { useEffect, useState } from \"react\";\nimport axios from \"axios\";\nimport { RecoilRoot, useRecoilValue } from \"recoil\";\nimport AreaSearch from \"./top/AreaSearch\";\nimport StationSearch from \"./top/StationSearch\";\n\nimport {\n showTopState,\n showAreaSearchState,\n showStationSearchState,\n showDetailConditionsState,\n showMapSearchState,\n} from \"./top/state\";\nimport Top from \"./top/Top\";\nimport MapSearch from \"./top/MapSearch\";\n\nconst TopPage = (props) => {\n return (\n \n \n \n );\n};\n\nconst Main = (props) => {\n const isShowTop = useRecoilValue(showTopState);\n const isShowAreaSearch = useRecoilValue(showAreaSearchState);\n const isShowStationSearch = useRecoilValue(showStationSearchState);\n const isShowDetailConditionsSearch = useRecoilValue(\n showDetailConditionsState\n );\n const isShowMapSearch = useRecoilValue(showMapSearchState);\n const [oheyaGirlVideos, setOheyaGirlVideos] = useState([]);\n useEffect(() => {\n (async () => {\n await axios.get(\"/api/portal/oheya_girl_videos.json\").then((resp) => {\n setOheyaGirlVideos(resp.data);\n });\n })();\n }, []);\n\n return (\n <>\n {isShowTop && }\n {isShowAreaSearch && }\n {isShowStationSearch && }\n {isShowMapSearch && }\n >\n );\n};\n\nexport default TopPage;\n","import React from \"react\";\nimport { useForm, useStep } from \"react-hooks-helper\";\nimport { ContactInput } from \"./ContactInput\"\nimport { ContactConfirm } from \"./ContactConfirm\";\nimport { ContactComplete } from \"./ContactComplete\";\n\nconst defaultData = {\n name: \"\",\n name_kana: \"\",\n email: \"\",\n message: \"\",\n};\n\nconst steps = [{ id: \"input\" }, { id: \"confirm\" }, { id: \"complete\" }];\n\nexport default function Contact(props) {\n const [formData, setForm] = useForm(defaultData);\n const { step, navigation } = useStep({\n steps,\n initialStep: 0,\n });\n\n const stepData = { formData, setForm, navigation };\n\n switch (step.id) {\n case \"input\":\n return (\n <>\n \n >\n );\n case \"confirm\":\n return (\n <>\n \n >\n );\n case \"complete\":\n return (\n <>\n \n >\n );\n }\n\n return
;\n}\n","import React from \"react\";\nimport Slider from \"react-slick\";\nimport \"slick-carousel/slick/slick.css\";\nimport \"slick-carousel/slick/slick-theme.css\";\nimport styled from \"styled-components\";\nimport VideoPlayer from \"../VideoPlayer/VideoPlayer\";\nimport Properties from \"./Properties\";\nimport RecommendPropertyModal from \"./RecommendPropertyModal\";\nimport iconCloseW from \"../../../../assets/images/icon/icon_close_white.svg\";\nimport iconClose from \"../../../../assets/images/icon/icon-close.svg\";\nimport comingSoon from \"../../../../assets/images/coming_soon.png\";\n\nconst RecommendProperties = ({\n handleRecommendPropertyModal,\n}) => {\n const Container = styled.div`\n display: flex;\n justify-content: center;\n `;\n\n const SliderWrapper = styled.div`\n width: calc(100% - 50px);\n\n .slick-prev:before,\n .slick-next:before {\n color: black;\n }\n `;\n\n const sliderSettings = {\n dots: false,\n infinite: true,\n speed: 500,\n slidesToShow: 1,\n slidesToScroll: 1,\n arrows: true,\n };\n\n return (\n \n
\n
\n
\n \n \n \n
\n \n
\n
\n
\n
\n
\n
\n
\n 10.2 \n 万円\n
\n
\n (管理費\n 8000 \n 円)\n
\n
\n
\n JR山手線 他 / 渋谷駅 徒歩10分\n \n 1K / 19.35㎡ / 3階 / 築10年\n
\n\n
\n このお部屋をもっと見てみる\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n 10.2 \n 万円\n
\n
\n (管理費\n 8000 \n 円)\n
\n
\n
\n JR山手線 他 / 渋谷駅 徒歩10分\n \n 1K / 19.35㎡ / 3階 / 築10年\n
\n\n
\n このお部屋をもっと見てみる\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n 10.2 \n 万円\n
\n
\n (管理費\n 8000 \n 円)\n
\n
\n
\n JR山手線 他 / 渋谷駅 徒歩10分\n \n 1K / 19.35㎡ / 3階 / 築10年\n
\n\n
\n このお部屋をもっと見てみる\n
\n
\n
\n \n
\n
\n
\n );\n};\n\n//自動再生、ミュートする場合\n// const isVideoInFullscreen = () => {\n// if (document.fullscreenElement && document.fullscreenElement.nodeName === 'VIDEO') {\n// return true;\n// }\n// videoElement.volume = 0;\n// videoElement.autoplay = true;\n// };\n\n// return (\n// setMouseOver(true)}\n// onMouseLeave={() => setMouseOver(false)}\n// ref={WindowRef}\n// >\n// {Object.entries(videos).map(([index, videoPath]) => {\n// return (\n// \n// );\n// })}\n\n// \n// \n//
\n// \n// {playing ? (\n// \n// ) : (\n// \n// )}\n// \n// \n//
\n// \n// \n// \n//
\n// \n// \n// );\n\nexport default RecommendProperties;\n","import { Button } from \"@material-ui/core\";\nimport React from \"react\";\nimport iconTime from \"../../../../../assets/images/top/icon_time.svg\";\n\nfunction CommuteSearch() {\n\n return (\n \n {/* \n
\n
\n
*/}\n \n );\n};\n\nexport default CommuteSearch\n","// Assume className is simple and can be found at top-level (window).\n// Fallback to eval to handle cases like 'My.React.ComponentName'.\n// Also, try to gracefully import Babel 6 style default exports\nvar topLevel = typeof window === \"undefined\" ? this : window;\n\nmodule.exports = function (className) {\n var constructor; // Try to access the class globally first\n\n constructor = topLevel[className]; // If that didn't work, try eval\n\n if (!constructor) {\n constructor = eval(className);\n } // Lastly, if there is a default attribute try that\n\n\n if (constructor && constructor['default']) {\n constructor = constructor['default'];\n }\n\n return constructor;\n};","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container\"},[_c('h4',[_vm._v(\"登録が完了しました\")]),_vm._v(\" \"),_c('div',{staticClass:\"row w50 m0a mt-4\"},[_c('div',{staticClass:\"col-6 text-center pl-0\"},[_c('button',{staticClass:\"btn btn-lg btn-rounded btn-secondary\",on:{\"click\":function($event){return _vm.backToCalendar()}}},[_c('i',{staticClass:\"fas fa-backward\"}),_vm._v(\"\\n カレンダーに戻る\\n \")])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n
登録が完了しました \n
\n
\n \n \n カレンダーに戻る\n \n
\n
\n
\n \n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WaitLocalGuidance.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WaitLocalGuidance.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./WaitLocalGuidance.vue?vue&type=template&id=e9a1e796&scoped=true&\"\nimport script from \"./WaitLocalGuidance.vue?vue&type=script&lang=js&\"\nexport * from \"./WaitLocalGuidance.vue?vue&type=script&lang=js&\"\nimport style0 from \"./WaitLocalGuidance.vue?vue&type=style&index=0&id=e9a1e796&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e9a1e796\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container\"},[_vm._v(\"\\n 遠隔案内の待機画面\\n\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n 遠隔案内の待機画面\n
\n \n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WaitRemoteGuidance.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WaitRemoteGuidance.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./WaitRemoteGuidance.vue?vue&type=template&id=043f25b6&scoped=true&\"\nimport script from \"./WaitRemoteGuidance.vue?vue&type=script&lang=js&\"\nexport * from \"./WaitRemoteGuidance.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"043f25b6\",\n null\n \n)\n\nexport default component.exports","export default function requirePropFactory(componentNameInError) {\n if (process.env.NODE_ENV === 'production') {\n return function () {\n return null;\n };\n }\n\n var requireProp = function requireProp(requiredProp) {\n return function (props, propName, componentName, location, propFullName) {\n var propFullNameSafe = propFullName || propName;\n\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(\"The prop `\".concat(propFullNameSafe, \"` of \") + \"`\".concat(componentNameInError, \"` must be used on `\").concat(requiredProp, \"`.\"));\n }\n\n return null;\n };\n };\n\n return requireProp;\n}","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n\n var propFullNameSafe = propFullName || propName;\n\n if (typeof props[propName] !== 'undefined') {\n return new Error(\"The prop `\".concat(propFullNameSafe, \"` is not supported. Please remove it.\"));\n }\n\n return null;\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-date-picker',{on:{\"input\":function($event){return _vm.dateChanged(_vm.selectedDate)}},model:{value:(_vm.selectedDate),callback:function ($$v) {_vm.selectedDate=$$v},expression:\"selectedDate\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Calendar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--9-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Calendar.vue?vue&type=script&lang=js&\"","\n \n \n\n\n\n\n","import { render, staticRenderFns } from \"./Calendar.vue?vue&type=template&id=7051060e&scoped=true&\"\nimport script from \"./Calendar.vue?vue&type=script&lang=js&\"\nexport * from \"./Calendar.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7051060e\",\n null\n \n)\n\nexport default component.exports","module.exports = __webpack_public_path__ + \"media/icon/icon-delete-bin-02aabdf5.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon-search-f5b86d4c.svg\";","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","module.exports = __webpack_public_path__ + \"media/icon/icon-arrow-left-right-6fd040fe.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon-walk-0f6e2cdb.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon-mail-661eac7a.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon-line-green-c62dbad3.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon-twitter-8632fa0f.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon-facebook-0bd6f62a.svg\";","module.exports = __webpack_public_path__ + \"media/character/character08-36174bde.png\";","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z\"\n}), 'ExpandMore');\n\nexports.default = _default;","module.exports = __webpack_public_path__ + \"media/icon/icon-map-pin-73fd12ce.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon-todo-0f52fbd4.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon-download-2-1ce2beef.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon-download-2-green-8f12ae1c.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon_unfold_more-9432381d.svg\";","function _typeof2(obj) { \"@babel/helpers - typeof\"; return _typeof2 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof2(obj); }\n\n!function (e, t) {\n \"object\" == (typeof exports === \"undefined\" ? \"undefined\" : _typeof2(exports)) && \"object\" == (typeof module === \"undefined\" ? \"undefined\" : _typeof2(module)) ? module.exports = t(require(\"react\")) : \"function\" == typeof define && define.amd ? define([\"react\"], t) : \"object\" == (typeof exports === \"undefined\" ? \"undefined\" : _typeof2(exports)) ? exports.ReactPaginate = t(require(\"react\")) : e.ReactPaginate = t(e.React);\n}(this, function (__WEBPACK_EXTERNAL_MODULE__98__) {\n return function () {\n var __webpack_modules__ = {\n 759: function _(e, t, a) {\n \"use strict\";\n\n a.d(t, {\n Z: function Z() {\n return c;\n }\n });\n\n var r,\n o = a(98),\n _ = a.n(o),\n n = a(697),\n i = a.n(n);\n\n function s() {\n return s = Object.assign || function (e) {\n for (var t = 1; t < arguments.length; t++) {\n var a = arguments[t];\n\n for (var r in a) {\n Object.prototype.hasOwnProperty.call(a, r) && (e[r] = a[r]);\n }\n }\n\n return e;\n }, s.apply(this, arguments);\n }\n\n e = a.hmd(e), (r = \"undefined\" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0) && r(e), \"undefined\" != typeof reactHotLoaderGlobal && reactHotLoaderGlobal.default.signature;\n\n var l = function l(e) {\n var t = e.breakLabel,\n a = e.breakClassName,\n r = e.breakLinkClassName,\n o = e.breakHandler,\n n = e.getEventListener,\n i = a || \"break\";\n return _().createElement(\"li\", {\n className: i\n }, _().createElement(\"a\", s({\n className: r,\n role: \"button\",\n tabIndex: \"0\",\n onKeyPress: o\n }, n(o)), t));\n };\n\n l.propTypes = {\n breakLabel: i().oneOfType([i().string, i().node]),\n breakClassName: i().string,\n breakLinkClassName: i().string,\n breakHandler: i().func.isRequired,\n getEventListener: i().func.isRequired\n };\n var p = l;\n var c = p;\n var d, u;\n (d = \"undefined\" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && (d.register(l, \"BreakView\", \"/home/yoan/work/oss/react-paginate/react_components/BreakView.js\"), d.register(p, \"default\", \"/home/yoan/work/oss/react-paginate/react_components/BreakView.js\")), (u = \"undefined\" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0) && u(e);\n },\n 770: function _(e, t, a) {\n \"use strict\";\n\n a.d(t, {\n Z: function Z() {\n return c;\n }\n });\n\n var r,\n o = a(98),\n _ = a.n(o),\n n = a(697),\n i = a.n(n);\n\n function s() {\n return s = Object.assign || function (e) {\n for (var t = 1; t < arguments.length; t++) {\n var a = arguments[t];\n\n for (var r in a) {\n Object.prototype.hasOwnProperty.call(a, r) && (e[r] = a[r]);\n }\n }\n\n return e;\n }, s.apply(this, arguments);\n }\n\n e = a.hmd(e), (r = \"undefined\" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0) && r(e), \"undefined\" != typeof reactHotLoaderGlobal && reactHotLoaderGlobal.default.signature;\n\n var l = function l(e) {\n var t = e.pageClassName,\n a = e.pageLinkClassName,\n r = e.page,\n o = e.selected,\n n = e.activeClassName,\n i = e.activeLinkClassName,\n l = e.getEventListener,\n p = e.pageSelectedHandler,\n c = e.href,\n d = e.extraAriaContext,\n u = e.pageLabelBuilder,\n f = e.rel,\n g = e.ariaLabel || \"Page \" + r + (d ? \" \" + d : \"\"),\n P = null;\n return o && (P = \"page\", g = e.ariaLabel || \"Page \" + r + \" is your current page\", t = void 0 !== t ? t + \" \" + n : n, void 0 !== a ? void 0 !== i && (a = a + \" \" + i) : a = i), _().createElement(\"li\", {\n className: t\n }, _().createElement(\"a\", s({\n rel: f,\n role: c ? void 0 : \"button\",\n className: a,\n href: c,\n tabIndex: o ? \"-1\" : \"0\",\n \"aria-label\": g,\n \"aria-current\": P,\n onKeyPress: p\n }, l(p)), u(r)));\n };\n\n l.propTypes = {\n pageSelectedHandler: i().func.isRequired,\n selected: i().bool.isRequired,\n pageClassName: i().string,\n pageLinkClassName: i().string,\n activeClassName: i().string,\n activeLinkClassName: i().string,\n extraAriaContext: i().string,\n href: i().string,\n ariaLabel: i().string,\n page: i().number.isRequired,\n getEventListener: i().func.isRequired,\n pageLabelBuilder: i().func.isRequired,\n rel: i().string\n };\n var p = l;\n var c = p;\n var d, u;\n (d = \"undefined\" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && (d.register(l, \"PageView\", \"/home/yoan/work/oss/react-paginate/react_components/PageView.js\"), d.register(p, \"default\", \"/home/yoan/work/oss/react-paginate/react_components/PageView.js\")), (u = \"undefined\" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0) && u(e);\n },\n 214: function _(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.d(__webpack_exports__, {\n Z: function Z() {\n return PaginationBoxView;\n }\n });\n\n var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(98),\n react__WEBPACK_IMPORTED_MODULE_0___default = __webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__),\n prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(697),\n prop_types__WEBPACK_IMPORTED_MODULE_1___default = __webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__),\n _PageView__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(770),\n _BreakView__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(759),\n _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(923),\n enterModule;\n\n function _typeof(e) {\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == _typeof2(Symbol.iterator) ? function (e) {\n return _typeof2(e);\n } : function (e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : _typeof2(e);\n }, _typeof(e);\n }\n\n function _extends() {\n return _extends = Object.assign || function (e) {\n for (var t = 1; t < arguments.length; t++) {\n var a = arguments[t];\n\n for (var r in a) {\n Object.prototype.hasOwnProperty.call(a, r) && (e[r] = a[r]);\n }\n }\n\n return e;\n }, _extends.apply(this, arguments);\n }\n\n function _classCallCheck(e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n }\n\n function _defineProperties(e, t) {\n for (var a = 0; a < t.length; a++) {\n var r = t[a];\n r.enumerable = r.enumerable || !1, r.configurable = !0, \"value\" in r && (r.writable = !0), Object.defineProperty(e, r.key, r);\n }\n }\n\n function _createClass(e, t, a) {\n return t && _defineProperties(e.prototype, t), a && _defineProperties(e, a), e;\n }\n\n function _inherits(e, t) {\n if (\"function\" != typeof t && null !== t) throw new TypeError(\"Super expression must either be null or a function\");\n e.prototype = Object.create(t && t.prototype, {\n constructor: {\n value: e,\n writable: !0,\n configurable: !0\n }\n }), t && _setPrototypeOf(e, t);\n }\n\n function _setPrototypeOf(e, t) {\n return _setPrototypeOf = Object.setPrototypeOf || function (e, t) {\n return e.__proto__ = t, e;\n }, _setPrototypeOf(e, t);\n }\n\n function _createSuper(e) {\n var t = _isNativeReflectConstruct();\n\n return function () {\n var a,\n r = _getPrototypeOf(e);\n\n if (t) {\n var o = _getPrototypeOf(this).constructor;\n\n a = Reflect.construct(r, arguments, o);\n } else a = r.apply(this, arguments);\n\n return _possibleConstructorReturn(this, a);\n };\n }\n\n function _possibleConstructorReturn(e, t) {\n if (t && (\"object\" === _typeof(t) || \"function\" == typeof t)) return t;\n if (void 0 !== t) throw new TypeError(\"Derived constructors may only return object or undefined\");\n return _assertThisInitialized(e);\n }\n\n function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n }\n\n function _isNativeReflectConstruct() {\n if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1;\n if (Reflect.construct.sham) return !1;\n if (\"function\" == typeof Proxy) return !0;\n\n try {\n return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})), !0;\n } catch (e) {\n return !1;\n }\n }\n\n function _getPrototypeOf(e) {\n return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {\n return e.__proto__ || Object.getPrototypeOf(e);\n }, _getPrototypeOf(e);\n }\n\n function _defineProperty(e, t, a) {\n return t in e ? Object.defineProperty(e, t, {\n value: a,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[t] = a, e;\n }\n\n module = __webpack_require__.hmd(module), enterModule = \"undefined\" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0, enterModule && enterModule(module);\n\n var __signature__ = \"undefined\" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default.signature : function (e) {\n return e;\n },\n PaginationBoxView = function (_Component) {\n _inherits(PaginationBoxView, _Component);\n\n var _super = _createSuper(PaginationBoxView);\n\n function PaginationBoxView(e) {\n var t, a;\n return _classCallCheck(this, PaginationBoxView), _defineProperty(_assertThisInitialized(t = _super.call(this, e)), \"handlePreviousPage\", function (e) {\n var a = t.state.selected;\n t.handleClick(e, null, a > 0 ? a - 1 : void 0, {\n isPrevious: !0\n });\n }), _defineProperty(_assertThisInitialized(t), \"handleNextPage\", function (e) {\n var a = t.state.selected,\n r = t.props.pageCount;\n t.handleClick(e, null, a < r - 1 ? a + 1 : void 0, {\n isNext: !0\n });\n }), _defineProperty(_assertThisInitialized(t), \"handlePageSelected\", function (e, a) {\n if (t.state.selected === e) return t.callActiveCallback(e), void t.handleClick(a, null, void 0, {\n isActive: !0\n });\n t.handleClick(a, null, e);\n }), _defineProperty(_assertThisInitialized(t), \"handlePageChange\", function (e) {\n t.state.selected !== e && (t.setState({\n selected: e\n }), t.callCallback(e));\n }), _defineProperty(_assertThisInitialized(t), \"getEventListener\", function (e) {\n return _defineProperty({}, t.props.eventListener, e);\n }), _defineProperty(_assertThisInitialized(t), \"handleClick\", function (e, a, r) {\n var o = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {},\n _ = o.isPrevious,\n n = void 0 !== _ && _,\n i = o.isNext,\n s = void 0 !== i && i,\n l = o.isBreak,\n p = void 0 !== l && l,\n c = o.isActive,\n d = void 0 !== c && c;\n e.preventDefault ? e.preventDefault() : e.returnValue = !1;\n var u = t.state.selected,\n f = t.props.onClick,\n g = r;\n\n if (f) {\n var P = f({\n index: a,\n selected: u,\n nextSelectedPage: r,\n event: e,\n isPrevious: n,\n isNext: s,\n isBreak: p,\n isActive: d\n });\n if (!1 === P) return;\n Number.isInteger(P) && (g = P);\n }\n\n void 0 !== g && t.handlePageChange(g);\n }), _defineProperty(_assertThisInitialized(t), \"handleBreakClick\", function (e, a) {\n var r = t.state.selected;\n t.handleClick(a, e, r < e ? t.getForwardJump() : t.getBackwardJump(), {\n isBreak: !0\n });\n }), _defineProperty(_assertThisInitialized(t), \"callCallback\", function (e) {\n void 0 !== t.props.onPageChange && \"function\" == typeof t.props.onPageChange && t.props.onPageChange({\n selected: e\n });\n }), _defineProperty(_assertThisInitialized(t), \"callActiveCallback\", function (e) {\n void 0 !== t.props.onPageActive && \"function\" == typeof t.props.onPageActive && t.props.onPageActive({\n selected: e\n });\n }), _defineProperty(_assertThisInitialized(t), \"getElementPageRel\", function (e) {\n var a = t.state.selected,\n r = t.props,\n o = r.nextPageRel,\n _ = r.prevPageRel,\n n = r.selectedPageRel;\n return a - 1 === e ? _ : a === e ? n : a + 1 === e ? o : void 0;\n }), _defineProperty(_assertThisInitialized(t), \"pagination\", function () {\n var e = [],\n a = t.props,\n r = a.pageRangeDisplayed,\n o = a.pageCount,\n _ = a.marginPagesDisplayed,\n n = a.breakLabel,\n i = a.breakClassName,\n s = a.breakLinkClassName,\n l = t.state.selected;\n if (o <= r) for (var p = 0; p < o; p++) {\n e.push(t.getPageElement(p));\n } else {\n var c = r / 2,\n d = r - c;\n l > o - r / 2 ? c = r - (d = o - l) : l < r / 2 && (d = r - (c = l));\n\n var u,\n f,\n g = function g(e) {\n return t.getPageElement(e);\n },\n P = [];\n\n for (u = 0; u < o; u++) {\n var E = u + 1;\n E <= _ || E > o - _ || u >= l - c && u <= l + (0 === l && r > 1 ? d - 1 : d) ? P.push({\n type: \"page\",\n index: u,\n display: g(u)\n }) : n && P.length > 0 && P[P.length - 1].display !== f && (r > 0 || _ > 0) && (f = react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_BreakView__WEBPACK_IMPORTED_MODULE_3__.Z, {\n key: u,\n breakLabel: n,\n breakClassName: i,\n breakLinkClassName: s,\n breakHandler: t.handleBreakClick.bind(null, u),\n getEventListener: t.getEventListener\n }), P.push({\n type: \"break\",\n index: u,\n display: f\n }));\n }\n\n P.forEach(function (t, a) {\n var r = t;\n \"break\" === t.type && P[a - 1] && \"page\" === P[a - 1].type && P[a + 1] && \"page\" === P[a + 1].type && P[a + 1].index - P[a - 1].index <= 2 && (r = {\n type: \"page\",\n index: t.index,\n display: g(t.index)\n }), e.push(r.display);\n });\n }\n return e;\n }), void 0 !== e.initialPage && void 0 !== e.forcePage && console.warn(\"(react-paginate): Both initialPage (\".concat(e.initialPage, \") and forcePage (\").concat(e.forcePage, \") props are provided, which is discouraged.\") + \" Use exclusively forcePage prop for a controlled component.\\nSee https://reactjs.org/docs/forms.html#controlled-components\"), a = e.initialPage ? e.initialPage : e.forcePage ? e.forcePage : 0, t.state = {\n selected: a\n }, t;\n }\n\n return _createClass(PaginationBoxView, [{\n key: \"componentDidMount\",\n value: function value() {\n var e = this.props,\n t = e.initialPage,\n a = e.disableInitialCallback,\n r = e.extraAriaContext,\n o = e.pageCount,\n _ = e.forcePage;\n void 0 === t || a || this.callCallback(t), r && console.warn(\"DEPRECATED (react-paginate): The extraAriaContext prop is deprecated. You should now use the ariaLabelBuilder instead.\"), Number.isInteger(o) || console.warn(\"(react-paginate): The pageCount prop value provided is not an integer (\".concat(o, \"). Did you forget a Math.ceil()?\")), void 0 !== t && t > o - 1 && console.warn(\"(react-paginate): The initialPage prop provided is greater than the maximum page index from pageCount prop (\".concat(t, \" > \").concat(o - 1, \").\")), void 0 !== _ && _ > o - 1 && console.warn(\"(react-paginate): The forcePage prop provided is greater than the maximum page index from pageCount prop (\".concat(_, \" > \").concat(o - 1, \").\"));\n }\n }, {\n key: \"componentDidUpdate\",\n value: function value(e) {\n void 0 !== this.props.forcePage && this.props.forcePage !== e.forcePage && (this.props.forcePage > this.props.pageCount - 1 && console.warn(\"(react-paginate): The forcePage prop provided is greater than the maximum page index from pageCount prop (\".concat(this.props.forcePage, \" > \").concat(this.props.pageCount - 1, \").\")), this.setState({\n selected: this.props.forcePage\n })), Number.isInteger(e.pageCount) && !Number.isInteger(this.props.pageCount) && console.warn(\"(react-paginate): The pageCount prop value provided is not an integer (\".concat(this.props.pageCount, \"). Did you forget a Math.ceil()?\"));\n }\n }, {\n key: \"getForwardJump\",\n value: function value() {\n var e = this.state.selected,\n t = this.props,\n a = t.pageCount,\n r = e + t.pageRangeDisplayed;\n return r >= a ? a - 1 : r;\n }\n }, {\n key: \"getBackwardJump\",\n value: function value() {\n var e = this.state.selected - this.props.pageRangeDisplayed;\n return e < 0 ? 0 : e;\n }\n }, {\n key: \"getElementHref\",\n value: function value(e) {\n var t = this.props,\n a = t.hrefBuilder,\n r = t.pageCount,\n o = t.hrefAllControls;\n if (a) return o || e >= 0 && e < r ? a(e + 1, r, this.state.selected) : void 0;\n }\n }, {\n key: \"ariaLabelBuilder\",\n value: function value(e) {\n var t = e === this.state.selected;\n\n if (this.props.ariaLabelBuilder && e >= 0 && e < this.props.pageCount) {\n var a = this.props.ariaLabelBuilder(e + 1, t);\n return this.props.extraAriaContext && !t && (a = a + \" \" + this.props.extraAriaContext), a;\n }\n }\n }, {\n key: \"getPageElement\",\n value: function value(e) {\n var t = this.state.selected,\n a = this.props,\n r = a.pageClassName,\n o = a.pageLinkClassName,\n _ = a.activeClassName,\n n = a.activeLinkClassName,\n i = a.extraAriaContext,\n s = a.pageLabelBuilder;\n return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_PageView__WEBPACK_IMPORTED_MODULE_2__.Z, {\n key: e,\n pageSelectedHandler: this.handlePageSelected.bind(null, e),\n selected: t === e,\n rel: this.getElementPageRel(e),\n pageClassName: r,\n pageLinkClassName: o,\n activeClassName: _,\n activeLinkClassName: n,\n extraAriaContext: i,\n href: this.getElementHref(e),\n ariaLabel: this.ariaLabelBuilder(e),\n page: e + 1,\n pageLabelBuilder: s,\n getEventListener: this.getEventListener\n });\n }\n }, {\n key: \"render\",\n value: function value() {\n var e = this.props.renderOnZeroPageCount;\n if (0 === this.props.pageCount && void 0 !== e) return e ? e(this.props) : e;\n var t = this.props,\n a = t.disabledClassName,\n r = t.disabledLinkClassName,\n o = t.pageCount,\n _ = t.className,\n n = t.containerClassName,\n i = t.previousLabel,\n s = t.previousClassName,\n l = t.previousLinkClassName,\n p = t.previousAriaLabel,\n c = t.prevRel,\n d = t.nextLabel,\n u = t.nextClassName,\n f = t.nextLinkClassName,\n g = t.nextAriaLabel,\n P = t.nextRel,\n E = this.state.selected,\n b = 0 === E,\n y = E === o - 1,\n v = \"\".concat((0, _utils__WEBPACK_IMPORTED_MODULE_4__.m)(s)).concat(b ? \" \".concat((0, _utils__WEBPACK_IMPORTED_MODULE_4__.m)(a)) : \"\"),\n C = \"\".concat((0, _utils__WEBPACK_IMPORTED_MODULE_4__.m)(u)).concat(y ? \" \".concat((0, _utils__WEBPACK_IMPORTED_MODULE_4__.m)(a)) : \"\"),\n O = \"\".concat((0, _utils__WEBPACK_IMPORTED_MODULE_4__.m)(l)).concat(b ? \" \".concat((0, _utils__WEBPACK_IMPORTED_MODULE_4__.m)(r)) : \"\"),\n m = \"\".concat((0, _utils__WEBPACK_IMPORTED_MODULE_4__.m)(f)).concat(y ? \" \".concat((0, _utils__WEBPACK_IMPORTED_MODULE_4__.m)(r)) : \"\"),\n L = b ? \"true\" : \"false\",\n h = y ? \"true\" : \"false\";\n return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"ul\", {\n className: _ || n\n }, react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"li\", {\n className: v\n }, react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"a\", _extends({\n className: O,\n href: this.getElementHref(E - 1),\n tabIndex: b ? \"-1\" : \"0\",\n role: \"button\",\n onKeyPress: this.handlePreviousPage,\n \"aria-disabled\": L,\n \"aria-label\": p,\n rel: c\n }, this.getEventListener(this.handlePreviousPage)), i)), this.pagination(), react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"li\", {\n className: C\n }, react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"a\", _extends({\n className: m,\n href: this.getElementHref(E + 1),\n tabIndex: y ? \"-1\" : \"0\",\n role: \"button\",\n onKeyPress: this.handleNextPage,\n \"aria-disabled\": h,\n \"aria-label\": g,\n rel: P\n }, this.getEventListener(this.handleNextPage)), d)));\n }\n }, {\n key: \"__reactstandin__regenerateByEval\",\n value: function __reactstandin__regenerateByEval(key, code) {\n this[key] = eval(code);\n }\n }]), PaginationBoxView;\n }(react__WEBPACK_IMPORTED_MODULE_0__.Component),\n reactHotLoader,\n leaveModule;\n\n _defineProperty(PaginationBoxView, \"propTypes\", {\n pageCount: prop_types__WEBPACK_IMPORTED_MODULE_1___default().number.isRequired,\n pageRangeDisplayed: prop_types__WEBPACK_IMPORTED_MODULE_1___default().number,\n marginPagesDisplayed: prop_types__WEBPACK_IMPORTED_MODULE_1___default().number,\n previousLabel: prop_types__WEBPACK_IMPORTED_MODULE_1___default().node,\n previousAriaLabel: prop_types__WEBPACK_IMPORTED_MODULE_1___default().string,\n prevPageRel: prop_types__WEBPACK_IMPORTED_MODULE_1___default().string,\n prevRel: prop_types__WEBPACK_IMPORTED_MODULE_1___default().string,\n nextLabel: prop_types__WEBPACK_IMPORTED_MODULE_1___default().node,\n nextAriaLabel: prop_types__WEBPACK_IMPORTED_MODULE_1___default().string,\n nextPageRel: prop_types__WEBPACK_IMPORTED_MODULE_1___default().string,\n nextRel: prop_types__WEBPACK_IMPORTED_MODULE_1___default().string,\n breakLabel: prop_types__WEBPACK_IMPORTED_MODULE_1___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_1___default().string, prop_types__WEBPACK_IMPORTED_MODULE_1___default().node]),\n hrefBuilder: prop_types__WEBPACK_IMPORTED_MODULE_1___default().func,\n hrefAllControls: prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool,\n onPageChange: prop_types__WEBPACK_IMPORTED_MODULE_1___default().func,\n onPageActive: prop_types__WEBPACK_IMPORTED_MODULE_1___default().func,\n onClick: prop_types__WEBPACK_IMPORTED_MODULE_1___default().func,\n initialPage: prop_types__WEBPACK_IMPORTED_MODULE_1___default().number,\n forcePage: prop_types__WEBPACK_IMPORTED_MODULE_1___default().number,\n disableInitialCallback: prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool,\n containerClassName: prop_types__WEBPACK_IMPORTED_MODULE_1___default().string,\n className: prop_types__WEBPACK_IMPORTED_MODULE_1___default().string,\n pageClassName: prop_types__WEBPACK_IMPORTED_MODULE_1___default().string,\n pageLinkClassName: prop_types__WEBPACK_IMPORTED_MODULE_1___default().string,\n pageLabelBuilder: prop_types__WEBPACK_IMPORTED_MODULE_1___default().func,\n activeClassName: prop_types__WEBPACK_IMPORTED_MODULE_1___default().string,\n activeLinkClassName: prop_types__WEBPACK_IMPORTED_MODULE_1___default().string,\n previousClassName: prop_types__WEBPACK_IMPORTED_MODULE_1___default().string,\n nextClassName: prop_types__WEBPACK_IMPORTED_MODULE_1___default().string,\n previousLinkClassName: prop_types__WEBPACK_IMPORTED_MODULE_1___default().string,\n nextLinkClassName: prop_types__WEBPACK_IMPORTED_MODULE_1___default().string,\n disabledClassName: prop_types__WEBPACK_IMPORTED_MODULE_1___default().string,\n disabledLinkClassName: prop_types__WEBPACK_IMPORTED_MODULE_1___default().string,\n breakClassName: prop_types__WEBPACK_IMPORTED_MODULE_1___default().string,\n breakLinkClassName: prop_types__WEBPACK_IMPORTED_MODULE_1___default().string,\n extraAriaContext: prop_types__WEBPACK_IMPORTED_MODULE_1___default().string,\n ariaLabelBuilder: prop_types__WEBPACK_IMPORTED_MODULE_1___default().func,\n eventListener: prop_types__WEBPACK_IMPORTED_MODULE_1___default().string,\n renderOnZeroPageCount: prop_types__WEBPACK_IMPORTED_MODULE_1___default().func,\n selectedPageRel: prop_types__WEBPACK_IMPORTED_MODULE_1___default().string\n }), _defineProperty(PaginationBoxView, \"defaultProps\", {\n pageRangeDisplayed: 2,\n marginPagesDisplayed: 3,\n activeClassName: \"selected\",\n previousLabel: \"Previous\",\n previousClassName: \"previous\",\n previousAriaLabel: \"Previous page\",\n prevPageRel: \"prev\",\n prevRel: \"prev\",\n nextLabel: \"Next\",\n nextClassName: \"next\",\n nextAriaLabel: \"Next page\",\n nextPageRel: \"next\",\n nextRel: \"next\",\n breakLabel: \"...\",\n disabledClassName: \"disabled\",\n disableInitialCallback: !1,\n pageLabelBuilder: function pageLabelBuilder(e) {\n return e;\n },\n eventListener: \"onClick\",\n renderOnZeroPageCount: void 0,\n selectedPageRel: \"canonical\",\n hrefAllControls: !1\n }), reactHotLoader = \"undefined\" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0, reactHotLoader && reactHotLoader.register(PaginationBoxView, \"PaginationBoxView\", \"/home/yoan/work/oss/react-paginate/react_components/PaginationBoxView.js\"), leaveModule = \"undefined\" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0, leaveModule && leaveModule(module);\n },\n 351: function _(e, t, a) {\n \"use strict\";\n\n a.r(t), a.d(t, {\n default: function _default() {\n return n;\n }\n });\n var r,\n o = a(214);\n e = a.hmd(e), (r = \"undefined\" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0) && r(e), \"undefined\" != typeof reactHotLoaderGlobal && reactHotLoaderGlobal.default.signature;\n var _ = o.Z;\n var n = _;\n var i, s;\n (i = \"undefined\" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && i.register(_, \"default\", \"/home/yoan/work/oss/react-paginate/react_components/index.js\"), (s = \"undefined\" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0) && s(e);\n },\n 923: function _(e, t, a) {\n \"use strict\";\n\n var r, o, _;\n\n function n(e) {\n var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : \"\";\n return null != e ? e : t;\n }\n\n a.d(t, {\n m: function m() {\n return n;\n }\n }), e = a.hmd(e), (r = \"undefined\" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0) && r(e), \"undefined\" != typeof reactHotLoaderGlobal && reactHotLoaderGlobal.default.signature, (o = \"undefined\" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && o.register(n, \"classNameIfDefined\", \"/home/yoan/work/oss/react-paginate/react_components/utils.js\"), (_ = \"undefined\" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0) && _(e);\n },\n 703: function _(e, t, a) {\n \"use strict\";\n\n var r = a(414);\n\n function o() {}\n\n function _() {}\n\n _.resetWarningCache = o, e.exports = function () {\n function e(e, t, a, o, _, n) {\n if (n !== r) {\n var i = new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");\n throw i.name = \"Invariant Violation\", i;\n }\n }\n\n function t() {\n return e;\n }\n\n e.isRequired = e;\n var a = {\n array: e,\n bool: e,\n func: e,\n number: e,\n object: e,\n string: e,\n symbol: e,\n any: e,\n arrayOf: t,\n element: e,\n elementType: e,\n instanceOf: t,\n node: e,\n objectOf: t,\n oneOf: t,\n oneOfType: t,\n shape: t,\n exact: t,\n checkPropTypes: _,\n resetWarningCache: o\n };\n return a.PropTypes = a, a;\n };\n },\n 697: function _(e, t, a) {\n e.exports = a(703)();\n },\n 414: function _(e) {\n \"use strict\";\n\n e.exports = \"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\";\n },\n 98: function _(e) {\n \"use strict\";\n\n e.exports = __WEBPACK_EXTERNAL_MODULE__98__;\n }\n },\n __webpack_module_cache__ = {};\n\n function __webpack_require__(e) {\n var t = __webpack_module_cache__[e];\n if (void 0 !== t) return t.exports;\n var a = __webpack_module_cache__[e] = {\n id: e,\n loaded: !1,\n exports: {}\n };\n return __webpack_modules__[e](a, a.exports, __webpack_require__), a.loaded = !0, a.exports;\n }\n\n __webpack_require__.n = function (e) {\n var t = e && e.__esModule ? function () {\n return e.default;\n } : function () {\n return e;\n };\n return __webpack_require__.d(t, {\n a: t\n }), t;\n }, __webpack_require__.d = function (e, t) {\n for (var a in t) {\n __webpack_require__.o(t, a) && !__webpack_require__.o(e, a) && Object.defineProperty(e, a, {\n enumerable: !0,\n get: t[a]\n });\n }\n }, __webpack_require__.hmd = function (e) {\n return (e = Object.create(e)).children || (e.children = []), Object.defineProperty(e, \"exports\", {\n enumerable: !0,\n set: function set() {\n throw new Error(\"ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: \" + e.id);\n }\n }), e;\n }, __webpack_require__.o = function (e, t) {\n return Object.prototype.hasOwnProperty.call(e, t);\n }, __webpack_require__.r = function (e) {\n \"undefined\" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {\n value: \"Module\"\n }), Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n };\n\n var __webpack_exports__ = __webpack_require__(351);\n\n return __webpack_exports__;\n }();\n});","module.exports = __webpack_public_path__ + \"media/top/icon_map-pin_36x36-23a3beb2.svg\";","module.exports = __webpack_public_path__ + \"media/top/icon_question-40215071.svg\";","module.exports = __webpack_public_path__ + \"media/character/character01-1b323ac4.png\";","module.exports = __webpack_public_path__ + \"media/top/bubble_1-1f96511a.svg\";","module.exports = __webpack_public_path__ + \"media/top/bubble_2-8724f43c.svg\";","module.exports = __webpack_public_path__ + \"media/top/bubble_3-a207426d.svg\";","module.exports = __webpack_public_path__ + \"media/top/bubble_4-55fe21c5.svg\";","module.exports = __webpack_public_path__ + \"media/top/catchcopy-959063d7.svg\";","module.exports = __webpack_public_path__ + \"media/top/about_room-df412153.svg\";","module.exports = __webpack_public_path__ + \"media/top/about_lifereechintai-c27a2cf5.svg\";","module.exports = __webpack_public_path__ + \"media/top/icon_question_left-5a1950d5.png\";","module.exports = __webpack_public_path__ + \"media/top/icon_question_right-b6885cce.png\";","module.exports = __webpack_public_path__ + \"media/top/sub_catchcopy-d9fcd188.svg\";","module.exports = __webpack_public_path__ + \"media/top/icon_instagram-548a63a9.svg\";","module.exports = __webpack_public_path__ + \"media/top/icon_tag-824a9900.svg\";","module.exports = __webpack_public_path__ + \"media/top/bg-478f21e4.png\";","module.exports = __webpack_public_path__ + \"media/top/icon_location-b9e8fb19.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon-location-226c8dbb.svg\";","module.exports = __webpack_public_path__ + \"media/icon/icon_close_white-f4d63dcf.svg\";","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n//\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (_typeof(objA) !== \"object\" || !objA || _typeof(objB) !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB); // Test for A's keys different from B.\n\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || ret === void 0 && valueA !== valueB) {\n return false;\n }\n }\n\n return true;\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction stylis_min(W) {\n function M(d, c, e, h, a) {\n for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n g = e.charCodeAt(l);\n l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n\n if (0 === b + n + v + m) {\n if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n switch (g) {\n case 32:\n case 9:\n case 59:\n case 13:\n case 10:\n break;\n\n default:\n f += e.charAt(l);\n }\n\n g = 59;\n }\n\n switch (g) {\n case 123:\n f = f.trim();\n q = f.charCodeAt(0);\n k = 1;\n\n for (t = ++l; l < B;) {\n switch (g = e.charCodeAt(l)) {\n case 123:\n k++;\n break;\n\n case 125:\n k--;\n break;\n\n case 47:\n switch (g = e.charCodeAt(l + 1)) {\n case 42:\n case 47:\n a: {\n for (u = l + 1; u < J; ++u) {\n switch (e.charCodeAt(u)) {\n case 47:\n if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n l = u + 1;\n break a;\n }\n\n break;\n\n case 10:\n if (47 === g) {\n l = u + 1;\n break a;\n }\n\n }\n }\n\n l = u;\n }\n\n }\n\n break;\n\n case 91:\n g++;\n\n case 40:\n g++;\n\n case 34:\n case 39:\n for (; l++ < J && e.charCodeAt(l) !== g;) {}\n\n }\n\n if (0 === k) break;\n l++;\n }\n\n k = e.substring(t, l);\n 0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n switch (q) {\n case 64:\n 0 < r && (f = f.replace(N, ''));\n g = f.charCodeAt(1);\n\n switch (g) {\n case 100:\n case 109:\n case 115:\n case 45:\n r = c;\n break;\n\n default:\n r = O;\n }\n\n k = M(c, r, k, g, a + 1);\n t = k.length;\n 0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n if (0 < t) switch (g) {\n case 115:\n f = f.replace(da, ea);\n\n case 100:\n case 109:\n case 45:\n k = f + '{' + k + '}';\n break;\n\n case 107:\n f = f.replace(fa, '$1 $2');\n k = f + '{' + k + '}';\n k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n break;\n\n default:\n k = f + k, 112 === h && (k = (p += k, ''));\n } else k = '';\n break;\n\n default:\n k = M(c, X(c, f, I), k, h, a + 1);\n }\n\n F += k;\n k = I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n break;\n\n case 125:\n case 59:\n f = (0 < r ? f.replace(N, '') : f).trim();\n if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n case 0:\n break;\n\n case 64:\n if (105 === g || 99 === g) {\n G += f + e.charAt(l);\n break;\n }\n\n default:\n 58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n }\n I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n }\n }\n\n switch (g) {\n case 13:\n case 10:\n 47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n 0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n z = 1;\n D++;\n break;\n\n case 59:\n case 125:\n if (0 === b + n + v + m) {\n z++;\n break;\n }\n\n default:\n z++;\n y = e.charAt(l);\n\n switch (g) {\n case 9:\n case 32:\n if (0 === n + m + b) switch (x) {\n case 44:\n case 58:\n case 9:\n case 32:\n y = '';\n break;\n\n default:\n 32 !== g && (y = ' ');\n }\n break;\n\n case 0:\n y = '\\\\0';\n break;\n\n case 12:\n y = '\\\\f';\n break;\n\n case 11:\n y = '\\\\v';\n break;\n\n case 38:\n 0 === n + b + m && (r = I = 1, y = '\\f' + y);\n break;\n\n case 108:\n if (0 === n + b + m + E && 0 < u) switch (l - u) {\n case 2:\n 112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n case 8:\n 111 === K && (E = K);\n }\n break;\n\n case 58:\n 0 === n + b + m && (u = l);\n break;\n\n case 44:\n 0 === b + v + n + m && (r = 1, y += '\\r');\n break;\n\n case 34:\n case 39:\n 0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n break;\n\n case 91:\n 0 === n + b + v && m++;\n break;\n\n case 93:\n 0 === n + b + v && m--;\n break;\n\n case 41:\n 0 === n + b + m && v--;\n break;\n\n case 40:\n if (0 === n + b + m) {\n if (0 === q) switch (2 * x + 3 * K) {\n case 533:\n break;\n\n default:\n q = 1;\n }\n v++;\n }\n\n break;\n\n case 64:\n 0 === b + v + n + m + u + k && (k = 1);\n break;\n\n case 42:\n case 47:\n if (!(0 < n + m + v)) switch (b) {\n case 0:\n switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n case 235:\n b = 47;\n break;\n\n case 220:\n t = l, b = 42;\n }\n\n break;\n\n case 42:\n 47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n }\n }\n\n 0 === b && (f += y);\n }\n\n K = x;\n x = g;\n l++;\n }\n\n t = p.length;\n\n if (0 < t) {\n r = c;\n if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n p = r.join(',') + '{' + p + '}';\n\n if (0 !== w * E) {\n 2 !== w || L(p, 2) || (E = 0);\n\n switch (E) {\n case 111:\n p = p.replace(ha, ':-moz-$1') + p;\n break;\n\n case 112:\n p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n }\n\n E = 0;\n }\n }\n\n return G + p + F;\n }\n\n function X(d, c, e) {\n var h = c.trim().split(ia);\n c = h;\n var a = h.length,\n m = d.length;\n\n switch (m) {\n case 0:\n case 1:\n var b = 0;\n\n for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n c[b] = Z(d, c[b], e).trim();\n }\n\n break;\n\n default:\n var v = b = 0;\n\n for (c = []; b < a; ++b) {\n for (var n = 0; n < m; ++n) {\n c[v++] = Z(d[n] + ' ', h[b], e).trim();\n }\n }\n\n }\n\n return c;\n }\n\n function Z(d, c, e) {\n var h = c.charCodeAt(0);\n 33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n switch (h) {\n case 38:\n return c.replace(F, '$1' + d.trim());\n\n case 58:\n return d.trim() + c.replace(F, '$1' + d.trim());\n\n default:\n if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n }\n\n return d + c;\n }\n\n function P(d, c, e, h) {\n var a = d + ';',\n m = 2 * c + 3 * e + 4 * h;\n\n if (944 === m) {\n d = a.indexOf(':', 9) + 1;\n var b = a.substring(d, a.length - 1).trim();\n b = a.substring(0, d).trim() + b + ';';\n return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n }\n\n if (0 === w || 2 === w && !L(a, 1)) return a;\n\n switch (m) {\n case 1015:\n return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n case 951:\n return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n case 963:\n return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n case 1009:\n if (100 !== a.charCodeAt(4)) break;\n\n case 969:\n case 942:\n return '-webkit-' + a + a;\n\n case 978:\n return '-webkit-' + a + '-moz-' + a + a;\n\n case 1019:\n case 983:\n return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n case 883:\n if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n break;\n\n case 932:\n if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n case 103:\n return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n case 115:\n return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n case 98:\n return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n }\n return '-webkit-' + a + '-ms-' + a + a;\n\n case 964:\n return '-webkit-' + a + '-ms-flex-' + a + a;\n\n case 1023:\n if (99 !== a.charCodeAt(8)) break;\n b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n case 1005:\n return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n case 1e3:\n b = a.substring(13).trim();\n c = b.indexOf('-') + 1;\n\n switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n case 226:\n b = a.replace(G, 'tb');\n break;\n\n case 232:\n b = a.replace(G, 'tb-rl');\n break;\n\n case 220:\n b = a.replace(G, 'lr');\n break;\n\n default:\n return a;\n }\n\n return '-webkit-' + a + '-ms-' + b + a;\n\n case 1017:\n if (-1 === a.indexOf('sticky', 9)) break;\n\n case 975:\n c = (a = d).length - 10;\n b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n case 203:\n if (111 > b.charCodeAt(8)) break;\n\n case 115:\n a = a.replace(b, '-webkit-' + b) + ';' + a;\n break;\n\n case 207:\n case 102:\n a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n }\n\n return a + ';';\n\n case 938:\n if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n case 105:\n return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n case 115:\n return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n default:\n return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n }\n break;\n\n case 973:\n case 989:\n if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n case 931:\n case 953:\n if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n break;\n\n case 962:\n if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n }\n\n return a;\n }\n\n function L(d, c) {\n var e = d.indexOf(1 === c ? ':' : '{'),\n h = d.substring(0, 3 !== c ? e : 10);\n e = d.substring(e + 1, d.length - 1);\n return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n }\n\n function ea(d, c) {\n var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n }\n\n function H(d, c, e, h, a, m, b, v, n, q) {\n for (var g = 0, x = c, w; g < A; ++g) {\n switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n case void 0:\n case !1:\n case !0:\n case null:\n break;\n\n default:\n x = w;\n }\n }\n\n if (x !== c) return x;\n }\n\n function T(d) {\n switch (d) {\n case void 0:\n case null:\n A = S.length = 0;\n break;\n\n default:\n if ('function' === typeof d) S[A++] = d;else if ('object' === _typeof(d)) for (var c = 0, e = d.length; c < e; ++c) {\n T(d[c]);\n } else Y = !!d | 0;\n }\n\n return T;\n }\n\n function U(d) {\n d = d.prefix;\n void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n return U;\n }\n\n function B(d, c) {\n var e = d;\n 33 > e.charCodeAt(0) && (e = e.trim());\n V = e;\n e = [V];\n\n if (0 < A) {\n var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n void 0 !== h && 'string' === typeof h && (c = h);\n }\n\n var a = M(O, e, c, 0, 0);\n 0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n V = '';\n E = 0;\n z = D = 1;\n return a;\n }\n\n var ca = /^\\0+/g,\n N = /[\\0\\r\\f]/g,\n aa = /: */g,\n ka = /zoo|gra/,\n ma = /([,: ])(transform)/g,\n ia = /,\\r+?/g,\n F = /([\\t\\r\\n ])*\\f?&/g,\n fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n Q = /::(place)/g,\n ha = /:(read-only)/g,\n G = /[svh]\\w+-[tblr]{2}/,\n da = /\\(\\s*(.*)\\s*\\)/g,\n oa = /([\\s\\S]*?);/g,\n ba = /-self|flex-/g,\n na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n ja = /([^-])(image-set\\()/,\n z = 1,\n D = 1,\n E = 0,\n w = 1,\n O = [],\n S = [],\n A = 0,\n R = null,\n Y = 0,\n V = '';\n B.use = T;\n B.set = U;\n void 0 !== W && U(W);\n return B;\n}\n\nexport default stylis_min;","var unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\nexport default unitlessKeys;","/**\n * WARNING: Don't import this directly.\n * Use `MuiError` from `@material-ui/utils/macros/MuiError.macro` instead.\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code) {\n // Apply babel-plugin-transform-template-literals in loose mode\n // loose mode is safe iff we're concatenating primitives\n // see https://babeljs.io/docs/en/babel-plugin-transform-template-literals#loose\n\n /* eslint-disable prefer-template */\n var url = 'https://material-ui.com/production-error/?code=' + code;\n\n for (var i = 1; i < arguments.length; i += 1) {\n // rest params over-transpile for this case\n // eslint-disable-next-line prefer-rest-params\n url += '&args[]=' + encodeURIComponent(arguments[i]);\n }\n\n return 'Minified Material-UI error #' + code + '; visit ' + url + ' for the full message.';\n /* eslint-enable prefer-template */\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n margin: 0\n },\n\n /* Styles applied to the root element if `variant=\"body2\"`. */\n body2: theme.typography.body2,\n\n /* Styles applied to the root element if `variant=\"body1\"`. */\n body1: theme.typography.body1,\n\n /* Styles applied to the root element if `variant=\"caption\"`. */\n caption: theme.typography.caption,\n\n /* Styles applied to the root element if `variant=\"button\"`. */\n button: theme.typography.button,\n\n /* Styles applied to the root element if `variant=\"h1\"`. */\n h1: theme.typography.h1,\n\n /* Styles applied to the root element if `variant=\"h2\"`. */\n h2: theme.typography.h2,\n\n /* Styles applied to the root element if `variant=\"h3\"`. */\n h3: theme.typography.h3,\n\n /* Styles applied to the root element if `variant=\"h4\"`. */\n h4: theme.typography.h4,\n\n /* Styles applied to the root element if `variant=\"h5\"`. */\n h5: theme.typography.h5,\n\n /* Styles applied to the root element if `variant=\"h6\"`. */\n h6: theme.typography.h6,\n\n /* Styles applied to the root element if `variant=\"subtitle1\"`. */\n subtitle1: theme.typography.subtitle1,\n\n /* Styles applied to the root element if `variant=\"subtitle2\"`. */\n subtitle2: theme.typography.subtitle2,\n\n /* Styles applied to the root element if `variant=\"overline\"`. */\n overline: theme.typography.overline,\n\n /* Styles applied to the root element if `variant=\"srOnly\"`. Only accessible to screen readers. */\n srOnly: {\n position: 'absolute',\n height: 1,\n width: 1,\n overflow: 'hidden'\n },\n\n /* Styles applied to the root element if `align=\"left\"`. */\n alignLeft: {\n textAlign: 'left'\n },\n\n /* Styles applied to the root element if `align=\"center\"`. */\n alignCenter: {\n textAlign: 'center'\n },\n\n /* Styles applied to the root element if `align=\"right\"`. */\n alignRight: {\n textAlign: 'right'\n },\n\n /* Styles applied to the root element if `align=\"justify\"`. */\n alignJustify: {\n textAlign: 'justify'\n },\n\n /* Styles applied to the root element if `nowrap={true}`. */\n noWrap: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap'\n },\n\n /* Styles applied to the root element if `gutterBottom={true}`. */\n gutterBottom: {\n marginBottom: '0.35em'\n },\n\n /* Styles applied to the root element if `paragraph={true}`. */\n paragraph: {\n marginBottom: 16\n },\n\n /* Styles applied to the root element if `color=\"inherit\"`. */\n colorInherit: {\n color: 'inherit'\n },\n\n /* Styles applied to the root element if `color=\"primary\"`. */\n colorPrimary: {\n color: theme.palette.primary.main\n },\n\n /* Styles applied to the root element if `color=\"secondary\"`. */\n colorSecondary: {\n color: theme.palette.secondary.main\n },\n\n /* Styles applied to the root element if `color=\"textPrimary\"`. */\n colorTextPrimary: {\n color: theme.palette.text.primary\n },\n\n /* Styles applied to the root element if `color=\"textSecondary\"`. */\n colorTextSecondary: {\n color: theme.palette.text.secondary\n },\n\n /* Styles applied to the root element if `color=\"error\"`. */\n colorError: {\n color: theme.palette.error.main\n },\n\n /* Styles applied to the root element if `display=\"inline\"`. */\n displayInline: {\n display: 'inline'\n },\n\n /* Styles applied to the root element if `display=\"block\"`. */\n displayBlock: {\n display: 'block'\n }\n };\n};\nvar defaultVariantMapping = {\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n h5: 'h5',\n h6: 'h6',\n subtitle1: 'h6',\n subtitle2: 'h6',\n body1: 'p',\n body2: 'p'\n};\nvar Typography = /*#__PURE__*/React.forwardRef(function Typography(props, ref) {\n var _props$align = props.align,\n align = _props$align === void 0 ? 'inherit' : _props$align,\n classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'initial' : _props$color,\n component = props.component,\n _props$display = props.display,\n display = _props$display === void 0 ? 'initial' : _props$display,\n _props$gutterBottom = props.gutterBottom,\n gutterBottom = _props$gutterBottom === void 0 ? false : _props$gutterBottom,\n _props$noWrap = props.noWrap,\n noWrap = _props$noWrap === void 0 ? false : _props$noWrap,\n _props$paragraph = props.paragraph,\n paragraph = _props$paragraph === void 0 ? false : _props$paragraph,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'body1' : _props$variant,\n _props$variantMapping = props.variantMapping,\n variantMapping = _props$variantMapping === void 0 ? defaultVariantMapping : _props$variantMapping,\n other = _objectWithoutProperties(props, [\"align\", \"classes\", \"className\", \"color\", \"component\", \"display\", \"gutterBottom\", \"noWrap\", \"paragraph\", \"variant\", \"variantMapping\"]);\n\n var Component = component || (paragraph ? 'p' : variantMapping[variant] || defaultVariantMapping[variant]) || 'span';\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, className, variant !== 'inherit' && classes[variant], color !== 'initial' && classes[\"color\".concat(capitalize(color))], noWrap && classes.noWrap, gutterBottom && classes.gutterBottom, paragraph && classes.paragraph, align !== 'inherit' && classes[\"align\".concat(capitalize(align))], display !== 'initial' && classes[\"display\".concat(capitalize(display))]),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default withStyles(styles, {\n name: 'MuiTypography'\n})(Typography);","import React from 'react';\nimport ThemeContext from './ThemeContext';\nexport default function useTheme() {\n var theme = React.useContext(ThemeContext);\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(theme);\n }\n\n return theme;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@material-ui/utils';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n userSelect: 'none',\n width: '1em',\n height: '1em',\n display: 'inline-block',\n fill: 'currentColor',\n flexShrink: 0,\n fontSize: theme.typography.pxToRem(24),\n transition: theme.transitions.create('fill', {\n duration: theme.transitions.duration.shorter\n })\n },\n\n /* Styles applied to the root element if `color=\"primary\"`. */\n colorPrimary: {\n color: theme.palette.primary.main\n },\n\n /* Styles applied to the root element if `color=\"secondary\"`. */\n colorSecondary: {\n color: theme.palette.secondary.main\n },\n\n /* Styles applied to the root element if `color=\"action\"`. */\n colorAction: {\n color: theme.palette.action.active\n },\n\n /* Styles applied to the root element if `color=\"error\"`. */\n colorError: {\n color: theme.palette.error.main\n },\n\n /* Styles applied to the root element if `color=\"disabled\"`. */\n colorDisabled: {\n color: theme.palette.action.disabled\n },\n\n /* Styles applied to the root element if `fontSize=\"inherit\"`. */\n fontSizeInherit: {\n fontSize: 'inherit'\n },\n\n /* Styles applied to the root element if `fontSize=\"small\"`. */\n fontSizeSmall: {\n fontSize: theme.typography.pxToRem(20)\n },\n\n /* Styles applied to the root element if `fontSize=\"large\"`. */\n fontSizeLarge: {\n fontSize: theme.typography.pxToRem(35)\n }\n };\n};\nvar SvgIcon = /*#__PURE__*/React.forwardRef(function SvgIcon(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'inherit' : _props$color,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'svg' : _props$component,\n _props$fontSize = props.fontSize,\n fontSize = _props$fontSize === void 0 ? 'medium' : _props$fontSize,\n htmlColor = props.htmlColor,\n titleAccess = props.titleAccess,\n _props$viewBox = props.viewBox,\n viewBox = _props$viewBox === void 0 ? '0 0 24 24' : _props$viewBox,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"color\", \"component\", \"fontSize\", \"htmlColor\", \"titleAccess\", \"viewBox\"]);\n\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, className, color !== 'inherit' && classes[\"color\".concat(capitalize(color))], fontSize !== 'default' && fontSize !== 'medium' && classes[\"fontSize\".concat(capitalize(fontSize))]),\n focusable: \"false\",\n viewBox: viewBox,\n color: htmlColor,\n \"aria-hidden\": titleAccess ? undefined : true,\n role: titleAccess ? 'img' : undefined,\n ref: ref\n }, other), children, titleAccess ? /*#__PURE__*/React.createElement(\"title\", null, titleAccess) : null);\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nSvgIcon.muiName = 'SvgIcon';\nexport default withStyles(styles, {\n name: 'MuiSvgIcon'\n})(SvgIcon);","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport { alpha } from '../styles/colorManipulator';\nimport ButtonBase from '../ButtonBase';\nimport capitalize from '../utils/capitalize';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: _extends({}, theme.typography.button, {\n boxSizing: 'border-box',\n minWidth: 64,\n padding: '6px 16px',\n borderRadius: theme.shape.borderRadius,\n color: theme.palette.text.primary,\n transition: theme.transitions.create(['background-color', 'box-shadow', 'border'], {\n duration: theme.transitions.duration.short\n }),\n '&:hover': {\n textDecoration: 'none',\n backgroundColor: alpha(theme.palette.text.primary, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n },\n '&$disabled': {\n backgroundColor: 'transparent'\n }\n },\n '&$disabled': {\n color: theme.palette.action.disabled\n }\n }),\n\n /* Styles applied to the span element that wraps the children. */\n label: {\n width: '100%',\n // Ensure the correct width for iOS Safari\n display: 'inherit',\n alignItems: 'inherit',\n justifyContent: 'inherit'\n },\n\n /* Styles applied to the root element if `variant=\"text\"`. */\n text: {\n padding: '6px 8px'\n },\n\n /* Styles applied to the root element if `variant=\"text\"` and `color=\"primary\"`. */\n textPrimary: {\n color: theme.palette.primary.main,\n '&:hover': {\n backgroundColor: alpha(theme.palette.primary.main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n },\n\n /* Styles applied to the root element if `variant=\"text\"` and `color=\"secondary\"`. */\n textSecondary: {\n color: theme.palette.secondary.main,\n '&:hover': {\n backgroundColor: alpha(theme.palette.secondary.main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n },\n\n /* Styles applied to the root element if `variant=\"outlined\"`. */\n outlined: {\n padding: '5px 15px',\n border: \"1px solid \".concat(theme.palette.type === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)'),\n '&$disabled': {\n border: \"1px solid \".concat(theme.palette.action.disabledBackground)\n }\n },\n\n /* Styles applied to the root element if `variant=\"outlined\"` and `color=\"primary\"`. */\n outlinedPrimary: {\n color: theme.palette.primary.main,\n border: \"1px solid \".concat(alpha(theme.palette.primary.main, 0.5)),\n '&:hover': {\n border: \"1px solid \".concat(theme.palette.primary.main),\n backgroundColor: alpha(theme.palette.primary.main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n },\n\n /* Styles applied to the root element if `variant=\"outlined\"` and `color=\"secondary\"`. */\n outlinedSecondary: {\n color: theme.palette.secondary.main,\n border: \"1px solid \".concat(alpha(theme.palette.secondary.main, 0.5)),\n '&:hover': {\n border: \"1px solid \".concat(theme.palette.secondary.main),\n backgroundColor: alpha(theme.palette.secondary.main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n },\n '&$disabled': {\n border: \"1px solid \".concat(theme.palette.action.disabled)\n }\n },\n\n /* Styles applied to the root element if `variant=\"contained\"`. */\n contained: {\n color: theme.palette.getContrastText(theme.palette.grey[300]),\n backgroundColor: theme.palette.grey[300],\n boxShadow: theme.shadows[2],\n '&:hover': {\n backgroundColor: theme.palette.grey.A100,\n boxShadow: theme.shadows[4],\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n boxShadow: theme.shadows[2],\n backgroundColor: theme.palette.grey[300]\n },\n '&$disabled': {\n backgroundColor: theme.palette.action.disabledBackground\n }\n },\n '&$focusVisible': {\n boxShadow: theme.shadows[6]\n },\n '&:active': {\n boxShadow: theme.shadows[8]\n },\n '&$disabled': {\n color: theme.palette.action.disabled,\n boxShadow: theme.shadows[0],\n backgroundColor: theme.palette.action.disabledBackground\n }\n },\n\n /* Styles applied to the root element if `variant=\"contained\"` and `color=\"primary\"`. */\n containedPrimary: {\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.primary.main,\n '&:hover': {\n backgroundColor: theme.palette.primary.dark,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: theme.palette.primary.main\n }\n }\n },\n\n /* Styles applied to the root element if `variant=\"contained\"` and `color=\"secondary\"`. */\n containedSecondary: {\n color: theme.palette.secondary.contrastText,\n backgroundColor: theme.palette.secondary.main,\n '&:hover': {\n backgroundColor: theme.palette.secondary.dark,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: theme.palette.secondary.main\n }\n }\n },\n\n /* Styles applied to the root element if `disableElevation={true}`. */\n disableElevation: {\n boxShadow: 'none',\n '&:hover': {\n boxShadow: 'none'\n },\n '&$focusVisible': {\n boxShadow: 'none'\n },\n '&:active': {\n boxShadow: 'none'\n },\n '&$disabled': {\n boxShadow: 'none'\n }\n },\n\n /* Pseudo-class applied to the ButtonBase root element if the button is keyboard focused. */\n focusVisible: {},\n\n /* Pseudo-class applied to the root element if `disabled={true}`. */\n disabled: {},\n\n /* Styles applied to the root element if `color=\"inherit\"`. */\n colorInherit: {\n color: 'inherit',\n borderColor: 'currentColor'\n },\n\n /* Styles applied to the root element if `size=\"small\"` and `variant=\"text\"`. */\n textSizeSmall: {\n padding: '4px 5px',\n fontSize: theme.typography.pxToRem(13)\n },\n\n /* Styles applied to the root element if `size=\"large\"` and `variant=\"text\"`. */\n textSizeLarge: {\n padding: '8px 11px',\n fontSize: theme.typography.pxToRem(15)\n },\n\n /* Styles applied to the root element if `size=\"small\"` and `variant=\"outlined\"`. */\n outlinedSizeSmall: {\n padding: '3px 9px',\n fontSize: theme.typography.pxToRem(13)\n },\n\n /* Styles applied to the root element if `size=\"large\"` and `variant=\"outlined\"`. */\n outlinedSizeLarge: {\n padding: '7px 21px',\n fontSize: theme.typography.pxToRem(15)\n },\n\n /* Styles applied to the root element if `size=\"small\"` and `variant=\"contained\"`. */\n containedSizeSmall: {\n padding: '4px 10px',\n fontSize: theme.typography.pxToRem(13)\n },\n\n /* Styles applied to the root element if `size=\"large\"` and `variant=\"contained\"`. */\n containedSizeLarge: {\n padding: '8px 22px',\n fontSize: theme.typography.pxToRem(15)\n },\n\n /* Styles applied to the root element if `size=\"small\"`. */\n sizeSmall: {},\n\n /* Styles applied to the root element if `size=\"large\"`. */\n sizeLarge: {},\n\n /* Styles applied to the root element if `fullWidth={true}`. */\n fullWidth: {\n width: '100%'\n },\n\n /* Styles applied to the startIcon element if supplied. */\n startIcon: {\n display: 'inherit',\n marginRight: 8,\n marginLeft: -4,\n '&$iconSizeSmall': {\n marginLeft: -2\n }\n },\n\n /* Styles applied to the endIcon element if supplied. */\n endIcon: {\n display: 'inherit',\n marginRight: -4,\n marginLeft: 8,\n '&$iconSizeSmall': {\n marginRight: -2\n }\n },\n\n /* Styles applied to the icon element if supplied and `size=\"small\"`. */\n iconSizeSmall: {\n '& > *:first-child': {\n fontSize: 18\n }\n },\n\n /* Styles applied to the icon element if supplied and `size=\"medium\"`. */\n iconSizeMedium: {\n '& > *:first-child': {\n fontSize: 20\n }\n },\n\n /* Styles applied to the icon element if supplied and `size=\"large\"`. */\n iconSizeLarge: {\n '& > *:first-child': {\n fontSize: 22\n }\n }\n };\n};\nvar Button = /*#__PURE__*/React.forwardRef(function Button(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'default' : _props$color,\n _props$component = props.component,\n component = _props$component === void 0 ? 'button' : _props$component,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n _props$disableElevati = props.disableElevation,\n disableElevation = _props$disableElevati === void 0 ? false : _props$disableElevati,\n _props$disableFocusRi = props.disableFocusRipple,\n disableFocusRipple = _props$disableFocusRi === void 0 ? false : _props$disableFocusRi,\n endIconProp = props.endIcon,\n focusVisibleClassName = props.focusVisibleClassName,\n _props$fullWidth = props.fullWidth,\n fullWidth = _props$fullWidth === void 0 ? false : _props$fullWidth,\n _props$size = props.size,\n size = _props$size === void 0 ? 'medium' : _props$size,\n startIconProp = props.startIcon,\n _props$type = props.type,\n type = _props$type === void 0 ? 'button' : _props$type,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'text' : _props$variant,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"color\", \"component\", \"disabled\", \"disableElevation\", \"disableFocusRipple\", \"endIcon\", \"focusVisibleClassName\", \"fullWidth\", \"size\", \"startIcon\", \"type\", \"variant\"]);\n\n var startIcon = startIconProp && /*#__PURE__*/React.createElement(\"span\", {\n className: clsx(classes.startIcon, classes[\"iconSize\".concat(capitalize(size))])\n }, startIconProp);\n var endIcon = endIconProp && /*#__PURE__*/React.createElement(\"span\", {\n className: clsx(classes.endIcon, classes[\"iconSize\".concat(capitalize(size))])\n }, endIconProp);\n return /*#__PURE__*/React.createElement(ButtonBase, _extends({\n className: clsx(classes.root, classes[variant], className, color === 'inherit' ? classes.colorInherit : color !== 'default' && classes[\"\".concat(variant).concat(capitalize(color))], size !== 'medium' && [classes[\"\".concat(variant, \"Size\").concat(capitalize(size))], classes[\"size\".concat(capitalize(size))]], disableElevation && classes.disableElevation, disabled && classes.disabled, fullWidth && classes.fullWidth),\n component: component,\n disabled: disabled,\n focusRipple: !disableFocusRipple,\n focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n ref: ref,\n type: type\n }, other), /*#__PURE__*/React.createElement(\"span\", {\n className: classes.label\n }, startIcon, children, endIcon));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default withStyles(styles, {\n name: 'MuiButton'\n})(Button);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport { exactProp } from '@material-ui/utils';\nimport ThemeContext from '../useTheme/ThemeContext';\nimport useTheme from '../useTheme';\nimport nested from './nested'; // To support composition of theme.\n\nfunction mergeOuterLocalTheme(outerTheme, localTheme) {\n if (typeof localTheme === 'function') {\n var mergedTheme = localTheme(outerTheme);\n\n if (process.env.NODE_ENV !== 'production') {\n if (!mergedTheme) {\n console.error(['Material-UI: You should return an object from your theme function, i.e.', ' ({})} />'].join('\\n'));\n }\n }\n\n return mergedTheme;\n }\n\n return _extends({}, outerTheme, localTheme);\n}\n/**\n * This component takes a `theme` prop.\n * It makes the `theme` available down the React tree thanks to React context.\n * This component should preferably be used at **the root of your component tree**.\n */\n\n\nfunction ThemeProvider(props) {\n var children = props.children,\n localTheme = props.theme;\n var outerTheme = useTheme();\n\n if (process.env.NODE_ENV !== 'production') {\n if (outerTheme === null && typeof localTheme === 'function') {\n console.error(['Material-UI: You are providing a theme function prop to the ThemeProvider component:', ' outerTheme} />', '', 'However, no outer theme is present.', 'Make sure a theme is already injected higher in the React tree ' + 'or provide a theme object.'].join('\\n'));\n }\n }\n\n var theme = React.useMemo(function () {\n var output = outerTheme === null ? localTheme : mergeOuterLocalTheme(outerTheme, localTheme);\n\n if (output != null) {\n output[nested] = outerTheme !== null;\n }\n\n return output;\n }, [localTheme, outerTheme]);\n return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n value: theme\n }, children);\n}\n\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\n\nif (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? void 0 : void 0;\n}\n\nexport default ThemeProvider;","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && /*#__PURE__*/isValidElement(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return /*#__PURE__*/cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (! /*#__PURE__*/isValidElement(child)) return;\n var hasPrev = (key in prevChildMapping);\n var hasNext = (key in nextChildMapping);\n var prevChild = prevChildMapping[key];\n var isLeaving = /*#__PURE__*/isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = /*#__PURE__*/cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = /*#__PURE__*/cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && /*#__PURE__*/isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = /*#__PURE__*/cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n};\n/**\n * The `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the ``.\n *\n * Note that `` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n } // node is `undefined` when user provided `nodeRef` prop\n ;\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = getChildMapping(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","import * as React from 'react';\nimport clsx from 'clsx';\nimport useEventCallback from '../utils/useEventCallback';\nvar useEnhancedEffect = typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect;\n/**\n * @ignore - internal component.\n */\n\nfunction Ripple(props) {\n var classes = props.classes,\n _props$pulsate = props.pulsate,\n pulsate = _props$pulsate === void 0 ? false : _props$pulsate,\n rippleX = props.rippleX,\n rippleY = props.rippleY,\n rippleSize = props.rippleSize,\n inProp = props.in,\n _props$onExited = props.onExited,\n onExited = _props$onExited === void 0 ? function () {} : _props$onExited,\n timeout = props.timeout;\n\n var _React$useState = React.useState(false),\n leaving = _React$useState[0],\n setLeaving = _React$useState[1];\n\n var rippleClassName = clsx(classes.ripple, classes.rippleVisible, pulsate && classes.ripplePulsate);\n var rippleStyles = {\n width: rippleSize,\n height: rippleSize,\n top: -(rippleSize / 2) + rippleY,\n left: -(rippleSize / 2) + rippleX\n };\n var childClassName = clsx(classes.child, leaving && classes.childLeaving, pulsate && classes.childPulsate);\n var handleExited = useEventCallback(onExited); // Ripple is used for user feedback (e.g. click or press) so we want to apply styles with the highest priority\n\n useEnhancedEffect(function () {\n if (!inProp) {\n // react-transition-group#onExit\n setLeaving(true); // react-transition-group#onExited\n\n var timeoutId = setTimeout(handleExited, timeout);\n return function () {\n clearTimeout(timeoutId);\n };\n }\n\n return undefined;\n }, [handleExited, inProp, timeout]);\n return /*#__PURE__*/React.createElement(\"span\", {\n className: rippleClassName,\n style: rippleStyles\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: childClassName\n }));\n}\n\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default Ripple;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport { TransitionGroup } from 'react-transition-group';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport Ripple from './Ripple';\nvar DURATION = 550;\nexport var DELAY_RIPPLE = 80;\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n overflow: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n zIndex: 0,\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n borderRadius: 'inherit'\n },\n\n /* Styles applied to the internal `Ripple` components `ripple` class. */\n ripple: {\n opacity: 0,\n position: 'absolute'\n },\n\n /* Styles applied to the internal `Ripple` components `rippleVisible` class. */\n rippleVisible: {\n opacity: 0.3,\n transform: 'scale(1)',\n animation: \"$enter \".concat(DURATION, \"ms \").concat(theme.transitions.easing.easeInOut)\n },\n\n /* Styles applied to the internal `Ripple` components `ripplePulsate` class. */\n ripplePulsate: {\n animationDuration: \"\".concat(theme.transitions.duration.shorter, \"ms\")\n },\n\n /* Styles applied to the internal `Ripple` components `child` class. */\n child: {\n opacity: 1,\n display: 'block',\n width: '100%',\n height: '100%',\n borderRadius: '50%',\n backgroundColor: 'currentColor'\n },\n\n /* Styles applied to the internal `Ripple` components `childLeaving` class. */\n childLeaving: {\n opacity: 0,\n animation: \"$exit \".concat(DURATION, \"ms \").concat(theme.transitions.easing.easeInOut)\n },\n\n /* Styles applied to the internal `Ripple` components `childPulsate` class. */\n childPulsate: {\n position: 'absolute',\n left: 0,\n top: 0,\n animation: \"$pulsate 2500ms \".concat(theme.transitions.easing.easeInOut, \" 200ms infinite\")\n },\n '@keyframes enter': {\n '0%': {\n transform: 'scale(0)',\n opacity: 0.1\n },\n '100%': {\n transform: 'scale(1)',\n opacity: 0.3\n }\n },\n '@keyframes exit': {\n '0%': {\n opacity: 1\n },\n '100%': {\n opacity: 0\n }\n },\n '@keyframes pulsate': {\n '0%': {\n transform: 'scale(1)'\n },\n '50%': {\n transform: 'scale(0.92)'\n },\n '100%': {\n transform: 'scale(1)'\n }\n }\n };\n};\n/**\n * @ignore - internal component.\n *\n * TODO v5: Make private\n */\n\nvar TouchRipple = /*#__PURE__*/React.forwardRef(function TouchRipple(props, ref) {\n var _props$center = props.center,\n centerProp = _props$center === void 0 ? false : _props$center,\n classes = props.classes,\n className = props.className,\n other = _objectWithoutProperties(props, [\"center\", \"classes\", \"className\"]);\n\n var _React$useState = React.useState([]),\n ripples = _React$useState[0],\n setRipples = _React$useState[1];\n\n var nextKey = React.useRef(0);\n var rippleCallback = React.useRef(null);\n React.useEffect(function () {\n if (rippleCallback.current) {\n rippleCallback.current();\n rippleCallback.current = null;\n }\n }, [ripples]); // Used to filter out mouse emulated events on mobile.\n\n var ignoringMouseDown = React.useRef(false); // We use a timer in order to only show the ripples for touch \"click\" like events.\n // We don't want to display the ripple for touch scroll events.\n\n var startTimer = React.useRef(null); // This is the hook called once the previous timeout is ready.\n\n var startTimerCommit = React.useRef(null);\n var container = React.useRef(null);\n React.useEffect(function () {\n return function () {\n clearTimeout(startTimer.current);\n };\n }, []);\n var startCommit = React.useCallback(function (params) {\n var pulsate = params.pulsate,\n rippleX = params.rippleX,\n rippleY = params.rippleY,\n rippleSize = params.rippleSize,\n cb = params.cb;\n setRipples(function (oldRipples) {\n return [].concat(_toConsumableArray(oldRipples), [/*#__PURE__*/React.createElement(Ripple, {\n key: nextKey.current,\n classes: classes,\n timeout: DURATION,\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize\n })]);\n });\n nextKey.current += 1;\n rippleCallback.current = cb;\n }, [classes]);\n var start = React.useCallback(function () {\n var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var cb = arguments.length > 2 ? arguments[2] : undefined;\n var _options$pulsate = options.pulsate,\n pulsate = _options$pulsate === void 0 ? false : _options$pulsate,\n _options$center = options.center,\n center = _options$center === void 0 ? centerProp || options.pulsate : _options$center,\n _options$fakeElement = options.fakeElement,\n fakeElement = _options$fakeElement === void 0 ? false : _options$fakeElement;\n\n if (event.type === 'mousedown' && ignoringMouseDown.current) {\n ignoringMouseDown.current = false;\n return;\n }\n\n if (event.type === 'touchstart') {\n ignoringMouseDown.current = true;\n }\n\n var element = fakeElement ? null : container.current;\n var rect = element ? element.getBoundingClientRect() : {\n width: 0,\n height: 0,\n left: 0,\n top: 0\n }; // Get the size of the ripple\n\n var rippleX;\n var rippleY;\n var rippleSize;\n\n if (center || event.clientX === 0 && event.clientY === 0 || !event.clientX && !event.touches) {\n rippleX = Math.round(rect.width / 2);\n rippleY = Math.round(rect.height / 2);\n } else {\n var _ref = event.touches ? event.touches[0] : event,\n clientX = _ref.clientX,\n clientY = _ref.clientY;\n\n rippleX = Math.round(clientX - rect.left);\n rippleY = Math.round(clientY - rect.top);\n }\n\n if (center) {\n rippleSize = Math.sqrt((2 * Math.pow(rect.width, 2) + Math.pow(rect.height, 2)) / 3); // For some reason the animation is broken on Mobile Chrome if the size if even.\n\n if (rippleSize % 2 === 0) {\n rippleSize += 1;\n }\n } else {\n var sizeX = Math.max(Math.abs((element ? element.clientWidth : 0) - rippleX), rippleX) * 2 + 2;\n var sizeY = Math.max(Math.abs((element ? element.clientHeight : 0) - rippleY), rippleY) * 2 + 2;\n rippleSize = Math.sqrt(Math.pow(sizeX, 2) + Math.pow(sizeY, 2));\n } // Touche devices\n\n\n if (event.touches) {\n // check that this isn't another touchstart due to multitouch\n // otherwise we will only clear a single timer when unmounting while two\n // are running\n if (startTimerCommit.current === null) {\n // Prepare the ripple effect.\n startTimerCommit.current = function () {\n startCommit({\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize,\n cb: cb\n });\n }; // Delay the execution of the ripple effect.\n\n\n startTimer.current = setTimeout(function () {\n if (startTimerCommit.current) {\n startTimerCommit.current();\n startTimerCommit.current = null;\n }\n }, DELAY_RIPPLE); // We have to make a tradeoff with this value.\n }\n } else {\n startCommit({\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize,\n cb: cb\n });\n }\n }, [centerProp, startCommit]);\n var pulsate = React.useCallback(function () {\n start({}, {\n pulsate: true\n });\n }, [start]);\n var stop = React.useCallback(function (event, cb) {\n clearTimeout(startTimer.current); // The touch interaction occurs too quickly.\n // We still want to show ripple effect.\n\n if (event.type === 'touchend' && startTimerCommit.current) {\n event.persist();\n startTimerCommit.current();\n startTimerCommit.current = null;\n startTimer.current = setTimeout(function () {\n stop(event, cb);\n });\n return;\n }\n\n startTimerCommit.current = null;\n setRipples(function (oldRipples) {\n if (oldRipples.length > 0) {\n return oldRipples.slice(1);\n }\n\n return oldRipples;\n });\n rippleCallback.current = cb;\n }, []);\n React.useImperativeHandle(ref, function () {\n return {\n pulsate: pulsate,\n start: start,\n stop: stop\n };\n }, [pulsate, start, stop]);\n return /*#__PURE__*/React.createElement(\"span\", _extends({\n className: clsx(classes.root, className),\n ref: container\n }, other), /*#__PURE__*/React.createElement(TransitionGroup, {\n component: null,\n exit: true\n }, ripples));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default withStyles(styles, {\n flip: false,\n name: 'MuiTouchRipple'\n})( /*#__PURE__*/React.memo(TouchRipple));","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport clsx from 'clsx';\nimport { elementTypeAcceptingRef, refType } from '@material-ui/utils';\nimport useForkRef from '../utils/useForkRef';\nimport useEventCallback from '../utils/useEventCallback';\nimport deprecatedPropType from '../utils/deprecatedPropType';\nimport withStyles from '../styles/withStyles';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport TouchRipple from './TouchRipple';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n WebkitTapHighlightColor: 'transparent',\n backgroundColor: 'transparent',\n // Reset default value\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n border: 0,\n margin: 0,\n // Remove the margin in Safari\n borderRadius: 0,\n padding: 0,\n // Remove the padding in Firefox\n cursor: 'pointer',\n userSelect: 'none',\n verticalAlign: 'middle',\n '-moz-appearance': 'none',\n // Reset\n '-webkit-appearance': 'none',\n // Reset\n textDecoration: 'none',\n // So we take precedent over the style of a native element.\n color: 'inherit',\n '&::-moz-focus-inner': {\n borderStyle: 'none' // Remove Firefox dotted outline.\n\n },\n '&$disabled': {\n pointerEvents: 'none',\n // Disable link interactions\n cursor: 'default'\n },\n '@media print': {\n colorAdjust: 'exact'\n }\n },\n\n /* Pseudo-class applied to the root element if `disabled={true}`. */\n disabled: {},\n\n /* Pseudo-class applied to the root element if keyboard focused. */\n focusVisible: {}\n};\n/**\n * `ButtonBase` contains as few styles as possible.\n * It aims to be a simple building block for creating a button.\n * It contains a load of style reset and some focus/ripple logic.\n */\n\nvar ButtonBase = /*#__PURE__*/React.forwardRef(function ButtonBase(props, ref) {\n var action = props.action,\n buttonRefProp = props.buttonRef,\n _props$centerRipple = props.centerRipple,\n centerRipple = _props$centerRipple === void 0 ? false : _props$centerRipple,\n children = props.children,\n classes = props.classes,\n className = props.className,\n _props$component = props.component,\n component = _props$component === void 0 ? 'button' : _props$component,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n _props$disableRipple = props.disableRipple,\n disableRipple = _props$disableRipple === void 0 ? false : _props$disableRipple,\n _props$disableTouchRi = props.disableTouchRipple,\n disableTouchRipple = _props$disableTouchRi === void 0 ? false : _props$disableTouchRi,\n _props$focusRipple = props.focusRipple,\n focusRipple = _props$focusRipple === void 0 ? false : _props$focusRipple,\n focusVisibleClassName = props.focusVisibleClassName,\n onBlur = props.onBlur,\n onClick = props.onClick,\n onFocus = props.onFocus,\n onFocusVisible = props.onFocusVisible,\n onKeyDown = props.onKeyDown,\n onKeyUp = props.onKeyUp,\n onMouseDown = props.onMouseDown,\n onMouseLeave = props.onMouseLeave,\n onMouseUp = props.onMouseUp,\n onTouchEnd = props.onTouchEnd,\n onTouchMove = props.onTouchMove,\n onTouchStart = props.onTouchStart,\n onDragLeave = props.onDragLeave,\n _props$tabIndex = props.tabIndex,\n tabIndex = _props$tabIndex === void 0 ? 0 : _props$tabIndex,\n TouchRippleProps = props.TouchRippleProps,\n _props$type = props.type,\n type = _props$type === void 0 ? 'button' : _props$type,\n other = _objectWithoutProperties(props, [\"action\", \"buttonRef\", \"centerRipple\", \"children\", \"classes\", \"className\", \"component\", \"disabled\", \"disableRipple\", \"disableTouchRipple\", \"focusRipple\", \"focusVisibleClassName\", \"onBlur\", \"onClick\", \"onFocus\", \"onFocusVisible\", \"onKeyDown\", \"onKeyUp\", \"onMouseDown\", \"onMouseLeave\", \"onMouseUp\", \"onTouchEnd\", \"onTouchMove\", \"onTouchStart\", \"onDragLeave\", \"tabIndex\", \"TouchRippleProps\", \"type\"]);\n\n var buttonRef = React.useRef(null);\n\n function getButtonNode() {\n // #StrictMode ready\n return ReactDOM.findDOMNode(buttonRef.current);\n }\n\n var rippleRef = React.useRef(null);\n\n var _React$useState = React.useState(false),\n focusVisible = _React$useState[0],\n setFocusVisible = _React$useState[1];\n\n if (disabled && focusVisible) {\n setFocusVisible(false);\n }\n\n var _useIsFocusVisible = useIsFocusVisible(),\n isFocusVisible = _useIsFocusVisible.isFocusVisible,\n onBlurVisible = _useIsFocusVisible.onBlurVisible,\n focusVisibleRef = _useIsFocusVisible.ref;\n\n React.useImperativeHandle(action, function () {\n return {\n focusVisible: function focusVisible() {\n setFocusVisible(true);\n buttonRef.current.focus();\n }\n };\n }, []);\n React.useEffect(function () {\n if (focusVisible && focusRipple && !disableRipple) {\n rippleRef.current.pulsate();\n }\n }, [disableRipple, focusRipple, focusVisible]);\n\n function useRippleHandler(rippleAction, eventCallback) {\n var skipRippleAction = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : disableTouchRipple;\n return useEventCallback(function (event) {\n if (eventCallback) {\n eventCallback(event);\n }\n\n var ignore = skipRippleAction;\n\n if (!ignore && rippleRef.current) {\n rippleRef.current[rippleAction](event);\n }\n\n return true;\n });\n }\n\n var handleMouseDown = useRippleHandler('start', onMouseDown);\n var handleDragLeave = useRippleHandler('stop', onDragLeave);\n var handleMouseUp = useRippleHandler('stop', onMouseUp);\n var handleMouseLeave = useRippleHandler('stop', function (event) {\n if (focusVisible) {\n event.preventDefault();\n }\n\n if (onMouseLeave) {\n onMouseLeave(event);\n }\n });\n var handleTouchStart = useRippleHandler('start', onTouchStart);\n var handleTouchEnd = useRippleHandler('stop', onTouchEnd);\n var handleTouchMove = useRippleHandler('stop', onTouchMove);\n var handleBlur = useRippleHandler('stop', function (event) {\n if (focusVisible) {\n onBlurVisible(event);\n setFocusVisible(false);\n }\n\n if (onBlur) {\n onBlur(event);\n }\n }, false);\n var handleFocus = useEventCallback(function (event) {\n // Fix for https://github.com/facebook/react/issues/7769\n if (!buttonRef.current) {\n buttonRef.current = event.currentTarget;\n }\n\n if (isFocusVisible(event)) {\n setFocusVisible(true);\n\n if (onFocusVisible) {\n onFocusVisible(event);\n }\n }\n\n if (onFocus) {\n onFocus(event);\n }\n });\n\n var isNonNativeButton = function isNonNativeButton() {\n var button = getButtonNode();\n return component && component !== 'button' && !(button.tagName === 'A' && button.href);\n };\n /**\n * IE 11 shim for https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat\n */\n\n\n var keydownRef = React.useRef(false);\n var handleKeyDown = useEventCallback(function (event) {\n // Check if key is already down to avoid repeats being counted as multiple activations\n if (focusRipple && !keydownRef.current && focusVisible && rippleRef.current && event.key === ' ') {\n keydownRef.current = true;\n event.persist();\n rippleRef.current.stop(event, function () {\n rippleRef.current.start(event);\n });\n }\n\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === ' ') {\n event.preventDefault();\n }\n\n if (onKeyDown) {\n onKeyDown(event);\n } // Keyboard accessibility for non interactive elements\n\n\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === 'Enter' && !disabled) {\n event.preventDefault();\n\n if (onClick) {\n onClick(event);\n }\n }\n });\n var handleKeyUp = useEventCallback(function (event) {\n // calling preventDefault in keyUp on a will not dispatch a click event if Space is pressed\n // https://codesandbox.io/s/button-keyup-preventdefault-dn7f0\n if (focusRipple && event.key === ' ' && rippleRef.current && focusVisible && !event.defaultPrevented) {\n keydownRef.current = false;\n event.persist();\n rippleRef.current.stop(event, function () {\n rippleRef.current.pulsate(event);\n });\n }\n\n if (onKeyUp) {\n onKeyUp(event);\n } // Keyboard accessibility for non interactive elements\n\n\n if (onClick && event.target === event.currentTarget && isNonNativeButton() && event.key === ' ' && !event.defaultPrevented) {\n onClick(event);\n }\n });\n var ComponentProp = component;\n\n if (ComponentProp === 'button' && other.href) {\n ComponentProp = 'a';\n }\n\n var buttonProps = {};\n\n if (ComponentProp === 'button') {\n buttonProps.type = type;\n buttonProps.disabled = disabled;\n } else {\n if (ComponentProp !== 'a' || !other.href) {\n buttonProps.role = 'button';\n }\n\n buttonProps['aria-disabled'] = disabled;\n }\n\n var handleUserRef = useForkRef(buttonRefProp, ref);\n var handleOwnRef = useForkRef(focusVisibleRef, buttonRef);\n var handleRef = useForkRef(handleUserRef, handleOwnRef);\n\n var _React$useState2 = React.useState(false),\n mountedState = _React$useState2[0],\n setMountedState = _React$useState2[1];\n\n React.useEffect(function () {\n setMountedState(true);\n }, []);\n var enableTouchRipple = mountedState && !disableRipple && !disabled;\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(function () {\n if (enableTouchRipple && !rippleRef.current) {\n console.error(['Material-UI: The `component` prop provided to ButtonBase is invalid.', 'Please make sure the children prop is rendered in this custom component.'].join('\\n'));\n }\n }, [enableTouchRipple]);\n }\n\n return /*#__PURE__*/React.createElement(ComponentProp, _extends({\n className: clsx(classes.root, className, focusVisible && [classes.focusVisible, focusVisibleClassName], disabled && classes.disabled),\n onBlur: handleBlur,\n onClick: onClick,\n onFocus: handleFocus,\n onKeyDown: handleKeyDown,\n onKeyUp: handleKeyUp,\n onMouseDown: handleMouseDown,\n onMouseLeave: handleMouseLeave,\n onMouseUp: handleMouseUp,\n onDragLeave: handleDragLeave,\n onTouchEnd: handleTouchEnd,\n onTouchMove: handleTouchMove,\n onTouchStart: handleTouchStart,\n ref: handleRef,\n tabIndex: disabled ? -1 : tabIndex\n }, buttonProps, other), children, enableTouchRipple ?\n /*#__PURE__*/\n\n /* TouchRipple is only needed client-side, x2 boost on the server. */\n React.createElement(TouchRipple, _extends({\n ref: rippleRef,\n center: centerRipple\n }, TouchRippleProps)) : null);\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default withStyles(styles, {\n name: 'MuiButtonBase'\n})(ButtonBase);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*!\n * Select2 4.0.13\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/select2/blob/master/LICENSE.md\n */\n;\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['jquery'], factory);\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === 'object' && module.exports) {\n // Node/CommonJS\n module.exports = function (root, jQuery) {\n if (jQuery === undefined) {\n // require('jQuery') returns a factory that requires window to\n // build a jQuery instance, we normalize how we use modules\n // that require this pattern but the window provided is a noop\n // if it's defined (how jquery works)\n if (typeof window !== 'undefined') {\n jQuery = require('jquery');\n } else {\n jQuery = require('jquery')(root);\n }\n }\n\n factory(jQuery);\n return jQuery;\n };\n } else {\n // Browser globals\n factory(jQuery);\n }\n})(function (jQuery) {\n // This is needed so we can catch the AMD loader configuration and use it\n // The inner file should be wrapped (by `banner.start.js`) in a function that\n // returns the AMD loader references.\n var S2 = function () {\n // Restore the Select2 AMD loader so it can be used\n // Needed mostly in the language files, where the loader is not inserted\n if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\n var S2 = jQuery.fn.select2.amd;\n }\n\n var S2;\n\n (function () {\n if (!S2 || !S2.requirejs) {\n if (!S2) {\n S2 = {};\n } else {\n require = S2;\n }\n /**\n * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.\n * Released under MIT license, http://github.com/requirejs/almond/LICENSE\n */\n //Going sloppy to avoid 'use strict' string cost, but strict practices should\n //be followed.\n\n /*global setTimeout: false */\n\n\n var requirejs, require, define;\n\n (function (undef) {\n var main,\n _req,\n makeMap,\n handlers,\n defined = {},\n waiting = {},\n config = {},\n defining = {},\n hasOwn = Object.prototype.hasOwnProperty,\n aps = [].slice,\n jsSuffixRegExp = /\\.js$/;\n\n function hasProp(obj, prop) {\n return hasOwn.call(obj, prop);\n }\n /**\n * Given a relative module name, like ./something, normalize it to\n * a real name that can be mapped to a path.\n * @param {String} name the relative name\n * @param {String} baseName a real name that the name arg is relative\n * to.\n * @returns {String} normalized name\n */\n\n\n function normalize(name, baseName) {\n var nameParts,\n nameSegment,\n mapValue,\n foundMap,\n lastIndex,\n foundI,\n foundStarMap,\n starI,\n i,\n j,\n part,\n normalizedBaseParts,\n baseParts = baseName && baseName.split(\"/\"),\n map = config.map,\n starMap = map && map['*'] || {}; //Adjust any relative paths.\n\n if (name) {\n name = name.split('/');\n lastIndex = name.length - 1; // If wanting node ID compatibility, strip .js from end\n // of IDs. Have to do this here, and not in nameToUrl\n // because node allows either .js or non .js to map\n // to same file.\n\n if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n } // Starts with a '.' so need the baseName\n\n\n if (name[0].charAt(0) === '.' && baseParts) {\n //Convert baseName to array, and lop off the last part,\n //so that . matches that 'directory' and not name of the baseName's\n //module. For instance, baseName of 'one/two/three', maps to\n //'one/two/three.js', but we want the directory, 'one/two' for\n //this normalization.\n normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n name = normalizedBaseParts.concat(name);\n } //start trimDots\n\n\n for (i = 0; i < name.length; i++) {\n part = name[i];\n\n if (part === '.') {\n name.splice(i, 1);\n i -= 1;\n } else if (part === '..') {\n // If at the start, or previous value is still ..,\n // keep them so that when converted to a path it may\n // still work when converted to a path, even though\n // as an ID it is less than ideal. In larger point\n // releases, may be better to just kick out an error.\n if (i === 0 || i === 1 && name[2] === '..' || name[i - 1] === '..') {\n continue;\n } else if (i > 0) {\n name.splice(i - 1, 2);\n i -= 2;\n }\n }\n } //end trimDots\n\n\n name = name.join('/');\n } //Apply map config if available.\n\n\n if ((baseParts || starMap) && map) {\n nameParts = name.split('/');\n\n for (i = nameParts.length; i > 0; i -= 1) {\n nameSegment = nameParts.slice(0, i).join(\"/\");\n\n if (baseParts) {\n //Find the longest baseName segment match in the config.\n //So, do joins on the biggest to smallest lengths of baseParts.\n for (j = baseParts.length; j > 0; j -= 1) {\n mapValue = map[baseParts.slice(0, j).join('/')]; //baseName segment has config, find if it has one for\n //this name.\n\n if (mapValue) {\n mapValue = mapValue[nameSegment];\n\n if (mapValue) {\n //Match, update name to the new value.\n foundMap = mapValue;\n foundI = i;\n break;\n }\n }\n }\n }\n\n if (foundMap) {\n break;\n } //Check for a star map match, but just hold on to it,\n //if there is a shorter segment match later in a matching\n //config, then favor over this star map.\n\n\n if (!foundStarMap && starMap && starMap[nameSegment]) {\n foundStarMap = starMap[nameSegment];\n starI = i;\n }\n }\n\n if (!foundMap && foundStarMap) {\n foundMap = foundStarMap;\n foundI = starI;\n }\n\n if (foundMap) {\n nameParts.splice(0, foundI, foundMap);\n name = nameParts.join('/');\n }\n }\n\n return name;\n }\n\n function makeRequire(relName, forceSync) {\n return function () {\n //A version of a require function that passes a moduleName\n //value for items that may need to\n //look up paths relative to the moduleName\n var args = aps.call(arguments, 0); //If first arg is not require('string'), and there is only\n //one arg, it is the array form without a callback. Insert\n //a null so that the following concat is correct.\n\n if (typeof args[0] !== 'string' && args.length === 1) {\n args.push(null);\n }\n\n return _req.apply(undef, args.concat([relName, forceSync]));\n };\n }\n\n function makeNormalize(relName) {\n return function (name) {\n return normalize(name, relName);\n };\n }\n\n function makeLoad(depName) {\n return function (value) {\n defined[depName] = value;\n };\n }\n\n function callDep(name) {\n if (hasProp(waiting, name)) {\n var args = waiting[name];\n delete waiting[name];\n defining[name] = true;\n main.apply(undef, args);\n }\n\n if (!hasProp(defined, name) && !hasProp(defining, name)) {\n throw new Error('No ' + name);\n }\n\n return defined[name];\n } //Turns a plugin!resource to [plugin, resource]\n //with the plugin being undefined if the name\n //did not have a plugin prefix.\n\n\n function splitPrefix(name) {\n var prefix,\n index = name ? name.indexOf('!') : -1;\n\n if (index > -1) {\n prefix = name.substring(0, index);\n name = name.substring(index + 1, name.length);\n }\n\n return [prefix, name];\n } //Creates a parts array for a relName where first part is plugin ID,\n //second part is resource ID. Assumes relName has already been normalized.\n\n\n function makeRelParts(relName) {\n return relName ? splitPrefix(relName) : [];\n }\n /**\n * Makes a name map, normalizing the name, and using a plugin\n * for normalization if necessary. Grabs a ref to plugin\n * too, as an optimization.\n */\n\n\n makeMap = function makeMap(name, relParts) {\n var plugin,\n parts = splitPrefix(name),\n prefix = parts[0],\n relResourceName = relParts[1];\n name = parts[1];\n\n if (prefix) {\n prefix = normalize(prefix, relResourceName);\n plugin = callDep(prefix);\n } //Normalize according\n\n\n if (prefix) {\n if (plugin && plugin.normalize) {\n name = plugin.normalize(name, makeNormalize(relResourceName));\n } else {\n name = normalize(name, relResourceName);\n }\n } else {\n name = normalize(name, relResourceName);\n parts = splitPrefix(name);\n prefix = parts[0];\n name = parts[1];\n\n if (prefix) {\n plugin = callDep(prefix);\n }\n } //Using ridiculous property names for space reasons\n\n\n return {\n f: prefix ? prefix + '!' + name : name,\n //fullName\n n: name,\n pr: prefix,\n p: plugin\n };\n };\n\n function makeConfig(name) {\n return function () {\n return config && config.config && config.config[name] || {};\n };\n }\n\n handlers = {\n require: function require(name) {\n return makeRequire(name);\n },\n exports: function exports(name) {\n var e = defined[name];\n\n if (typeof e !== 'undefined') {\n return e;\n } else {\n return defined[name] = {};\n }\n },\n module: function module(name) {\n return {\n id: name,\n uri: '',\n exports: defined[name],\n config: makeConfig(name)\n };\n }\n };\n\n main = function main(name, deps, callback, relName) {\n var cjsModule,\n depName,\n ret,\n map,\n i,\n relParts,\n args = [],\n callbackType = _typeof(callback),\n usingExports; //Use name if no relName\n\n\n relName = relName || name;\n relParts = makeRelParts(relName); //Call the callback to define the module, if necessary.\n\n if (callbackType === 'undefined' || callbackType === 'function') {\n //Pull out the defined dependencies and pass the ordered\n //values to the callback.\n //Default to [require, exports, module] if no deps\n deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n\n for (i = 0; i < deps.length; i += 1) {\n map = makeMap(deps[i], relParts);\n depName = map.f; //Fast path CommonJS standard dependencies.\n\n if (depName === \"require\") {\n args[i] = handlers.require(name);\n } else if (depName === \"exports\") {\n //CommonJS module spec 1.1\n args[i] = handlers.exports(name);\n usingExports = true;\n } else if (depName === \"module\") {\n //CommonJS module spec 1.1\n cjsModule = args[i] = handlers.module(name);\n } else if (hasProp(defined, depName) || hasProp(waiting, depName) || hasProp(defining, depName)) {\n args[i] = callDep(depName);\n } else if (map.p) {\n map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n args[i] = defined[depName];\n } else {\n throw new Error(name + ' missing ' + depName);\n }\n }\n\n ret = callback ? callback.apply(defined[name], args) : undefined;\n\n if (name) {\n //If setting exports via \"module\" is in play,\n //favor that over return value and exports. After that,\n //favor a non-undefined return value over exports use.\n if (cjsModule && cjsModule.exports !== undef && cjsModule.exports !== defined[name]) {\n defined[name] = cjsModule.exports;\n } else if (ret !== undef || !usingExports) {\n //Use the return value from the function.\n defined[name] = ret;\n }\n }\n } else if (name) {\n //May just be an object definition for the module. Only\n //worry about defining if have a module name.\n defined[name] = callback;\n }\n };\n\n requirejs = require = _req = function req(deps, callback, relName, forceSync, alt) {\n if (typeof deps === \"string\") {\n if (handlers[deps]) {\n //callback in this case is really relName\n return handlers[deps](callback);\n } //Just return the module wanted. In this scenario, the\n //deps arg is the module name, and second arg (if passed)\n //is just the relName.\n //Normalize module name, if it contains . or ..\n\n\n return callDep(makeMap(deps, makeRelParts(callback)).f);\n } else if (!deps.splice) {\n //deps is a config object, not an array.\n config = deps;\n\n if (config.deps) {\n _req(config.deps, config.callback);\n }\n\n if (!callback) {\n return;\n }\n\n if (callback.splice) {\n //callback is an array, which means it is a dependency list.\n //Adjust args if there are dependencies\n deps = callback;\n callback = relName;\n relName = null;\n } else {\n deps = undef;\n }\n } //Support require(['a'])\n\n\n callback = callback || function () {}; //If relName is a function, it is an errback handler,\n //so remove it.\n\n\n if (typeof relName === 'function') {\n relName = forceSync;\n forceSync = alt;\n } //Simulate async callback;\n\n\n if (forceSync) {\n main(undef, deps, callback, relName);\n } else {\n //Using a non-zero value because of concern for what old browsers\n //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n //If want a value immediately, use require('id') instead -- something\n //that works in almond on the global level, but not guaranteed and\n //unlikely to work in other AMD implementations.\n setTimeout(function () {\n main(undef, deps, callback, relName);\n }, 4);\n }\n\n return _req;\n };\n /**\n * Just drops the config on the floor, but returns req in case\n * the config return value is used.\n */\n\n\n _req.config = function (cfg) {\n return _req(cfg);\n };\n /**\n * Expose module registry for debugging and tooling\n */\n\n\n requirejs._defined = defined;\n\n define = function define(name, deps, callback) {\n if (typeof name !== 'string') {\n throw new Error('See almond README: incorrect module build, no module name');\n } //This module may not have dependencies\n\n\n if (!deps.splice) {\n //deps is not an array, so probably means\n //an object literal or factory function for\n //the value. Adjust args.\n callback = deps;\n deps = [];\n }\n\n if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n waiting[name] = [name, deps, callback];\n }\n };\n\n define.amd = {\n jQuery: true\n };\n })();\n\n S2.requirejs = requirejs;\n S2.require = require;\n S2.define = define;\n }\n })();\n\n S2.define(\"almond\", function () {});\n /* global jQuery:false, $:false */\n\n S2.define('jquery', [], function () {\n var _$ = jQuery || $;\n\n if (_$ == null && console && console.error) {\n console.error('Select2: An instance of jQuery or a jQuery-compatible library was not ' + 'found. Make sure that you are including jQuery before Select2 on your ' + 'web page.');\n }\n\n return _$;\n });\n S2.define('select2/utils', ['jquery'], function ($) {\n var Utils = {};\n\n Utils.Extend = function (ChildClass, SuperClass) {\n var __hasProp = {}.hasOwnProperty;\n\n function BaseConstructor() {\n this.constructor = ChildClass;\n }\n\n for (var key in SuperClass) {\n if (__hasProp.call(SuperClass, key)) {\n ChildClass[key] = SuperClass[key];\n }\n }\n\n BaseConstructor.prototype = SuperClass.prototype;\n ChildClass.prototype = new BaseConstructor();\n ChildClass.__super__ = SuperClass.prototype;\n return ChildClass;\n };\n\n function getMethods(theClass) {\n var proto = theClass.prototype;\n var methods = [];\n\n for (var methodName in proto) {\n var m = proto[methodName];\n\n if (typeof m !== 'function') {\n continue;\n }\n\n if (methodName === 'constructor') {\n continue;\n }\n\n methods.push(methodName);\n }\n\n return methods;\n }\n\n Utils.Decorate = function (SuperClass, DecoratorClass) {\n var decoratedMethods = getMethods(DecoratorClass);\n var superMethods = getMethods(SuperClass);\n\n function DecoratedClass() {\n var unshift = Array.prototype.unshift;\n var argCount = DecoratorClass.prototype.constructor.length;\n var calledConstructor = SuperClass.prototype.constructor;\n\n if (argCount > 0) {\n unshift.call(arguments, SuperClass.prototype.constructor);\n calledConstructor = DecoratorClass.prototype.constructor;\n }\n\n calledConstructor.apply(this, arguments);\n }\n\n DecoratorClass.displayName = SuperClass.displayName;\n\n function ctr() {\n this.constructor = DecoratedClass;\n }\n\n DecoratedClass.prototype = new ctr();\n\n for (var m = 0; m < superMethods.length; m++) {\n var superMethod = superMethods[m];\n DecoratedClass.prototype[superMethod] = SuperClass.prototype[superMethod];\n }\n\n var calledMethod = function calledMethod(methodName) {\n // Stub out the original method if it's not decorating an actual method\n var originalMethod = function originalMethod() {};\n\n if (methodName in DecoratedClass.prototype) {\n originalMethod = DecoratedClass.prototype[methodName];\n }\n\n var decoratedMethod = DecoratorClass.prototype[methodName];\n return function () {\n var unshift = Array.prototype.unshift;\n unshift.call(arguments, originalMethod);\n return decoratedMethod.apply(this, arguments);\n };\n };\n\n for (var d = 0; d < decoratedMethods.length; d++) {\n var decoratedMethod = decoratedMethods[d];\n DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n }\n\n return DecoratedClass;\n };\n\n var Observable = function Observable() {\n this.listeners = {};\n };\n\n Observable.prototype.on = function (event, callback) {\n this.listeners = this.listeners || {};\n\n if (event in this.listeners) {\n this.listeners[event].push(callback);\n } else {\n this.listeners[event] = [callback];\n }\n };\n\n Observable.prototype.trigger = function (event) {\n var slice = Array.prototype.slice;\n var params = slice.call(arguments, 1);\n this.listeners = this.listeners || {}; // Params should always come in as an array\n\n if (params == null) {\n params = [];\n } // If there are no arguments to the event, use a temporary object\n\n\n if (params.length === 0) {\n params.push({});\n } // Set the `_type` of the first object to the event\n\n\n params[0]._type = event;\n\n if (event in this.listeners) {\n this.invoke(this.listeners[event], slice.call(arguments, 1));\n }\n\n if ('*' in this.listeners) {\n this.invoke(this.listeners['*'], arguments);\n }\n };\n\n Observable.prototype.invoke = function (listeners, params) {\n for (var i = 0, len = listeners.length; i < len; i++) {\n listeners[i].apply(this, params);\n }\n };\n\n Utils.Observable = Observable;\n\n Utils.generateChars = function (length) {\n var chars = '';\n\n for (var i = 0; i < length; i++) {\n var randomChar = Math.floor(Math.random() * 36);\n chars += randomChar.toString(36);\n }\n\n return chars;\n };\n\n Utils.bind = function (func, context) {\n return function () {\n func.apply(context, arguments);\n };\n };\n\n Utils._convertData = function (data) {\n for (var originalKey in data) {\n var keys = originalKey.split('-');\n var dataLevel = data;\n\n if (keys.length === 1) {\n continue;\n }\n\n for (var k = 0; k < keys.length; k++) {\n var key = keys[k]; // Lowercase the first letter\n // By default, dash-separated becomes camelCase\n\n key = key.substring(0, 1).toLowerCase() + key.substring(1);\n\n if (!(key in dataLevel)) {\n dataLevel[key] = {};\n }\n\n if (k == keys.length - 1) {\n dataLevel[key] = data[originalKey];\n }\n\n dataLevel = dataLevel[key];\n }\n\n delete data[originalKey];\n }\n\n return data;\n };\n\n Utils.hasScroll = function (index, el) {\n // Adapted from the function created by @ShadowScripter\n // and adapted by @BillBarry on the Stack Exchange Code Review website.\n // The original code can be found at\n // http://codereview.stackexchange.com/q/13338\n // and was designed to be used with the Sizzle selector engine.\n var $el = $(el);\n var overflowX = el.style.overflowX;\n var overflowY = el.style.overflowY; //Check both x and y declarations\n\n if (overflowX === overflowY && (overflowY === 'hidden' || overflowY === 'visible')) {\n return false;\n }\n\n if (overflowX === 'scroll' || overflowY === 'scroll') {\n return true;\n }\n\n return $el.innerHeight() < el.scrollHeight || $el.innerWidth() < el.scrollWidth;\n };\n\n Utils.escapeMarkup = function (markup) {\n var replaceMap = {\n '\\\\': '\',\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': ''',\n '/': '/'\n }; // Do not try to escape the markup if it's not a string\n\n if (typeof markup !== 'string') {\n return markup;\n }\n\n return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n return replaceMap[match];\n });\n }; // Append an array of jQuery nodes to a given element.\n\n\n Utils.appendMany = function ($element, $nodes) {\n // jQuery 1.7.x does not support $.fn.append() with an array\n // Fall back to a jQuery object collection using $.fn.add()\n if ($.fn.jquery.substr(0, 3) === '1.7') {\n var $jqNodes = $();\n $.map($nodes, function (node) {\n $jqNodes = $jqNodes.add(node);\n });\n $nodes = $jqNodes;\n }\n\n $element.append($nodes);\n }; // Cache objects in Utils.__cache instead of $.data (see #4346)\n\n\n Utils.__cache = {};\n var id = 0;\n\n Utils.GetUniqueElementId = function (element) {\n // Get a unique element Id. If element has no id,\n // creates a new unique number, stores it in the id\n // attribute and returns the new id.\n // If an id already exists, it simply returns it.\n var select2Id = element.getAttribute('data-select2-id');\n\n if (select2Id == null) {\n // If element has id, use it.\n if (element.id) {\n select2Id = element.id;\n element.setAttribute('data-select2-id', select2Id);\n } else {\n element.setAttribute('data-select2-id', ++id);\n select2Id = id.toString();\n }\n }\n\n return select2Id;\n };\n\n Utils.StoreData = function (element, name, value) {\n // Stores an item in the cache for a specified element.\n // name is the cache key.\n var id = Utils.GetUniqueElementId(element);\n\n if (!Utils.__cache[id]) {\n Utils.__cache[id] = {};\n }\n\n Utils.__cache[id][name] = value;\n };\n\n Utils.GetData = function (element, name) {\n // Retrieves a value from the cache by its key (name)\n // name is optional. If no name specified, return\n // all cache items for the specified element.\n // and for a specified element.\n var id = Utils.GetUniqueElementId(element);\n\n if (name) {\n if (Utils.__cache[id]) {\n if (Utils.__cache[id][name] != null) {\n return Utils.__cache[id][name];\n }\n\n return $(element).data(name); // Fallback to HTML5 data attribs.\n }\n\n return $(element).data(name); // Fallback to HTML5 data attribs.\n } else {\n return Utils.__cache[id];\n }\n };\n\n Utils.RemoveData = function (element) {\n // Removes all cached items for a specified element.\n var id = Utils.GetUniqueElementId(element);\n\n if (Utils.__cache[id] != null) {\n delete Utils.__cache[id];\n }\n\n element.removeAttribute('data-select2-id');\n };\n\n return Utils;\n });\n S2.define('select2/results', ['jquery', './utils'], function ($, Utils) {\n function Results($element, options, dataAdapter) {\n this.$element = $element;\n this.data = dataAdapter;\n this.options = options;\n\n Results.__super__.constructor.call(this);\n }\n\n Utils.Extend(Results, Utils.Observable);\n\n Results.prototype.render = function () {\n var $results = $('');\n\n if (this.options.get('multiple')) {\n $results.attr('aria-multiselectable', 'true');\n }\n\n this.$results = $results;\n return $results;\n };\n\n Results.prototype.clear = function () {\n this.$results.empty();\n };\n\n Results.prototype.displayMessage = function (params) {\n var escapeMarkup = this.options.get('escapeMarkup');\n this.clear();\n this.hideLoading();\n var $message = $(' ');\n var message = this.options.get('translations').get(params.message);\n $message.append(escapeMarkup(message(params.args)));\n $message[0].className += ' select2-results__message';\n this.$results.append($message);\n };\n\n Results.prototype.hideMessages = function () {\n this.$results.find('.select2-results__message').remove();\n };\n\n Results.prototype.append = function (data) {\n this.hideLoading();\n var $options = [];\n\n if (data.results == null || data.results.length === 0) {\n if (this.$results.children().length === 0) {\n this.trigger('results:message', {\n message: 'noResults'\n });\n }\n\n return;\n }\n\n data.results = this.sort(data.results);\n\n for (var d = 0; d < data.results.length; d++) {\n var item = data.results[d];\n var $option = this.option(item);\n $options.push($option);\n }\n\n this.$results.append($options);\n };\n\n Results.prototype.position = function ($results, $dropdown) {\n var $resultsContainer = $dropdown.find('.select2-results');\n $resultsContainer.append($results);\n };\n\n Results.prototype.sort = function (data) {\n var sorter = this.options.get('sorter');\n return sorter(data);\n };\n\n Results.prototype.highlightFirstItem = function () {\n var $options = this.$results.find('.select2-results__option[aria-selected]');\n var $selected = $options.filter('[aria-selected=true]'); // Check if there are any selected options\n\n if ($selected.length > 0) {\n // If there are selected options, highlight the first\n $selected.first().trigger('mouseenter');\n } else {\n // If there are no selected options, highlight the first option\n // in the dropdown\n $options.first().trigger('mouseenter');\n }\n\n this.ensureHighlightVisible();\n };\n\n Results.prototype.setClasses = function () {\n var self = this;\n this.data.current(function (selected) {\n var selectedIds = $.map(selected, function (s) {\n return s.id.toString();\n });\n var $options = self.$results.find('.select2-results__option[aria-selected]');\n $options.each(function () {\n var $option = $(this);\n var item = Utils.GetData(this, 'data'); // id needs to be converted to a string when comparing\n\n var id = '' + item.id;\n\n if (item.element != null && item.element.selected || item.element == null && $.inArray(id, selectedIds) > -1) {\n $option.attr('aria-selected', 'true');\n } else {\n $option.attr('aria-selected', 'false');\n }\n });\n });\n };\n\n Results.prototype.showLoading = function (params) {\n this.hideLoading();\n var loadingMore = this.options.get('translations').get('searching');\n var loading = {\n disabled: true,\n loading: true,\n text: loadingMore(params)\n };\n var $loading = this.option(loading);\n $loading.className += ' loading-results';\n this.$results.prepend($loading);\n };\n\n Results.prototype.hideLoading = function () {\n this.$results.find('.loading-results').remove();\n };\n\n Results.prototype.option = function (data) {\n var option = document.createElement('li');\n option.className = 'select2-results__option';\n var attrs = {\n 'role': 'option',\n 'aria-selected': 'false'\n };\n var matches = window.Element.prototype.matches || window.Element.prototype.msMatchesSelector || window.Element.prototype.webkitMatchesSelector;\n\n if (data.element != null && matches.call(data.element, ':disabled') || data.element == null && data.disabled) {\n delete attrs['aria-selected'];\n attrs['aria-disabled'] = 'true';\n }\n\n if (data.id == null) {\n delete attrs['aria-selected'];\n }\n\n if (data._resultId != null) {\n option.id = data._resultId;\n }\n\n if (data.title) {\n option.title = data.title;\n }\n\n if (data.children) {\n attrs.role = 'group';\n attrs['aria-label'] = data.text;\n delete attrs['aria-selected'];\n }\n\n for (var attr in attrs) {\n var val = attrs[attr];\n option.setAttribute(attr, val);\n }\n\n if (data.children) {\n var $option = $(option);\n var label = document.createElement('strong');\n label.className = 'select2-results__group';\n var $label = $(label);\n this.template(data, label);\n var $children = [];\n\n for (var c = 0; c < data.children.length; c++) {\n var child = data.children[c];\n var $child = this.option(child);\n $children.push($child);\n }\n\n var $childrenContainer = $('', {\n 'class': 'select2-results__options select2-results__options--nested'\n });\n $childrenContainer.append($children);\n $option.append(label);\n $option.append($childrenContainer);\n } else {\n this.template(data, option);\n }\n\n Utils.StoreData(option, 'data', data);\n return option;\n };\n\n Results.prototype.bind = function (container, $container) {\n var self = this;\n var id = container.id + '-results';\n this.$results.attr('id', id);\n container.on('results:all', function (params) {\n self.clear();\n self.append(params.data);\n\n if (container.isOpen()) {\n self.setClasses();\n self.highlightFirstItem();\n }\n });\n container.on('results:append', function (params) {\n self.append(params.data);\n\n if (container.isOpen()) {\n self.setClasses();\n }\n });\n container.on('query', function (params) {\n self.hideMessages();\n self.showLoading(params);\n });\n container.on('select', function () {\n if (!container.isOpen()) {\n return;\n }\n\n self.setClasses();\n\n if (self.options.get('scrollAfterSelect')) {\n self.highlightFirstItem();\n }\n });\n container.on('unselect', function () {\n if (!container.isOpen()) {\n return;\n }\n\n self.setClasses();\n\n if (self.options.get('scrollAfterSelect')) {\n self.highlightFirstItem();\n }\n });\n container.on('open', function () {\n // When the dropdown is open, aria-expended=\"true\"\n self.$results.attr('aria-expanded', 'true');\n self.$results.attr('aria-hidden', 'false');\n self.setClasses();\n self.ensureHighlightVisible();\n });\n container.on('close', function () {\n // When the dropdown is closed, aria-expended=\"false\"\n self.$results.attr('aria-expanded', 'false');\n self.$results.attr('aria-hidden', 'true');\n self.$results.removeAttr('aria-activedescendant');\n });\n container.on('results:toggle', function () {\n var $highlighted = self.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n $highlighted.trigger('mouseup');\n });\n container.on('results:select', function () {\n var $highlighted = self.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n var data = Utils.GetData($highlighted[0], 'data');\n\n if ($highlighted.attr('aria-selected') == 'true') {\n self.trigger('close', {});\n } else {\n self.trigger('select', {\n data: data\n });\n }\n });\n container.on('results:previous', function () {\n var $highlighted = self.getHighlightedResults();\n var $options = self.$results.find('[aria-selected]');\n var currentIndex = $options.index($highlighted); // If we are already at the top, don't move further\n // If no options, currentIndex will be -1\n\n if (currentIndex <= 0) {\n return;\n }\n\n var nextIndex = currentIndex - 1; // If none are highlighted, highlight the first\n\n if ($highlighted.length === 0) {\n nextIndex = 0;\n }\n\n var $next = $options.eq(nextIndex);\n $next.trigger('mouseenter');\n var currentOffset = self.$results.offset().top;\n var nextTop = $next.offset().top;\n var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\n\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextTop - currentOffset < 0) {\n self.$results.scrollTop(nextOffset);\n }\n });\n container.on('results:next', function () {\n var $highlighted = self.getHighlightedResults();\n var $options = self.$results.find('[aria-selected]');\n var currentIndex = $options.index($highlighted);\n var nextIndex = currentIndex + 1; // If we are at the last option, stay there\n\n if (nextIndex >= $options.length) {\n return;\n }\n\n var $next = $options.eq(nextIndex);\n $next.trigger('mouseenter');\n var currentOffset = self.$results.offset().top + self.$results.outerHeight(false);\n var nextBottom = $next.offset().top + $next.outerHeight(false);\n var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\n\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextBottom > currentOffset) {\n self.$results.scrollTop(nextOffset);\n }\n });\n container.on('results:focus', function (params) {\n params.element.addClass('select2-results__option--highlighted');\n });\n container.on('results:message', function (params) {\n self.displayMessage(params);\n });\n\n if ($.fn.mousewheel) {\n this.$results.on('mousewheel', function (e) {\n var top = self.$results.scrollTop();\n var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\n var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\n var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\n\n if (isAtTop) {\n self.$results.scrollTop(0);\n e.preventDefault();\n e.stopPropagation();\n } else if (isAtBottom) {\n self.$results.scrollTop(self.$results.get(0).scrollHeight - self.$results.height());\n e.preventDefault();\n e.stopPropagation();\n }\n });\n }\n\n this.$results.on('mouseup', '.select2-results__option[aria-selected]', function (evt) {\n var $this = $(this);\n var data = Utils.GetData(this, 'data');\n\n if ($this.attr('aria-selected') === 'true') {\n if (self.options.get('multiple')) {\n self.trigger('unselect', {\n originalEvent: evt,\n data: data\n });\n } else {\n self.trigger('close', {});\n }\n\n return;\n }\n\n self.trigger('select', {\n originalEvent: evt,\n data: data\n });\n });\n this.$results.on('mouseenter', '.select2-results__option[aria-selected]', function (evt) {\n var data = Utils.GetData(this, 'data');\n self.getHighlightedResults().removeClass('select2-results__option--highlighted');\n self.trigger('results:focus', {\n data: data,\n element: $(this)\n });\n });\n };\n\n Results.prototype.getHighlightedResults = function () {\n var $highlighted = this.$results.find('.select2-results__option--highlighted');\n return $highlighted;\n };\n\n Results.prototype.destroy = function () {\n this.$results.remove();\n };\n\n Results.prototype.ensureHighlightVisible = function () {\n var $highlighted = this.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n var $options = this.$results.find('[aria-selected]');\n var currentIndex = $options.index($highlighted);\n var currentOffset = this.$results.offset().top;\n var nextTop = $highlighted.offset().top;\n var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\n var offsetDelta = nextTop - currentOffset;\n nextOffset -= $highlighted.outerHeight(false) * 2;\n\n if (currentIndex <= 2) {\n this.$results.scrollTop(0);\n } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\n this.$results.scrollTop(nextOffset);\n }\n };\n\n Results.prototype.template = function (result, container) {\n var template = this.options.get('templateResult');\n var escapeMarkup = this.options.get('escapeMarkup');\n var content = template(result, container);\n\n if (content == null) {\n container.style.display = 'none';\n } else if (typeof content === 'string') {\n container.innerHTML = escapeMarkup(content);\n } else {\n $(container).append(content);\n }\n };\n\n return Results;\n });\n S2.define('select2/keys', [], function () {\n var KEYS = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n SHIFT: 16,\n CTRL: 17,\n ALT: 18,\n ESC: 27,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n };\n return KEYS;\n });\n S2.define('select2/selection/base', ['jquery', '../utils', '../keys'], function ($, Utils, KEYS) {\n function BaseSelection($element, options) {\n this.$element = $element;\n this.options = options;\n\n BaseSelection.__super__.constructor.call(this);\n }\n\n Utils.Extend(BaseSelection, Utils.Observable);\n\n BaseSelection.prototype.render = function () {\n var $selection = $('' + ' ');\n this._tabindex = 0;\n\n if (Utils.GetData(this.$element[0], 'old-tabindex') != null) {\n this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex');\n } else if (this.$element.attr('tabindex') != null) {\n this._tabindex = this.$element.attr('tabindex');\n }\n\n $selection.attr('title', this.$element.attr('title'));\n $selection.attr('tabindex', this._tabindex);\n $selection.attr('aria-disabled', 'false');\n this.$selection = $selection;\n return $selection;\n };\n\n BaseSelection.prototype.bind = function (container, $container) {\n var self = this;\n var resultsId = container.id + '-results';\n this.container = container;\n this.$selection.on('focus', function (evt) {\n self.trigger('focus', evt);\n });\n this.$selection.on('blur', function (evt) {\n self._handleBlur(evt);\n });\n this.$selection.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n\n if (evt.which === KEYS.SPACE) {\n evt.preventDefault();\n }\n });\n container.on('results:focus', function (params) {\n self.$selection.attr('aria-activedescendant', params.data._resultId);\n });\n container.on('selection:update', function (params) {\n self.update(params.data);\n });\n container.on('open', function () {\n // When the dropdown is open, aria-expanded=\"true\"\n self.$selection.attr('aria-expanded', 'true');\n self.$selection.attr('aria-owns', resultsId);\n\n self._attachCloseHandler(container);\n });\n container.on('close', function () {\n // When the dropdown is closed, aria-expanded=\"false\"\n self.$selection.attr('aria-expanded', 'false');\n self.$selection.removeAttr('aria-activedescendant');\n self.$selection.removeAttr('aria-owns');\n self.$selection.trigger('focus');\n\n self._detachCloseHandler(container);\n });\n container.on('enable', function () {\n self.$selection.attr('tabindex', self._tabindex);\n self.$selection.attr('aria-disabled', 'false');\n });\n container.on('disable', function () {\n self.$selection.attr('tabindex', '-1');\n self.$selection.attr('aria-disabled', 'true');\n });\n };\n\n BaseSelection.prototype._handleBlur = function (evt) {\n var self = this; // This needs to be delayed as the active element is the body when the tab\n // key is pressed, possibly along with others.\n\n window.setTimeout(function () {\n // Don't trigger `blur` if the focus is still in the selection\n if (document.activeElement == self.$selection[0] || $.contains(self.$selection[0], document.activeElement)) {\n return;\n }\n\n self.trigger('blur', evt);\n }, 1);\n };\n\n BaseSelection.prototype._attachCloseHandler = function (container) {\n $(document.body).on('mousedown.select2.' + container.id, function (e) {\n var $target = $(e.target);\n var $select = $target.closest('.select2');\n var $all = $('.select2.select2-container--open');\n $all.each(function () {\n if (this == $select[0]) {\n return;\n }\n\n var $element = Utils.GetData(this, 'element');\n $element.select2('close');\n });\n });\n };\n\n BaseSelection.prototype._detachCloseHandler = function (container) {\n $(document.body).off('mousedown.select2.' + container.id);\n };\n\n BaseSelection.prototype.position = function ($selection, $container) {\n var $selectionContainer = $container.find('.selection');\n $selectionContainer.append($selection);\n };\n\n BaseSelection.prototype.destroy = function () {\n this._detachCloseHandler(this.container);\n };\n\n BaseSelection.prototype.update = function (data) {\n throw new Error('The `update` method must be defined in child classes.');\n };\n /**\n * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n * object.\n *\n * @return {true} if the instance is not disabled.\n * @return {false} if the instance is disabled.\n */\n\n\n BaseSelection.prototype.isEnabled = function () {\n return !this.isDisabled();\n };\n /**\n * Helper method to abstract the \"disabled\" state of this object.\n *\n * @return {true} if the disabled option is true.\n * @return {false} if the disabled option is false.\n */\n\n\n BaseSelection.prototype.isDisabled = function () {\n return this.options.get('disabled');\n };\n\n return BaseSelection;\n });\n S2.define('select2/selection/single', ['jquery', './base', '../utils', '../keys'], function ($, BaseSelection, Utils, KEYS) {\n function SingleSelection() {\n SingleSelection.__super__.constructor.apply(this, arguments);\n }\n\n Utils.Extend(SingleSelection, BaseSelection);\n\n SingleSelection.prototype.render = function () {\n var $selection = SingleSelection.__super__.render.call(this);\n\n $selection.addClass('select2-selection--single');\n $selection.html(' ' + '' + ' ' + ' ');\n return $selection;\n };\n\n SingleSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n SingleSelection.__super__.bind.apply(this, arguments);\n\n var id = container.id + '-container';\n this.$selection.find('.select2-selection__rendered').attr('id', id).attr('role', 'textbox').attr('aria-readonly', 'true');\n this.$selection.attr('aria-labelledby', id);\n this.$selection.on('mousedown', function (evt) {\n // Only respond to left clicks\n if (evt.which !== 1) {\n return;\n }\n\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n this.$selection.on('focus', function (evt) {// User focuses on the container\n });\n this.$selection.on('blur', function (evt) {// User exits the container\n });\n container.on('focus', function (evt) {\n if (!container.isOpen()) {\n self.$selection.trigger('focus');\n }\n });\n };\n\n SingleSelection.prototype.clear = function () {\n var $rendered = this.$selection.find('.select2-selection__rendered');\n $rendered.empty();\n $rendered.removeAttr('title'); // clear tooltip on empty\n };\n\n SingleSelection.prototype.display = function (data, container) {\n var template = this.options.get('templateSelection');\n var escapeMarkup = this.options.get('escapeMarkup');\n return escapeMarkup(template(data, container));\n };\n\n SingleSelection.prototype.selectionContainer = function () {\n return $(' ');\n };\n\n SingleSelection.prototype.update = function (data) {\n if (data.length === 0) {\n this.clear();\n return;\n }\n\n var selection = data[0];\n var $rendered = this.$selection.find('.select2-selection__rendered');\n var formatted = this.display(selection, $rendered);\n $rendered.empty().append(formatted);\n var title = selection.title || selection.text;\n\n if (title) {\n $rendered.attr('title', title);\n } else {\n $rendered.removeAttr('title');\n }\n };\n\n return SingleSelection;\n });\n S2.define('select2/selection/multiple', ['jquery', './base', '../utils'], function ($, BaseSelection, Utils) {\n function MultipleSelection($element, options) {\n MultipleSelection.__super__.constructor.apply(this, arguments);\n }\n\n Utils.Extend(MultipleSelection, BaseSelection);\n\n MultipleSelection.prototype.render = function () {\n var $selection = MultipleSelection.__super__.render.call(this);\n\n $selection.addClass('select2-selection--multiple');\n $selection.html('');\n return $selection;\n };\n\n MultipleSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n MultipleSelection.__super__.bind.apply(this, arguments);\n\n this.$selection.on('click', function (evt) {\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n this.$selection.on('click', '.select2-selection__choice__remove', function (evt) {\n // Ignore the event if it is disabled\n if (self.isDisabled()) {\n return;\n }\n\n var $remove = $(this);\n var $selection = $remove.parent();\n var data = Utils.GetData($selection[0], 'data');\n self.trigger('unselect', {\n originalEvent: evt,\n data: data\n });\n });\n };\n\n MultipleSelection.prototype.clear = function () {\n var $rendered = this.$selection.find('.select2-selection__rendered');\n $rendered.empty();\n $rendered.removeAttr('title');\n };\n\n MultipleSelection.prototype.display = function (data, container) {\n var template = this.options.get('templateSelection');\n var escapeMarkup = this.options.get('escapeMarkup');\n return escapeMarkup(template(data, container));\n };\n\n MultipleSelection.prototype.selectionContainer = function () {\n var $container = $('' + '' + '×' + ' ' + ' ');\n return $container;\n };\n\n MultipleSelection.prototype.update = function (data) {\n this.clear();\n\n if (data.length === 0) {\n return;\n }\n\n var $selections = [];\n\n for (var d = 0; d < data.length; d++) {\n var selection = data[d];\n var $selection = this.selectionContainer();\n var formatted = this.display(selection, $selection);\n $selection.append(formatted);\n var title = selection.title || selection.text;\n\n if (title) {\n $selection.attr('title', title);\n }\n\n Utils.StoreData($selection[0], 'data', selection);\n $selections.push($selection);\n }\n\n var $rendered = this.$selection.find('.select2-selection__rendered');\n Utils.appendMany($rendered, $selections);\n };\n\n return MultipleSelection;\n });\n S2.define('select2/selection/placeholder', ['../utils'], function (Utils) {\n function Placeholder(decorated, $element, options) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n decorated.call(this, $element, options);\n }\n\n Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n\n return placeholder;\n };\n\n Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\n var $placeholder = this.selectionContainer();\n $placeholder.html(this.display(placeholder));\n $placeholder.addClass('select2-selection__placeholder').removeClass('select2-selection__choice');\n return $placeholder;\n };\n\n Placeholder.prototype.update = function (decorated, data) {\n var singlePlaceholder = data.length == 1 && data[0].id != this.placeholder.id;\n var multipleSelections = data.length > 1;\n\n if (multipleSelections || singlePlaceholder) {\n return decorated.call(this, data);\n }\n\n this.clear();\n var $placeholder = this.createPlaceholder(this.placeholder);\n this.$selection.find('.select2-selection__rendered').append($placeholder);\n };\n\n return Placeholder;\n });\n S2.define('select2/selection/allowClear', ['jquery', '../keys', '../utils'], function ($, KEYS, Utils) {\n function AllowClear() {}\n\n AllowClear.prototype.bind = function (decorated, container, $container) {\n var self = this;\n decorated.call(this, container, $container);\n\n if (this.placeholder == null) {\n if (this.options.get('debug') && window.console && console.error) {\n console.error('Select2: The `allowClear` option should be used in combination ' + 'with the `placeholder` option.');\n }\n }\n\n this.$selection.on('mousedown', '.select2-selection__clear', function (evt) {\n self._handleClear(evt);\n });\n container.on('keypress', function (evt) {\n self._handleKeyboardClear(evt, container);\n });\n };\n\n AllowClear.prototype._handleClear = function (_, evt) {\n // Ignore the event if it is disabled\n if (this.isDisabled()) {\n return;\n }\n\n var $clear = this.$selection.find('.select2-selection__clear'); // Ignore the event if nothing has been selected\n\n if ($clear.length === 0) {\n return;\n }\n\n evt.stopPropagation();\n var data = Utils.GetData($clear[0], 'data');\n var previousVal = this.$element.val();\n this.$element.val(this.placeholder.id);\n var unselectData = {\n data: data\n };\n this.trigger('clear', unselectData);\n\n if (unselectData.prevented) {\n this.$element.val(previousVal);\n return;\n }\n\n for (var d = 0; d < data.length; d++) {\n unselectData = {\n data: data[d]\n }; // Trigger the `unselect` event, so people can prevent it from being\n // cleared.\n\n this.trigger('unselect', unselectData); // If the event was prevented, don't clear it out.\n\n if (unselectData.prevented) {\n this.$element.val(previousVal);\n return;\n }\n }\n\n this.$element.trigger('input').trigger('change');\n this.trigger('toggle', {});\n };\n\n AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n if (container.isOpen()) {\n return;\n }\n\n if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n this._handleClear(evt);\n }\n };\n\n AllowClear.prototype.update = function (decorated, data) {\n decorated.call(this, data);\n\n if (this.$selection.find('.select2-selection__placeholder').length > 0 || data.length === 0) {\n return;\n }\n\n var removeAll = this.options.get('translations').get('removeAllItems');\n var $remove = $('' + '×' + ' ');\n Utils.StoreData($remove[0], 'data', data);\n this.$selection.find('.select2-selection__rendered').prepend($remove);\n };\n\n return AllowClear;\n });\n S2.define('select2/selection/search', ['jquery', '../utils', '../keys'], function ($, Utils, KEYS) {\n function Search(decorated, $element, options) {\n decorated.call(this, $element, options);\n }\n\n Search.prototype.render = function (decorated) {\n var $search = $('' + ' ' + ' ');\n this.$searchContainer = $search;\n this.$search = $search.find('input');\n var $rendered = decorated.call(this);\n\n this._transferTabIndex();\n\n return $rendered;\n };\n\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n var resultsId = container.id + '-results';\n decorated.call(this, container, $container);\n container.on('open', function () {\n self.$search.attr('aria-controls', resultsId);\n self.$search.trigger('focus');\n });\n container.on('close', function () {\n self.$search.val('');\n self.$search.removeAttr('aria-controls');\n self.$search.removeAttr('aria-activedescendant');\n self.$search.trigger('focus');\n });\n container.on('enable', function () {\n self.$search.prop('disabled', false);\n\n self._transferTabIndex();\n });\n container.on('disable', function () {\n self.$search.prop('disabled', true);\n });\n container.on('focus', function (evt) {\n self.$search.trigger('focus');\n });\n container.on('results:focus', function (params) {\n if (params.data._resultId) {\n self.$search.attr('aria-activedescendant', params.data._resultId);\n } else {\n self.$search.removeAttr('aria-activedescendant');\n }\n });\n this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n self.trigger('focus', evt);\n });\n this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n self._handleBlur(evt);\n });\n this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n evt.stopPropagation();\n self.trigger('keypress', evt);\n self._keyUpPrevented = evt.isDefaultPrevented();\n var key = evt.which;\n\n if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n var $previousChoice = self.$searchContainer.prev('.select2-selection__choice');\n\n if ($previousChoice.length > 0) {\n var item = Utils.GetData($previousChoice[0], 'data');\n self.searchRemoveChoice(item);\n evt.preventDefault();\n }\n }\n });\n this.$selection.on('click', '.select2-search--inline', function (evt) {\n if (self.$search.val()) {\n evt.stopPropagation();\n }\n }); // Try to detect the IE version should the `documentMode` property that\n // is stored on the document. This is only implemented in IE and is\n // slightly cleaner than doing a user agent check.\n // This property is not available in Edge, but Edge also doesn't have\n // this bug.\n\n var msie = document.documentMode;\n var disableInputEvents = msie && msie <= 11; // Workaround for browsers which do not support the `input` event\n // This will prevent double-triggering of events for browsers which support\n // both the `keyup` and `input` events.\n\n this.$selection.on('input.searchcheck', '.select2-search--inline', function (evt) {\n // IE will trigger the `input` event when a placeholder is used on a\n // search box. To get around this issue, we are forced to ignore all\n // `input` events in IE and keep using `keyup`.\n if (disableInputEvents) {\n self.$selection.off('input.search input.searchcheck');\n return;\n } // Unbind the duplicated `keyup` event\n\n\n self.$selection.off('keyup.search');\n });\n this.$selection.on('keyup.search input.search', '.select2-search--inline', function (evt) {\n // IE will trigger the `input` event when a placeholder is used on a\n // search box. To get around this issue, we are forced to ignore all\n // `input` events in IE and keep using `keyup`.\n if (disableInputEvents && evt.type === 'input') {\n self.$selection.off('input.search input.searchcheck');\n return;\n }\n\n var key = evt.which; // We can freely ignore events from modifier keys\n\n if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\n return;\n } // Tabbing will be handled during the `keydown` phase\n\n\n if (key == KEYS.TAB) {\n return;\n }\n\n self.handleSearch(evt);\n });\n };\n /**\n * This method will transfer the tabindex attribute from the rendered\n * selection to the search box. This allows for the search box to be used as\n * the primary focus instead of the selection container.\n *\n * @private\n */\n\n\n Search.prototype._transferTabIndex = function (decorated) {\n this.$search.attr('tabindex', this.$selection.attr('tabindex'));\n this.$selection.attr('tabindex', '-1');\n };\n\n Search.prototype.createPlaceholder = function (decorated, placeholder) {\n this.$search.attr('placeholder', placeholder.text);\n };\n\n Search.prototype.update = function (decorated, data) {\n var searchHadFocus = this.$search[0] == document.activeElement;\n this.$search.attr('placeholder', '');\n decorated.call(this, data);\n this.$selection.find('.select2-selection__rendered').append(this.$searchContainer);\n this.resizeSearch();\n\n if (searchHadFocus) {\n this.$search.trigger('focus');\n }\n };\n\n Search.prototype.handleSearch = function () {\n this.resizeSearch();\n\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n this.trigger('query', {\n term: input\n });\n }\n\n this._keyUpPrevented = false;\n };\n\n Search.prototype.searchRemoveChoice = function (decorated, item) {\n this.trigger('unselect', {\n data: item\n });\n this.$search.val(item.text);\n this.handleSearch();\n };\n\n Search.prototype.resizeSearch = function () {\n this.$search.css('width', '25px');\n var width = '';\n\n if (this.$search.attr('placeholder') !== '') {\n width = this.$selection.find('.select2-selection__rendered').width();\n } else {\n var minimumWidth = this.$search.val().length + 1;\n width = minimumWidth * 0.75 + 'em';\n }\n\n this.$search.css('width', width);\n };\n\n return Search;\n });\n S2.define('select2/selection/eventRelay', ['jquery'], function ($) {\n function EventRelay() {}\n\n EventRelay.prototype.bind = function (decorated, container, $container) {\n var self = this;\n var relayEvents = ['open', 'opening', 'close', 'closing', 'select', 'selecting', 'unselect', 'unselecting', 'clear', 'clearing'];\n var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting', 'clearing'];\n decorated.call(this, container, $container);\n container.on('*', function (name, params) {\n // Ignore events that should not be relayed\n if ($.inArray(name, relayEvents) === -1) {\n return;\n } // The parameters should always be an object\n\n\n params = params || {}; // Generate the jQuery event for the Select2 event\n\n var evt = $.Event('select2:' + name, {\n params: params\n });\n self.$element.trigger(evt); // Only handle preventable events if it was one\n\n if ($.inArray(name, preventableEvents) === -1) {\n return;\n }\n\n params.prevented = evt.isDefaultPrevented();\n });\n };\n\n return EventRelay;\n });\n S2.define('select2/translation', ['jquery', 'require'], function ($, require) {\n function Translation(dict) {\n this.dict = dict || {};\n }\n\n Translation.prototype.all = function () {\n return this.dict;\n };\n\n Translation.prototype.get = function (key) {\n return this.dict[key];\n };\n\n Translation.prototype.extend = function (translation) {\n this.dict = $.extend({}, translation.all(), this.dict);\n }; // Static functions\n\n\n Translation._cache = {};\n\n Translation.loadPath = function (path) {\n if (!(path in Translation._cache)) {\n var translations = require(path);\n\n Translation._cache[path] = translations;\n }\n\n return new Translation(Translation._cache[path]);\n };\n\n return Translation;\n });\n S2.define('select2/diacritics', [], function () {\n var diacritics = {\n \"\\u24B6\": 'A',\n \"\\uFF21\": 'A',\n \"\\xC0\": 'A',\n \"\\xC1\": 'A',\n \"\\xC2\": 'A',\n \"\\u1EA6\": 'A',\n \"\\u1EA4\": 'A',\n \"\\u1EAA\": 'A',\n \"\\u1EA8\": 'A',\n \"\\xC3\": 'A',\n \"\\u0100\": 'A',\n \"\\u0102\": 'A',\n \"\\u1EB0\": 'A',\n \"\\u1EAE\": 'A',\n \"\\u1EB4\": 'A',\n \"\\u1EB2\": 'A',\n \"\\u0226\": 'A',\n \"\\u01E0\": 'A',\n \"\\xC4\": 'A',\n \"\\u01DE\": 'A',\n \"\\u1EA2\": 'A',\n \"\\xC5\": 'A',\n \"\\u01FA\": 'A',\n \"\\u01CD\": 'A',\n \"\\u0200\": 'A',\n \"\\u0202\": 'A',\n \"\\u1EA0\": 'A',\n \"\\u1EAC\": 'A',\n \"\\u1EB6\": 'A',\n \"\\u1E00\": 'A',\n \"\\u0104\": 'A',\n \"\\u023A\": 'A',\n \"\\u2C6F\": 'A',\n \"\\uA732\": 'AA',\n \"\\xC6\": 'AE',\n \"\\u01FC\": 'AE',\n \"\\u01E2\": 'AE',\n \"\\uA734\": 'AO',\n \"\\uA736\": 'AU',\n \"\\uA738\": 'AV',\n \"\\uA73A\": 'AV',\n \"\\uA73C\": 'AY',\n \"\\u24B7\": 'B',\n \"\\uFF22\": 'B',\n \"\\u1E02\": 'B',\n \"\\u1E04\": 'B',\n \"\\u1E06\": 'B',\n \"\\u0243\": 'B',\n \"\\u0182\": 'B',\n \"\\u0181\": 'B',\n \"\\u24B8\": 'C',\n \"\\uFF23\": 'C',\n \"\\u0106\": 'C',\n \"\\u0108\": 'C',\n \"\\u010A\": 'C',\n \"\\u010C\": 'C',\n \"\\xC7\": 'C',\n \"\\u1E08\": 'C',\n \"\\u0187\": 'C',\n \"\\u023B\": 'C',\n \"\\uA73E\": 'C',\n \"\\u24B9\": 'D',\n \"\\uFF24\": 'D',\n \"\\u1E0A\": 'D',\n \"\\u010E\": 'D',\n \"\\u1E0C\": 'D',\n \"\\u1E10\": 'D',\n \"\\u1E12\": 'D',\n \"\\u1E0E\": 'D',\n \"\\u0110\": 'D',\n \"\\u018B\": 'D',\n \"\\u018A\": 'D',\n \"\\u0189\": 'D',\n \"\\uA779\": 'D',\n \"\\u01F1\": 'DZ',\n \"\\u01C4\": 'DZ',\n \"\\u01F2\": 'Dz',\n \"\\u01C5\": 'Dz',\n \"\\u24BA\": 'E',\n \"\\uFF25\": 'E',\n \"\\xC8\": 'E',\n \"\\xC9\": 'E',\n \"\\xCA\": 'E',\n \"\\u1EC0\": 'E',\n \"\\u1EBE\": 'E',\n \"\\u1EC4\": 'E',\n \"\\u1EC2\": 'E',\n \"\\u1EBC\": 'E',\n \"\\u0112\": 'E',\n \"\\u1E14\": 'E',\n \"\\u1E16\": 'E',\n \"\\u0114\": 'E',\n \"\\u0116\": 'E',\n \"\\xCB\": 'E',\n \"\\u1EBA\": 'E',\n \"\\u011A\": 'E',\n \"\\u0204\": 'E',\n \"\\u0206\": 'E',\n \"\\u1EB8\": 'E',\n \"\\u1EC6\": 'E',\n \"\\u0228\": 'E',\n \"\\u1E1C\": 'E',\n \"\\u0118\": 'E',\n \"\\u1E18\": 'E',\n \"\\u1E1A\": 'E',\n \"\\u0190\": 'E',\n \"\\u018E\": 'E',\n \"\\u24BB\": 'F',\n \"\\uFF26\": 'F',\n \"\\u1E1E\": 'F',\n \"\\u0191\": 'F',\n \"\\uA77B\": 'F',\n \"\\u24BC\": 'G',\n \"\\uFF27\": 'G',\n \"\\u01F4\": 'G',\n \"\\u011C\": 'G',\n \"\\u1E20\": 'G',\n \"\\u011E\": 'G',\n \"\\u0120\": 'G',\n \"\\u01E6\": 'G',\n \"\\u0122\": 'G',\n \"\\u01E4\": 'G',\n \"\\u0193\": 'G',\n \"\\uA7A0\": 'G',\n \"\\uA77D\": 'G',\n \"\\uA77E\": 'G',\n \"\\u24BD\": 'H',\n \"\\uFF28\": 'H',\n \"\\u0124\": 'H',\n \"\\u1E22\": 'H',\n \"\\u1E26\": 'H',\n \"\\u021E\": 'H',\n \"\\u1E24\": 'H',\n \"\\u1E28\": 'H',\n \"\\u1E2A\": 'H',\n \"\\u0126\": 'H',\n \"\\u2C67\": 'H',\n \"\\u2C75\": 'H',\n \"\\uA78D\": 'H',\n \"\\u24BE\": 'I',\n \"\\uFF29\": 'I',\n \"\\xCC\": 'I',\n \"\\xCD\": 'I',\n \"\\xCE\": 'I',\n \"\\u0128\": 'I',\n \"\\u012A\": 'I',\n \"\\u012C\": 'I',\n \"\\u0130\": 'I',\n \"\\xCF\": 'I',\n \"\\u1E2E\": 'I',\n \"\\u1EC8\": 'I',\n \"\\u01CF\": 'I',\n \"\\u0208\": 'I',\n \"\\u020A\": 'I',\n \"\\u1ECA\": 'I',\n \"\\u012E\": 'I',\n \"\\u1E2C\": 'I',\n \"\\u0197\": 'I',\n \"\\u24BF\": 'J',\n \"\\uFF2A\": 'J',\n \"\\u0134\": 'J',\n \"\\u0248\": 'J',\n \"\\u24C0\": 'K',\n \"\\uFF2B\": 'K',\n \"\\u1E30\": 'K',\n \"\\u01E8\": 'K',\n \"\\u1E32\": 'K',\n \"\\u0136\": 'K',\n \"\\u1E34\": 'K',\n \"\\u0198\": 'K',\n \"\\u2C69\": 'K',\n \"\\uA740\": 'K',\n \"\\uA742\": 'K',\n \"\\uA744\": 'K',\n \"\\uA7A2\": 'K',\n \"\\u24C1\": 'L',\n \"\\uFF2C\": 'L',\n \"\\u013F\": 'L',\n \"\\u0139\": 'L',\n \"\\u013D\": 'L',\n \"\\u1E36\": 'L',\n \"\\u1E38\": 'L',\n \"\\u013B\": 'L',\n \"\\u1E3C\": 'L',\n \"\\u1E3A\": 'L',\n \"\\u0141\": 'L',\n \"\\u023D\": 'L',\n \"\\u2C62\": 'L',\n \"\\u2C60\": 'L',\n \"\\uA748\": 'L',\n \"\\uA746\": 'L',\n \"\\uA780\": 'L',\n \"\\u01C7\": 'LJ',\n \"\\u01C8\": 'Lj',\n \"\\u24C2\": 'M',\n \"\\uFF2D\": 'M',\n \"\\u1E3E\": 'M',\n \"\\u1E40\": 'M',\n \"\\u1E42\": 'M',\n \"\\u2C6E\": 'M',\n \"\\u019C\": 'M',\n \"\\u24C3\": 'N',\n \"\\uFF2E\": 'N',\n \"\\u01F8\": 'N',\n \"\\u0143\": 'N',\n \"\\xD1\": 'N',\n \"\\u1E44\": 'N',\n \"\\u0147\": 'N',\n \"\\u1E46\": 'N',\n \"\\u0145\": 'N',\n \"\\u1E4A\": 'N',\n \"\\u1E48\": 'N',\n \"\\u0220\": 'N',\n \"\\u019D\": 'N',\n \"\\uA790\": 'N',\n \"\\uA7A4\": 'N',\n \"\\u01CA\": 'NJ',\n \"\\u01CB\": 'Nj',\n \"\\u24C4\": 'O',\n \"\\uFF2F\": 'O',\n \"\\xD2\": 'O',\n \"\\xD3\": 'O',\n \"\\xD4\": 'O',\n \"\\u1ED2\": 'O',\n \"\\u1ED0\": 'O',\n \"\\u1ED6\": 'O',\n \"\\u1ED4\": 'O',\n \"\\xD5\": 'O',\n \"\\u1E4C\": 'O',\n \"\\u022C\": 'O',\n \"\\u1E4E\": 'O',\n \"\\u014C\": 'O',\n \"\\u1E50\": 'O',\n \"\\u1E52\": 'O',\n \"\\u014E\": 'O',\n \"\\u022E\": 'O',\n \"\\u0230\": 'O',\n \"\\xD6\": 'O',\n \"\\u022A\": 'O',\n \"\\u1ECE\": 'O',\n \"\\u0150\": 'O',\n \"\\u01D1\": 'O',\n \"\\u020C\": 'O',\n \"\\u020E\": 'O',\n \"\\u01A0\": 'O',\n \"\\u1EDC\": 'O',\n \"\\u1EDA\": 'O',\n \"\\u1EE0\": 'O',\n \"\\u1EDE\": 'O',\n \"\\u1EE2\": 'O',\n \"\\u1ECC\": 'O',\n \"\\u1ED8\": 'O',\n \"\\u01EA\": 'O',\n \"\\u01EC\": 'O',\n \"\\xD8\": 'O',\n \"\\u01FE\": 'O',\n \"\\u0186\": 'O',\n \"\\u019F\": 'O',\n \"\\uA74A\": 'O',\n \"\\uA74C\": 'O',\n \"\\u0152\": 'OE',\n \"\\u01A2\": 'OI',\n \"\\uA74E\": 'OO',\n \"\\u0222\": 'OU',\n \"\\u24C5\": 'P',\n \"\\uFF30\": 'P',\n \"\\u1E54\": 'P',\n \"\\u1E56\": 'P',\n \"\\u01A4\": 'P',\n \"\\u2C63\": 'P',\n \"\\uA750\": 'P',\n \"\\uA752\": 'P',\n \"\\uA754\": 'P',\n \"\\u24C6\": 'Q',\n \"\\uFF31\": 'Q',\n \"\\uA756\": 'Q',\n \"\\uA758\": 'Q',\n \"\\u024A\": 'Q',\n \"\\u24C7\": 'R',\n \"\\uFF32\": 'R',\n \"\\u0154\": 'R',\n \"\\u1E58\": 'R',\n \"\\u0158\": 'R',\n \"\\u0210\": 'R',\n \"\\u0212\": 'R',\n \"\\u1E5A\": 'R',\n \"\\u1E5C\": 'R',\n \"\\u0156\": 'R',\n \"\\u1E5E\": 'R',\n \"\\u024C\": 'R',\n \"\\u2C64\": 'R',\n \"\\uA75A\": 'R',\n \"\\uA7A6\": 'R',\n \"\\uA782\": 'R',\n \"\\u24C8\": 'S',\n \"\\uFF33\": 'S',\n \"\\u1E9E\": 'S',\n \"\\u015A\": 'S',\n \"\\u1E64\": 'S',\n \"\\u015C\": 'S',\n \"\\u1E60\": 'S',\n \"\\u0160\": 'S',\n \"\\u1E66\": 'S',\n \"\\u1E62\": 'S',\n \"\\u1E68\": 'S',\n \"\\u0218\": 'S',\n \"\\u015E\": 'S',\n \"\\u2C7E\": 'S',\n \"\\uA7A8\": 'S',\n \"\\uA784\": 'S',\n \"\\u24C9\": 'T',\n \"\\uFF34\": 'T',\n \"\\u1E6A\": 'T',\n \"\\u0164\": 'T',\n \"\\u1E6C\": 'T',\n \"\\u021A\": 'T',\n \"\\u0162\": 'T',\n \"\\u1E70\": 'T',\n \"\\u1E6E\": 'T',\n \"\\u0166\": 'T',\n \"\\u01AC\": 'T',\n \"\\u01AE\": 'T',\n \"\\u023E\": 'T',\n \"\\uA786\": 'T',\n \"\\uA728\": 'TZ',\n \"\\u24CA\": 'U',\n \"\\uFF35\": 'U',\n \"\\xD9\": 'U',\n \"\\xDA\": 'U',\n \"\\xDB\": 'U',\n \"\\u0168\": 'U',\n \"\\u1E78\": 'U',\n \"\\u016A\": 'U',\n \"\\u1E7A\": 'U',\n \"\\u016C\": 'U',\n \"\\xDC\": 'U',\n \"\\u01DB\": 'U',\n \"\\u01D7\": 'U',\n \"\\u01D5\": 'U',\n \"\\u01D9\": 'U',\n \"\\u1EE6\": 'U',\n \"\\u016E\": 'U',\n \"\\u0170\": 'U',\n \"\\u01D3\": 'U',\n \"\\u0214\": 'U',\n \"\\u0216\": 'U',\n \"\\u01AF\": 'U',\n \"\\u1EEA\": 'U',\n \"\\u1EE8\": 'U',\n \"\\u1EEE\": 'U',\n \"\\u1EEC\": 'U',\n \"\\u1EF0\": 'U',\n \"\\u1EE4\": 'U',\n \"\\u1E72\": 'U',\n \"\\u0172\": 'U',\n \"\\u1E76\": 'U',\n \"\\u1E74\": 'U',\n \"\\u0244\": 'U',\n \"\\u24CB\": 'V',\n \"\\uFF36\": 'V',\n \"\\u1E7C\": 'V',\n \"\\u1E7E\": 'V',\n \"\\u01B2\": 'V',\n \"\\uA75E\": 'V',\n \"\\u0245\": 'V',\n \"\\uA760\": 'VY',\n \"\\u24CC\": 'W',\n \"\\uFF37\": 'W',\n \"\\u1E80\": 'W',\n \"\\u1E82\": 'W',\n \"\\u0174\": 'W',\n \"\\u1E86\": 'W',\n \"\\u1E84\": 'W',\n \"\\u1E88\": 'W',\n \"\\u2C72\": 'W',\n \"\\u24CD\": 'X',\n \"\\uFF38\": 'X',\n \"\\u1E8A\": 'X',\n \"\\u1E8C\": 'X',\n \"\\u24CE\": 'Y',\n \"\\uFF39\": 'Y',\n \"\\u1EF2\": 'Y',\n \"\\xDD\": 'Y',\n \"\\u0176\": 'Y',\n \"\\u1EF8\": 'Y',\n \"\\u0232\": 'Y',\n \"\\u1E8E\": 'Y',\n \"\\u0178\": 'Y',\n \"\\u1EF6\": 'Y',\n \"\\u1EF4\": 'Y',\n \"\\u01B3\": 'Y',\n \"\\u024E\": 'Y',\n \"\\u1EFE\": 'Y',\n \"\\u24CF\": 'Z',\n \"\\uFF3A\": 'Z',\n \"\\u0179\": 'Z',\n \"\\u1E90\": 'Z',\n \"\\u017B\": 'Z',\n \"\\u017D\": 'Z',\n \"\\u1E92\": 'Z',\n \"\\u1E94\": 'Z',\n \"\\u01B5\": 'Z',\n \"\\u0224\": 'Z',\n \"\\u2C7F\": 'Z',\n \"\\u2C6B\": 'Z',\n \"\\uA762\": 'Z',\n \"\\u24D0\": 'a',\n \"\\uFF41\": 'a',\n \"\\u1E9A\": 'a',\n \"\\xE0\": 'a',\n \"\\xE1\": 'a',\n \"\\xE2\": 'a',\n \"\\u1EA7\": 'a',\n \"\\u1EA5\": 'a',\n \"\\u1EAB\": 'a',\n \"\\u1EA9\": 'a',\n \"\\xE3\": 'a',\n \"\\u0101\": 'a',\n \"\\u0103\": 'a',\n \"\\u1EB1\": 'a',\n \"\\u1EAF\": 'a',\n \"\\u1EB5\": 'a',\n \"\\u1EB3\": 'a',\n \"\\u0227\": 'a',\n \"\\u01E1\": 'a',\n \"\\xE4\": 'a',\n \"\\u01DF\": 'a',\n \"\\u1EA3\": 'a',\n \"\\xE5\": 'a',\n \"\\u01FB\": 'a',\n \"\\u01CE\": 'a',\n \"\\u0201\": 'a',\n \"\\u0203\": 'a',\n \"\\u1EA1\": 'a',\n \"\\u1EAD\": 'a',\n \"\\u1EB7\": 'a',\n \"\\u1E01\": 'a',\n \"\\u0105\": 'a',\n \"\\u2C65\": 'a',\n \"\\u0250\": 'a',\n \"\\uA733\": 'aa',\n \"\\xE6\": 'ae',\n \"\\u01FD\": 'ae',\n \"\\u01E3\": 'ae',\n \"\\uA735\": 'ao',\n \"\\uA737\": 'au',\n \"\\uA739\": 'av',\n \"\\uA73B\": 'av',\n \"\\uA73D\": 'ay',\n \"\\u24D1\": 'b',\n \"\\uFF42\": 'b',\n \"\\u1E03\": 'b',\n \"\\u1E05\": 'b',\n \"\\u1E07\": 'b',\n \"\\u0180\": 'b',\n \"\\u0183\": 'b',\n \"\\u0253\": 'b',\n \"\\u24D2\": 'c',\n \"\\uFF43\": 'c',\n \"\\u0107\": 'c',\n \"\\u0109\": 'c',\n \"\\u010B\": 'c',\n \"\\u010D\": 'c',\n \"\\xE7\": 'c',\n \"\\u1E09\": 'c',\n \"\\u0188\": 'c',\n \"\\u023C\": 'c',\n \"\\uA73F\": 'c',\n \"\\u2184\": 'c',\n \"\\u24D3\": 'd',\n \"\\uFF44\": 'd',\n \"\\u1E0B\": 'd',\n \"\\u010F\": 'd',\n \"\\u1E0D\": 'd',\n \"\\u1E11\": 'd',\n \"\\u1E13\": 'd',\n \"\\u1E0F\": 'd',\n \"\\u0111\": 'd',\n \"\\u018C\": 'd',\n \"\\u0256\": 'd',\n \"\\u0257\": 'd',\n \"\\uA77A\": 'd',\n \"\\u01F3\": 'dz',\n \"\\u01C6\": 'dz',\n \"\\u24D4\": 'e',\n \"\\uFF45\": 'e',\n \"\\xE8\": 'e',\n \"\\xE9\": 'e',\n \"\\xEA\": 'e',\n \"\\u1EC1\": 'e',\n \"\\u1EBF\": 'e',\n \"\\u1EC5\": 'e',\n \"\\u1EC3\": 'e',\n \"\\u1EBD\": 'e',\n \"\\u0113\": 'e',\n \"\\u1E15\": 'e',\n \"\\u1E17\": 'e',\n \"\\u0115\": 'e',\n \"\\u0117\": 'e',\n \"\\xEB\": 'e',\n \"\\u1EBB\": 'e',\n \"\\u011B\": 'e',\n \"\\u0205\": 'e',\n \"\\u0207\": 'e',\n \"\\u1EB9\": 'e',\n \"\\u1EC7\": 'e',\n \"\\u0229\": 'e',\n \"\\u1E1D\": 'e',\n \"\\u0119\": 'e',\n \"\\u1E19\": 'e',\n \"\\u1E1B\": 'e',\n \"\\u0247\": 'e',\n \"\\u025B\": 'e',\n \"\\u01DD\": 'e',\n \"\\u24D5\": 'f',\n \"\\uFF46\": 'f',\n \"\\u1E1F\": 'f',\n \"\\u0192\": 'f',\n \"\\uA77C\": 'f',\n \"\\u24D6\": 'g',\n \"\\uFF47\": 'g',\n \"\\u01F5\": 'g',\n \"\\u011D\": 'g',\n \"\\u1E21\": 'g',\n \"\\u011F\": 'g',\n \"\\u0121\": 'g',\n \"\\u01E7\": 'g',\n \"\\u0123\": 'g',\n \"\\u01E5\": 'g',\n \"\\u0260\": 'g',\n \"\\uA7A1\": 'g',\n \"\\u1D79\": 'g',\n \"\\uA77F\": 'g',\n \"\\u24D7\": 'h',\n \"\\uFF48\": 'h',\n \"\\u0125\": 'h',\n \"\\u1E23\": 'h',\n \"\\u1E27\": 'h',\n \"\\u021F\": 'h',\n \"\\u1E25\": 'h',\n \"\\u1E29\": 'h',\n \"\\u1E2B\": 'h',\n \"\\u1E96\": 'h',\n \"\\u0127\": 'h',\n \"\\u2C68\": 'h',\n \"\\u2C76\": 'h',\n \"\\u0265\": 'h',\n \"\\u0195\": 'hv',\n \"\\u24D8\": 'i',\n \"\\uFF49\": 'i',\n \"\\xEC\": 'i',\n \"\\xED\": 'i',\n \"\\xEE\": 'i',\n \"\\u0129\": 'i',\n \"\\u012B\": 'i',\n \"\\u012D\": 'i',\n \"\\xEF\": 'i',\n \"\\u1E2F\": 'i',\n \"\\u1EC9\": 'i',\n \"\\u01D0\": 'i',\n \"\\u0209\": 'i',\n \"\\u020B\": 'i',\n \"\\u1ECB\": 'i',\n \"\\u012F\": 'i',\n \"\\u1E2D\": 'i',\n \"\\u0268\": 'i',\n \"\\u0131\": 'i',\n \"\\u24D9\": 'j',\n \"\\uFF4A\": 'j',\n \"\\u0135\": 'j',\n \"\\u01F0\": 'j',\n \"\\u0249\": 'j',\n \"\\u24DA\": 'k',\n \"\\uFF4B\": 'k',\n \"\\u1E31\": 'k',\n \"\\u01E9\": 'k',\n \"\\u1E33\": 'k',\n \"\\u0137\": 'k',\n \"\\u1E35\": 'k',\n \"\\u0199\": 'k',\n \"\\u2C6A\": 'k',\n \"\\uA741\": 'k',\n \"\\uA743\": 'k',\n \"\\uA745\": 'k',\n \"\\uA7A3\": 'k',\n \"\\u24DB\": 'l',\n \"\\uFF4C\": 'l',\n \"\\u0140\": 'l',\n \"\\u013A\": 'l',\n \"\\u013E\": 'l',\n \"\\u1E37\": 'l',\n \"\\u1E39\": 'l',\n \"\\u013C\": 'l',\n \"\\u1E3D\": 'l',\n \"\\u1E3B\": 'l',\n \"\\u017F\": 'l',\n \"\\u0142\": 'l',\n \"\\u019A\": 'l',\n \"\\u026B\": 'l',\n \"\\u2C61\": 'l',\n \"\\uA749\": 'l',\n \"\\uA781\": 'l',\n \"\\uA747\": 'l',\n \"\\u01C9\": 'lj',\n \"\\u24DC\": 'm',\n \"\\uFF4D\": 'm',\n \"\\u1E3F\": 'm',\n \"\\u1E41\": 'm',\n \"\\u1E43\": 'm',\n \"\\u0271\": 'm',\n \"\\u026F\": 'm',\n \"\\u24DD\": 'n',\n \"\\uFF4E\": 'n',\n \"\\u01F9\": 'n',\n \"\\u0144\": 'n',\n \"\\xF1\": 'n',\n \"\\u1E45\": 'n',\n \"\\u0148\": 'n',\n \"\\u1E47\": 'n',\n \"\\u0146\": 'n',\n \"\\u1E4B\": 'n',\n \"\\u1E49\": 'n',\n \"\\u019E\": 'n',\n \"\\u0272\": 'n',\n \"\\u0149\": 'n',\n \"\\uA791\": 'n',\n \"\\uA7A5\": 'n',\n \"\\u01CC\": 'nj',\n \"\\u24DE\": 'o',\n \"\\uFF4F\": 'o',\n \"\\xF2\": 'o',\n \"\\xF3\": 'o',\n \"\\xF4\": 'o',\n \"\\u1ED3\": 'o',\n \"\\u1ED1\": 'o',\n \"\\u1ED7\": 'o',\n \"\\u1ED5\": 'o',\n \"\\xF5\": 'o',\n \"\\u1E4D\": 'o',\n \"\\u022D\": 'o',\n \"\\u1E4F\": 'o',\n \"\\u014D\": 'o',\n \"\\u1E51\": 'o',\n \"\\u1E53\": 'o',\n \"\\u014F\": 'o',\n \"\\u022F\": 'o',\n \"\\u0231\": 'o',\n \"\\xF6\": 'o',\n \"\\u022B\": 'o',\n \"\\u1ECF\": 'o',\n \"\\u0151\": 'o',\n \"\\u01D2\": 'o',\n \"\\u020D\": 'o',\n \"\\u020F\": 'o',\n \"\\u01A1\": 'o',\n \"\\u1EDD\": 'o',\n \"\\u1EDB\": 'o',\n \"\\u1EE1\": 'o',\n \"\\u1EDF\": 'o',\n \"\\u1EE3\": 'o',\n \"\\u1ECD\": 'o',\n \"\\u1ED9\": 'o',\n \"\\u01EB\": 'o',\n \"\\u01ED\": 'o',\n \"\\xF8\": 'o',\n \"\\u01FF\": 'o',\n \"\\u0254\": 'o',\n \"\\uA74B\": 'o',\n \"\\uA74D\": 'o',\n \"\\u0275\": 'o',\n \"\\u0153\": 'oe',\n \"\\u01A3\": 'oi',\n \"\\u0223\": 'ou',\n \"\\uA74F\": 'oo',\n \"\\u24DF\": 'p',\n \"\\uFF50\": 'p',\n \"\\u1E55\": 'p',\n \"\\u1E57\": 'p',\n \"\\u01A5\": 'p',\n \"\\u1D7D\": 'p',\n \"\\uA751\": 'p',\n \"\\uA753\": 'p',\n \"\\uA755\": 'p',\n \"\\u24E0\": 'q',\n \"\\uFF51\": 'q',\n \"\\u024B\": 'q',\n \"\\uA757\": 'q',\n \"\\uA759\": 'q',\n \"\\u24E1\": 'r',\n \"\\uFF52\": 'r',\n \"\\u0155\": 'r',\n \"\\u1E59\": 'r',\n \"\\u0159\": 'r',\n \"\\u0211\": 'r',\n \"\\u0213\": 'r',\n \"\\u1E5B\": 'r',\n \"\\u1E5D\": 'r',\n \"\\u0157\": 'r',\n \"\\u1E5F\": 'r',\n \"\\u024D\": 'r',\n \"\\u027D\": 'r',\n \"\\uA75B\": 'r',\n \"\\uA7A7\": 'r',\n \"\\uA783\": 'r',\n \"\\u24E2\": 's',\n \"\\uFF53\": 's',\n \"\\xDF\": 's',\n \"\\u015B\": 's',\n \"\\u1E65\": 's',\n \"\\u015D\": 's',\n \"\\u1E61\": 's',\n \"\\u0161\": 's',\n \"\\u1E67\": 's',\n \"\\u1E63\": 's',\n \"\\u1E69\": 's',\n \"\\u0219\": 's',\n \"\\u015F\": 's',\n \"\\u023F\": 's',\n \"\\uA7A9\": 's',\n \"\\uA785\": 's',\n \"\\u1E9B\": 's',\n \"\\u24E3\": 't',\n \"\\uFF54\": 't',\n \"\\u1E6B\": 't',\n \"\\u1E97\": 't',\n \"\\u0165\": 't',\n \"\\u1E6D\": 't',\n \"\\u021B\": 't',\n \"\\u0163\": 't',\n \"\\u1E71\": 't',\n \"\\u1E6F\": 't',\n \"\\u0167\": 't',\n \"\\u01AD\": 't',\n \"\\u0288\": 't',\n \"\\u2C66\": 't',\n \"\\uA787\": 't',\n \"\\uA729\": 'tz',\n \"\\u24E4\": 'u',\n \"\\uFF55\": 'u',\n \"\\xF9\": 'u',\n \"\\xFA\": 'u',\n \"\\xFB\": 'u',\n \"\\u0169\": 'u',\n \"\\u1E79\": 'u',\n \"\\u016B\": 'u',\n \"\\u1E7B\": 'u',\n \"\\u016D\": 'u',\n \"\\xFC\": 'u',\n \"\\u01DC\": 'u',\n \"\\u01D8\": 'u',\n \"\\u01D6\": 'u',\n \"\\u01DA\": 'u',\n \"\\u1EE7\": 'u',\n \"\\u016F\": 'u',\n \"\\u0171\": 'u',\n \"\\u01D4\": 'u',\n \"\\u0215\": 'u',\n \"\\u0217\": 'u',\n \"\\u01B0\": 'u',\n \"\\u1EEB\": 'u',\n \"\\u1EE9\": 'u',\n \"\\u1EEF\": 'u',\n \"\\u1EED\": 'u',\n \"\\u1EF1\": 'u',\n \"\\u1EE5\": 'u',\n \"\\u1E73\": 'u',\n \"\\u0173\": 'u',\n \"\\u1E77\": 'u',\n \"\\u1E75\": 'u',\n \"\\u0289\": 'u',\n \"\\u24E5\": 'v',\n \"\\uFF56\": 'v',\n \"\\u1E7D\": 'v',\n \"\\u1E7F\": 'v',\n \"\\u028B\": 'v',\n \"\\uA75F\": 'v',\n \"\\u028C\": 'v',\n \"\\uA761\": 'vy',\n \"\\u24E6\": 'w',\n \"\\uFF57\": 'w',\n \"\\u1E81\": 'w',\n \"\\u1E83\": 'w',\n \"\\u0175\": 'w',\n \"\\u1E87\": 'w',\n \"\\u1E85\": 'w',\n \"\\u1E98\": 'w',\n \"\\u1E89\": 'w',\n \"\\u2C73\": 'w',\n \"\\u24E7\": 'x',\n \"\\uFF58\": 'x',\n \"\\u1E8B\": 'x',\n \"\\u1E8D\": 'x',\n \"\\u24E8\": 'y',\n \"\\uFF59\": 'y',\n \"\\u1EF3\": 'y',\n \"\\xFD\": 'y',\n \"\\u0177\": 'y',\n \"\\u1EF9\": 'y',\n \"\\u0233\": 'y',\n \"\\u1E8F\": 'y',\n \"\\xFF\": 'y',\n \"\\u1EF7\": 'y',\n \"\\u1E99\": 'y',\n \"\\u1EF5\": 'y',\n \"\\u01B4\": 'y',\n \"\\u024F\": 'y',\n \"\\u1EFF\": 'y',\n \"\\u24E9\": 'z',\n \"\\uFF5A\": 'z',\n \"\\u017A\": 'z',\n \"\\u1E91\": 'z',\n \"\\u017C\": 'z',\n \"\\u017E\": 'z',\n \"\\u1E93\": 'z',\n \"\\u1E95\": 'z',\n \"\\u01B6\": 'z',\n \"\\u0225\": 'z',\n \"\\u0240\": 'z',\n \"\\u2C6C\": 'z',\n \"\\uA763\": 'z',\n \"\\u0386\": \"\\u0391\",\n \"\\u0388\": \"\\u0395\",\n \"\\u0389\": \"\\u0397\",\n \"\\u038A\": \"\\u0399\",\n \"\\u03AA\": \"\\u0399\",\n \"\\u038C\": \"\\u039F\",\n \"\\u038E\": \"\\u03A5\",\n \"\\u03AB\": \"\\u03A5\",\n \"\\u038F\": \"\\u03A9\",\n \"\\u03AC\": \"\\u03B1\",\n \"\\u03AD\": \"\\u03B5\",\n \"\\u03AE\": \"\\u03B7\",\n \"\\u03AF\": \"\\u03B9\",\n \"\\u03CA\": \"\\u03B9\",\n \"\\u0390\": \"\\u03B9\",\n \"\\u03CC\": \"\\u03BF\",\n \"\\u03CD\": \"\\u03C5\",\n \"\\u03CB\": \"\\u03C5\",\n \"\\u03B0\": \"\\u03C5\",\n \"\\u03CE\": \"\\u03C9\",\n \"\\u03C2\": \"\\u03C3\",\n \"\\u2019\": '\\''\n };\n return diacritics;\n });\n S2.define('select2/data/base', ['../utils'], function (Utils) {\n function BaseAdapter($element, options) {\n BaseAdapter.__super__.constructor.call(this);\n }\n\n Utils.Extend(BaseAdapter, Utils.Observable);\n\n BaseAdapter.prototype.current = function (callback) {\n throw new Error('The `current` method must be defined in child classes.');\n };\n\n BaseAdapter.prototype.query = function (params, callback) {\n throw new Error('The `query` method must be defined in child classes.');\n };\n\n BaseAdapter.prototype.bind = function (container, $container) {// Can be implemented in subclasses\n };\n\n BaseAdapter.prototype.destroy = function () {// Can be implemented in subclasses\n };\n\n BaseAdapter.prototype.generateResultId = function (container, data) {\n var id = container.id + '-result-';\n id += Utils.generateChars(4);\n\n if (data.id != null) {\n id += '-' + data.id.toString();\n } else {\n id += '-' + Utils.generateChars(4);\n }\n\n return id;\n };\n\n return BaseAdapter;\n });\n S2.define('select2/data/select', ['./base', '../utils', 'jquery'], function (BaseAdapter, Utils, $) {\n function SelectAdapter($element, options) {\n this.$element = $element;\n this.options = options;\n\n SelectAdapter.__super__.constructor.call(this);\n }\n\n Utils.Extend(SelectAdapter, BaseAdapter);\n\n SelectAdapter.prototype.current = function (callback) {\n var data = [];\n var self = this;\n this.$element.find(':selected').each(function () {\n var $option = $(this);\n var option = self.item($option);\n data.push(option);\n });\n callback(data);\n };\n\n SelectAdapter.prototype.select = function (data) {\n var self = this;\n data.selected = true; // If data.element is a DOM node, use it instead\n\n if ($(data.element).is('option')) {\n data.element.selected = true;\n this.$element.trigger('input').trigger('change');\n return;\n }\n\n if (this.$element.prop('multiple')) {\n this.current(function (currentData) {\n var val = [];\n data = [data];\n data.push.apply(data, currentData);\n\n for (var d = 0; d < data.length; d++) {\n var id = data[d].id;\n\n if ($.inArray(id, val) === -1) {\n val.push(id);\n }\n }\n\n self.$element.val(val);\n self.$element.trigger('input').trigger('change');\n });\n } else {\n var val = data.id;\n this.$element.val(val);\n this.$element.trigger('input').trigger('change');\n }\n };\n\n SelectAdapter.prototype.unselect = function (data) {\n var self = this;\n\n if (!this.$element.prop('multiple')) {\n return;\n }\n\n data.selected = false;\n\n if ($(data.element).is('option')) {\n data.element.selected = false;\n this.$element.trigger('input').trigger('change');\n return;\n }\n\n this.current(function (currentData) {\n var val = [];\n\n for (var d = 0; d < currentData.length; d++) {\n var id = currentData[d].id;\n\n if (id !== data.id && $.inArray(id, val) === -1) {\n val.push(id);\n }\n }\n\n self.$element.val(val);\n self.$element.trigger('input').trigger('change');\n });\n };\n\n SelectAdapter.prototype.bind = function (container, $container) {\n var self = this;\n this.container = container;\n container.on('select', function (params) {\n self.select(params.data);\n });\n container.on('unselect', function (params) {\n self.unselect(params.data);\n });\n };\n\n SelectAdapter.prototype.destroy = function () {\n // Remove anything added to child elements\n this.$element.find('*').each(function () {\n // Remove any custom data set by Select2\n Utils.RemoveData(this);\n });\n };\n\n SelectAdapter.prototype.query = function (params, callback) {\n var data = [];\n var self = this;\n var $options = this.$element.children();\n $options.each(function () {\n var $option = $(this);\n\n if (!$option.is('option') && !$option.is('optgroup')) {\n return;\n }\n\n var option = self.item($option);\n var matches = self.matches(params, option);\n\n if (matches !== null) {\n data.push(matches);\n }\n });\n callback({\n results: data\n });\n };\n\n SelectAdapter.prototype.addOptions = function ($options) {\n Utils.appendMany(this.$element, $options);\n };\n\n SelectAdapter.prototype.option = function (data) {\n var option;\n\n if (data.children) {\n option = document.createElement('optgroup');\n option.label = data.text;\n } else {\n option = document.createElement('option');\n\n if (option.textContent !== undefined) {\n option.textContent = data.text;\n } else {\n option.innerText = data.text;\n }\n }\n\n if (data.id !== undefined) {\n option.value = data.id;\n }\n\n if (data.disabled) {\n option.disabled = true;\n }\n\n if (data.selected) {\n option.selected = true;\n }\n\n if (data.title) {\n option.title = data.title;\n }\n\n var $option = $(option);\n\n var normalizedData = this._normalizeItem(data);\n\n normalizedData.element = option; // Override the option's data with the combined data\n\n Utils.StoreData(option, 'data', normalizedData);\n return $option;\n };\n\n SelectAdapter.prototype.item = function ($option) {\n var data = {};\n data = Utils.GetData($option[0], 'data');\n\n if (data != null) {\n return data;\n }\n\n if ($option.is('option')) {\n data = {\n id: $option.val(),\n text: $option.text(),\n disabled: $option.prop('disabled'),\n selected: $option.prop('selected'),\n title: $option.prop('title')\n };\n } else if ($option.is('optgroup')) {\n data = {\n text: $option.prop('label'),\n children: [],\n title: $option.prop('title')\n };\n var $children = $option.children('option');\n var children = [];\n\n for (var c = 0; c < $children.length; c++) {\n var $child = $($children[c]);\n var child = this.item($child);\n children.push(child);\n }\n\n data.children = children;\n }\n\n data = this._normalizeItem(data);\n data.element = $option[0];\n Utils.StoreData($option[0], 'data', data);\n return data;\n };\n\n SelectAdapter.prototype._normalizeItem = function (item) {\n if (item !== Object(item)) {\n item = {\n id: item,\n text: item\n };\n }\n\n item = $.extend({}, {\n text: ''\n }, item);\n var defaults = {\n selected: false,\n disabled: false\n };\n\n if (item.id != null) {\n item.id = item.id.toString();\n }\n\n if (item.text != null) {\n item.text = item.text.toString();\n }\n\n if (item._resultId == null && item.id && this.container != null) {\n item._resultId = this.generateResultId(this.container, item);\n }\n\n return $.extend({}, defaults, item);\n };\n\n SelectAdapter.prototype.matches = function (params, data) {\n var matcher = this.options.get('matcher');\n return matcher(params, data);\n };\n\n return SelectAdapter;\n });\n S2.define('select2/data/array', ['./select', '../utils', 'jquery'], function (SelectAdapter, Utils, $) {\n function ArrayAdapter($element, options) {\n this._dataToConvert = options.get('data') || [];\n\n ArrayAdapter.__super__.constructor.call(this, $element, options);\n }\n\n Utils.Extend(ArrayAdapter, SelectAdapter);\n\n ArrayAdapter.prototype.bind = function (container, $container) {\n ArrayAdapter.__super__.bind.call(this, container, $container);\n\n this.addOptions(this.convertToOptions(this._dataToConvert));\n };\n\n ArrayAdapter.prototype.select = function (data) {\n var $option = this.$element.find('option').filter(function (i, elm) {\n return elm.value == data.id.toString();\n });\n\n if ($option.length === 0) {\n $option = this.option(data);\n this.addOptions($option);\n }\n\n ArrayAdapter.__super__.select.call(this, data);\n };\n\n ArrayAdapter.prototype.convertToOptions = function (data) {\n var self = this;\n var $existing = this.$element.find('option');\n var existingIds = $existing.map(function () {\n return self.item($(this)).id;\n }).get();\n var $options = []; // Filter out all items except for the one passed in the argument\n\n function onlyItem(item) {\n return function () {\n return $(this).val() == item.id;\n };\n }\n\n for (var d = 0; d < data.length; d++) {\n var item = this._normalizeItem(data[d]); // Skip items which were pre-loaded, only merge the data\n\n\n if ($.inArray(item.id, existingIds) >= 0) {\n var $existingOption = $existing.filter(onlyItem(item));\n var existingData = this.item($existingOption);\n var newData = $.extend(true, {}, item, existingData);\n var $newOption = this.option(newData);\n $existingOption.replaceWith($newOption);\n continue;\n }\n\n var $option = this.option(item);\n\n if (item.children) {\n var $children = this.convertToOptions(item.children);\n Utils.appendMany($option, $children);\n }\n\n $options.push($option);\n }\n\n return $options;\n };\n\n return ArrayAdapter;\n });\n S2.define('select2/data/ajax', ['./array', '../utils', 'jquery'], function (ArrayAdapter, Utils, $) {\n function AjaxAdapter($element, options) {\n this.ajaxOptions = this._applyDefaults(options.get('ajax'));\n\n if (this.ajaxOptions.processResults != null) {\n this.processResults = this.ajaxOptions.processResults;\n }\n\n AjaxAdapter.__super__.constructor.call(this, $element, options);\n }\n\n Utils.Extend(AjaxAdapter, ArrayAdapter);\n\n AjaxAdapter.prototype._applyDefaults = function (options) {\n var defaults = {\n data: function data(params) {\n return $.extend({}, params, {\n q: params.term\n });\n },\n transport: function transport(params, success, failure) {\n var $request = $.ajax(params);\n $request.then(success);\n $request.fail(failure);\n return $request;\n }\n };\n return $.extend({}, defaults, options, true);\n };\n\n AjaxAdapter.prototype.processResults = function (results) {\n return results;\n };\n\n AjaxAdapter.prototype.query = function (params, callback) {\n var matches = [];\n var self = this;\n\n if (this._request != null) {\n // JSONP requests cannot always be aborted\n if ($.isFunction(this._request.abort)) {\n this._request.abort();\n }\n\n this._request = null;\n }\n\n var options = $.extend({\n type: 'GET'\n }, this.ajaxOptions);\n\n if (typeof options.url === 'function') {\n options.url = options.url.call(this.$element, params);\n }\n\n if (typeof options.data === 'function') {\n options.data = options.data.call(this.$element, params);\n }\n\n function request() {\n var $request = options.transport(options, function (data) {\n var results = self.processResults(data, params);\n\n if (self.options.get('debug') && window.console && console.error) {\n // Check to make sure that the response included a `results` key.\n if (!results || !results.results || !$.isArray(results.results)) {\n console.error('Select2: The AJAX results did not return an array in the ' + '`results` key of the response.');\n }\n }\n\n callback(results);\n }, function () {\n // Attempt to detect if a request was aborted\n // Only works if the transport exposes a status property\n if ('status' in $request && ($request.status === 0 || $request.status === '0')) {\n return;\n }\n\n self.trigger('results:message', {\n message: 'errorLoading'\n });\n });\n self._request = $request;\n }\n\n if (this.ajaxOptions.delay && params.term != null) {\n if (this._queryTimeout) {\n window.clearTimeout(this._queryTimeout);\n }\n\n this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\n } else {\n request();\n }\n };\n\n return AjaxAdapter;\n });\n S2.define('select2/data/tags', ['jquery'], function ($) {\n function Tags(decorated, $element, options) {\n var tags = options.get('tags');\n var createTag = options.get('createTag');\n\n if (createTag !== undefined) {\n this.createTag = createTag;\n }\n\n var insertTag = options.get('insertTag');\n\n if (insertTag !== undefined) {\n this.insertTag = insertTag;\n }\n\n decorated.call(this, $element, options);\n\n if ($.isArray(tags)) {\n for (var t = 0; t < tags.length; t++) {\n var tag = tags[t];\n\n var item = this._normalizeItem(tag);\n\n var $option = this.option(item);\n this.$element.append($option);\n }\n }\n }\n\n Tags.prototype.query = function (decorated, params, callback) {\n var self = this;\n\n this._removeOldTags();\n\n if (params.term == null || params.page != null) {\n decorated.call(this, params, callback);\n return;\n }\n\n function wrapper(obj, child) {\n var data = obj.results;\n\n for (var i = 0; i < data.length; i++) {\n var option = data[i];\n var checkChildren = option.children != null && !wrapper({\n results: option.children\n }, true);\n var optionText = (option.text || '').toUpperCase();\n var paramsTerm = (params.term || '').toUpperCase();\n var checkText = optionText === paramsTerm;\n\n if (checkText || checkChildren) {\n if (child) {\n return false;\n }\n\n obj.data = data;\n callback(obj);\n return;\n }\n }\n\n if (child) {\n return true;\n }\n\n var tag = self.createTag(params);\n\n if (tag != null) {\n var $option = self.option(tag);\n $option.attr('data-select2-tag', true);\n self.addOptions([$option]);\n self.insertTag(data, tag);\n }\n\n obj.results = data;\n callback(obj);\n }\n\n decorated.call(this, params, wrapper);\n };\n\n Tags.prototype.createTag = function (decorated, params) {\n var term = $.trim(params.term);\n\n if (term === '') {\n return null;\n }\n\n return {\n id: term,\n text: term\n };\n };\n\n Tags.prototype.insertTag = function (_, data, tag) {\n data.unshift(tag);\n };\n\n Tags.prototype._removeOldTags = function (_) {\n var $options = this.$element.find('option[data-select2-tag]');\n $options.each(function () {\n if (this.selected) {\n return;\n }\n\n $(this).remove();\n });\n };\n\n return Tags;\n });\n S2.define('select2/data/tokenizer', ['jquery'], function ($) {\n function Tokenizer(decorated, $element, options) {\n var tokenizer = options.get('tokenizer');\n\n if (tokenizer !== undefined) {\n this.tokenizer = tokenizer;\n }\n\n decorated.call(this, $element, options);\n }\n\n Tokenizer.prototype.bind = function (decorated, container, $container) {\n decorated.call(this, container, $container);\n this.$search = container.dropdown.$search || container.selection.$search || $container.find('.select2-search__field');\n };\n\n Tokenizer.prototype.query = function (decorated, params, callback) {\n var self = this;\n\n function createAndSelect(data) {\n // Normalize the data object so we can use it for checks\n var item = self._normalizeItem(data); // Check if the data object already exists as a tag\n // Select it if it doesn't\n\n\n var $existingOptions = self.$element.find('option').filter(function () {\n return $(this).val() === item.id;\n }); // If an existing option wasn't found for it, create the option\n\n if (!$existingOptions.length) {\n var $option = self.option(item);\n $option.attr('data-select2-tag', true);\n\n self._removeOldTags();\n\n self.addOptions([$option]);\n } // Select the item, now that we know there is an option for it\n\n\n select(item);\n }\n\n function select(data) {\n self.trigger('select', {\n data: data\n });\n }\n\n params.term = params.term || '';\n var tokenData = this.tokenizer(params, this.options, createAndSelect);\n\n if (tokenData.term !== params.term) {\n // Replace the search term if we have the search box\n if (this.$search.length) {\n this.$search.val(tokenData.term);\n this.$search.trigger('focus');\n }\n\n params.term = tokenData.term;\n }\n\n decorated.call(this, params, callback);\n };\n\n Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\n var separators = options.get('tokenSeparators') || [];\n var term = params.term;\n var i = 0;\n\n var createTag = this.createTag || function (params) {\n return {\n id: params.term,\n text: params.term\n };\n };\n\n while (i < term.length) {\n var termChar = term[i];\n\n if ($.inArray(termChar, separators) === -1) {\n i++;\n continue;\n }\n\n var part = term.substr(0, i);\n var partParams = $.extend({}, params, {\n term: part\n });\n var data = createTag(partParams);\n\n if (data == null) {\n i++;\n continue;\n }\n\n callback(data); // Reset the term to not include the tokenized portion\n\n term = term.substr(i + 1) || '';\n i = 0;\n }\n\n return {\n term: term\n };\n };\n\n return Tokenizer;\n });\n S2.define('select2/data/minimumInputLength', [], function () {\n function MinimumInputLength(decorated, $e, options) {\n this.minimumInputLength = options.get('minimumInputLength');\n decorated.call(this, $e, options);\n }\n\n MinimumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\n\n if (params.term.length < this.minimumInputLength) {\n this.trigger('results:message', {\n message: 'inputTooShort',\n args: {\n minimum: this.minimumInputLength,\n input: params.term,\n params: params\n }\n });\n return;\n }\n\n decorated.call(this, params, callback);\n };\n\n return MinimumInputLength;\n });\n S2.define('select2/data/maximumInputLength', [], function () {\n function MaximumInputLength(decorated, $e, options) {\n this.maximumInputLength = options.get('maximumInputLength');\n decorated.call(this, $e, options);\n }\n\n MaximumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\n\n if (this.maximumInputLength > 0 && params.term.length > this.maximumInputLength) {\n this.trigger('results:message', {\n message: 'inputTooLong',\n args: {\n maximum: this.maximumInputLength,\n input: params.term,\n params: params\n }\n });\n return;\n }\n\n decorated.call(this, params, callback);\n };\n\n return MaximumInputLength;\n });\n S2.define('select2/data/maximumSelectionLength', [], function () {\n function MaximumSelectionLength(decorated, $e, options) {\n this.maximumSelectionLength = options.get('maximumSelectionLength');\n decorated.call(this, $e, options);\n }\n\n MaximumSelectionLength.prototype.bind = function (decorated, container, $container) {\n var self = this;\n decorated.call(this, container, $container);\n container.on('select', function () {\n self._checkIfMaximumSelected();\n });\n };\n\n MaximumSelectionLength.prototype.query = function (decorated, params, callback) {\n var self = this;\n\n this._checkIfMaximumSelected(function () {\n decorated.call(self, params, callback);\n });\n };\n\n MaximumSelectionLength.prototype._checkIfMaximumSelected = function (_, successCallback) {\n var self = this;\n this.current(function (currentData) {\n var count = currentData != null ? currentData.length : 0;\n\n if (self.maximumSelectionLength > 0 && count >= self.maximumSelectionLength) {\n self.trigger('results:message', {\n message: 'maximumSelected',\n args: {\n maximum: self.maximumSelectionLength\n }\n });\n return;\n }\n\n if (successCallback) {\n successCallback();\n }\n });\n };\n\n return MaximumSelectionLength;\n });\n S2.define('select2/dropdown', ['jquery', './utils'], function ($, Utils) {\n function Dropdown($element, options) {\n this.$element = $element;\n this.options = options;\n\n Dropdown.__super__.constructor.call(this);\n }\n\n Utils.Extend(Dropdown, Utils.Observable);\n\n Dropdown.prototype.render = function () {\n var $dropdown = $('' + ' ' + ' ');\n $dropdown.attr('dir', this.options.get('dir'));\n this.$dropdown = $dropdown;\n return $dropdown;\n };\n\n Dropdown.prototype.bind = function () {// Should be implemented in subclasses\n };\n\n Dropdown.prototype.position = function ($dropdown, $container) {// Should be implemented in subclasses\n };\n\n Dropdown.prototype.destroy = function () {\n // Remove the dropdown from the DOM\n this.$dropdown.remove();\n };\n\n return Dropdown;\n });\n S2.define('select2/dropdown/search', ['jquery', '../utils'], function ($, Utils) {\n function Search() {}\n\n Search.prototype.render = function (decorated) {\n var $rendered = decorated.call(this);\n var $search = $('' + ' ' + ' ');\n this.$searchContainer = $search;\n this.$search = $search.find('input');\n $rendered.prepend($search);\n return $rendered;\n };\n\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n var resultsId = container.id + '-results';\n decorated.call(this, container, $container);\n this.$search.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n self._keyUpPrevented = evt.isDefaultPrevented();\n }); // Workaround for browsers which do not support the `input` event\n // This will prevent double-triggering of events for browsers which support\n // both the `keyup` and `input` events.\n\n this.$search.on('input', function (evt) {\n // Unbind the duplicated `keyup` event\n $(this).off('keyup');\n });\n this.$search.on('keyup input', function (evt) {\n self.handleSearch(evt);\n });\n container.on('open', function () {\n self.$search.attr('tabindex', 0);\n self.$search.attr('aria-controls', resultsId);\n self.$search.trigger('focus');\n window.setTimeout(function () {\n self.$search.trigger('focus');\n }, 0);\n });\n container.on('close', function () {\n self.$search.attr('tabindex', -1);\n self.$search.removeAttr('aria-controls');\n self.$search.removeAttr('aria-activedescendant');\n self.$search.val('');\n self.$search.trigger('blur');\n });\n container.on('focus', function () {\n if (!container.isOpen()) {\n self.$search.trigger('focus');\n }\n });\n container.on('results:all', function (params) {\n if (params.query.term == null || params.query.term === '') {\n var showSearch = self.showSearch(params);\n\n if (showSearch) {\n self.$searchContainer.removeClass('select2-search--hide');\n } else {\n self.$searchContainer.addClass('select2-search--hide');\n }\n }\n });\n container.on('results:focus', function (params) {\n if (params.data._resultId) {\n self.$search.attr('aria-activedescendant', params.data._resultId);\n } else {\n self.$search.removeAttr('aria-activedescendant');\n }\n });\n };\n\n Search.prototype.handleSearch = function (evt) {\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n this.trigger('query', {\n term: input\n });\n }\n\n this._keyUpPrevented = false;\n };\n\n Search.prototype.showSearch = function (_, params) {\n return true;\n };\n\n return Search;\n });\n S2.define('select2/dropdown/hidePlaceholder', [], function () {\n function HidePlaceholder(decorated, $element, options, dataAdapter) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n decorated.call(this, $element, options, dataAdapter);\n }\n\n HidePlaceholder.prototype.append = function (decorated, data) {\n data.results = this.removePlaceholder(data.results);\n decorated.call(this, data);\n };\n\n HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n\n return placeholder;\n };\n\n HidePlaceholder.prototype.removePlaceholder = function (_, data) {\n var modifiedData = data.slice(0);\n\n for (var d = data.length - 1; d >= 0; d--) {\n var item = data[d];\n\n if (this.placeholder.id === item.id) {\n modifiedData.splice(d, 1);\n }\n }\n\n return modifiedData;\n };\n\n return HidePlaceholder;\n });\n S2.define('select2/dropdown/infiniteScroll', ['jquery'], function ($) {\n function InfiniteScroll(decorated, $element, options, dataAdapter) {\n this.lastParams = {};\n decorated.call(this, $element, options, dataAdapter);\n this.$loadingMore = this.createLoadingMore();\n this.loading = false;\n }\n\n InfiniteScroll.prototype.append = function (decorated, data) {\n this.$loadingMore.remove();\n this.loading = false;\n decorated.call(this, data);\n\n if (this.showLoadingMore(data)) {\n this.$results.append(this.$loadingMore);\n this.loadMoreIfNeeded();\n }\n };\n\n InfiniteScroll.prototype.bind = function (decorated, container, $container) {\n var self = this;\n decorated.call(this, container, $container);\n container.on('query', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n container.on('query:append', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n this.$results.on('scroll', this.loadMoreIfNeeded.bind(this));\n };\n\n InfiniteScroll.prototype.loadMoreIfNeeded = function () {\n var isLoadMoreVisible = $.contains(document.documentElement, this.$loadingMore[0]);\n\n if (this.loading || !isLoadMoreVisible) {\n return;\n }\n\n var currentOffset = this.$results.offset().top + this.$results.outerHeight(false);\n var loadingMoreOffset = this.$loadingMore.offset().top + this.$loadingMore.outerHeight(false);\n\n if (currentOffset + 50 >= loadingMoreOffset) {\n this.loadMore();\n }\n };\n\n InfiniteScroll.prototype.loadMore = function () {\n this.loading = true;\n var params = $.extend({}, {\n page: 1\n }, this.lastParams);\n params.page++;\n this.trigger('query:append', params);\n };\n\n InfiniteScroll.prototype.showLoadingMore = function (_, data) {\n return data.pagination && data.pagination.more;\n };\n\n InfiniteScroll.prototype.createLoadingMore = function () {\n var $option = $(' ');\n var message = this.options.get('translations').get('loadingMore');\n $option.html(message(this.lastParams));\n return $option;\n };\n\n return InfiniteScroll;\n });\n S2.define('select2/dropdown/attachBody', ['jquery', '../utils'], function ($, Utils) {\n function AttachBody(decorated, $element, options) {\n this.$dropdownParent = $(options.get('dropdownParent') || document.body);\n decorated.call(this, $element, options);\n }\n\n AttachBody.prototype.bind = function (decorated, container, $container) {\n var self = this;\n decorated.call(this, container, $container);\n container.on('open', function () {\n self._showDropdown();\n\n self._attachPositioningHandler(container); // Must bind after the results handlers to ensure correct sizing\n\n\n self._bindContainerResultHandlers(container);\n });\n container.on('close', function () {\n self._hideDropdown();\n\n self._detachPositioningHandler(container);\n });\n this.$dropdownContainer.on('mousedown', function (evt) {\n evt.stopPropagation();\n });\n };\n\n AttachBody.prototype.destroy = function (decorated) {\n decorated.call(this);\n this.$dropdownContainer.remove();\n };\n\n AttachBody.prototype.position = function (decorated, $dropdown, $container) {\n // Clone all of the container classes\n $dropdown.attr('class', $container.attr('class'));\n $dropdown.removeClass('select2');\n $dropdown.addClass('select2-container--open');\n $dropdown.css({\n position: 'absolute',\n top: -999999\n });\n this.$container = $container;\n };\n\n AttachBody.prototype.render = function (decorated) {\n var $container = $(' ');\n var $dropdown = decorated.call(this);\n $container.append($dropdown);\n this.$dropdownContainer = $container;\n return $container;\n };\n\n AttachBody.prototype._hideDropdown = function (decorated) {\n this.$dropdownContainer.detach();\n };\n\n AttachBody.prototype._bindContainerResultHandlers = function (decorated, container) {\n // These should only be bound once\n if (this._containerResultsHandlersBound) {\n return;\n }\n\n var self = this;\n container.on('results:all', function () {\n self._positionDropdown();\n\n self._resizeDropdown();\n });\n container.on('results:append', function () {\n self._positionDropdown();\n\n self._resizeDropdown();\n });\n container.on('results:message', function () {\n self._positionDropdown();\n\n self._resizeDropdown();\n });\n container.on('select', function () {\n self._positionDropdown();\n\n self._resizeDropdown();\n });\n container.on('unselect', function () {\n self._positionDropdown();\n\n self._resizeDropdown();\n });\n this._containerResultsHandlersBound = true;\n };\n\n AttachBody.prototype._attachPositioningHandler = function (decorated, container) {\n var self = this;\n var scrollEvent = 'scroll.select2.' + container.id;\n var resizeEvent = 'resize.select2.' + container.id;\n var orientationEvent = 'orientationchange.select2.' + container.id;\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.each(function () {\n Utils.StoreData(this, 'select2-scroll-position', {\n x: $(this).scrollLeft(),\n y: $(this).scrollTop()\n });\n });\n $watchers.on(scrollEvent, function (ev) {\n var position = Utils.GetData(this, 'select2-scroll-position');\n $(this).scrollTop(position.y);\n });\n $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent, function (e) {\n self._positionDropdown();\n\n self._resizeDropdown();\n });\n };\n\n AttachBody.prototype._detachPositioningHandler = function (decorated, container) {\n var scrollEvent = 'scroll.select2.' + container.id;\n var resizeEvent = 'resize.select2.' + container.id;\n var orientationEvent = 'orientationchange.select2.' + container.id;\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.off(scrollEvent);\n $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n };\n\n AttachBody.prototype._positionDropdown = function () {\n var $window = $(window);\n var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above');\n var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below');\n var newDirection = null;\n var offset = this.$container.offset();\n offset.bottom = offset.top + this.$container.outerHeight(false);\n var container = {\n height: this.$container.outerHeight(false)\n };\n container.top = offset.top;\n container.bottom = offset.top + container.height;\n var dropdown = {\n height: this.$dropdown.outerHeight(false)\n };\n var viewport = {\n top: $window.scrollTop(),\n bottom: $window.scrollTop() + $window.height()\n };\n var enoughRoomAbove = viewport.top < offset.top - dropdown.height;\n var enoughRoomBelow = viewport.bottom > offset.bottom + dropdown.height;\n var css = {\n left: offset.left,\n top: container.bottom\n }; // Determine what the parent element is to use for calculating the offset\n\n var $offsetParent = this.$dropdownParent; // For statically positioned elements, we need to get the element\n // that is determining the offset\n\n if ($offsetParent.css('position') === 'static') {\n $offsetParent = $offsetParent.offsetParent();\n }\n\n var parentOffset = {\n top: 0,\n left: 0\n };\n\n if ($.contains(document.body, $offsetParent[0]) || $offsetParent[0].isConnected) {\n parentOffset = $offsetParent.offset();\n }\n\n css.top -= parentOffset.top;\n css.left -= parentOffset.left;\n\n if (!isCurrentlyAbove && !isCurrentlyBelow) {\n newDirection = 'below';\n }\n\n if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\n newDirection = 'above';\n } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\n newDirection = 'below';\n }\n\n if (newDirection == 'above' || isCurrentlyAbove && newDirection !== 'below') {\n css.top = container.top - parentOffset.top - dropdown.height;\n }\n\n if (newDirection != null) {\n this.$dropdown.removeClass('select2-dropdown--below select2-dropdown--above').addClass('select2-dropdown--' + newDirection);\n this.$container.removeClass('select2-container--below select2-container--above').addClass('select2-container--' + newDirection);\n }\n\n this.$dropdownContainer.css(css);\n };\n\n AttachBody.prototype._resizeDropdown = function () {\n var css = {\n width: this.$container.outerWidth(false) + 'px'\n };\n\n if (this.options.get('dropdownAutoWidth')) {\n css.minWidth = css.width;\n css.position = 'relative';\n css.width = 'auto';\n }\n\n this.$dropdown.css(css);\n };\n\n AttachBody.prototype._showDropdown = function (decorated) {\n this.$dropdownContainer.appendTo(this.$dropdownParent);\n\n this._positionDropdown();\n\n this._resizeDropdown();\n };\n\n return AttachBody;\n });\n S2.define('select2/dropdown/minimumResultsForSearch', [], function () {\n function countResults(data) {\n var count = 0;\n\n for (var d = 0; d < data.length; d++) {\n var item = data[d];\n\n if (item.children) {\n count += countResults(item.children);\n } else {\n count++;\n }\n }\n\n return count;\n }\n\n function MinimumResultsForSearch(decorated, $element, options, dataAdapter) {\n this.minimumResultsForSearch = options.get('minimumResultsForSearch');\n\n if (this.minimumResultsForSearch < 0) {\n this.minimumResultsForSearch = Infinity;\n }\n\n decorated.call(this, $element, options, dataAdapter);\n }\n\n MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\n if (countResults(params.data.results) < this.minimumResultsForSearch) {\n return false;\n }\n\n return decorated.call(this, params);\n };\n\n return MinimumResultsForSearch;\n });\n S2.define('select2/dropdown/selectOnClose', ['../utils'], function (Utils) {\n function SelectOnClose() {}\n\n SelectOnClose.prototype.bind = function (decorated, container, $container) {\n var self = this;\n decorated.call(this, container, $container);\n container.on('close', function (params) {\n self._handleSelectOnClose(params);\n });\n };\n\n SelectOnClose.prototype._handleSelectOnClose = function (_, params) {\n if (params && params.originalSelect2Event != null) {\n var event = params.originalSelect2Event; // Don't select an item if the close event was triggered from a select or\n // unselect event\n\n if (event._type === 'select' || event._type === 'unselect') {\n return;\n }\n }\n\n var $highlightedResults = this.getHighlightedResults(); // Only select highlighted results\n\n if ($highlightedResults.length < 1) {\n return;\n }\n\n var data = Utils.GetData($highlightedResults[0], 'data'); // Don't re-select already selected resulte\n\n if (data.element != null && data.element.selected || data.element == null && data.selected) {\n return;\n }\n\n this.trigger('select', {\n data: data\n });\n };\n\n return SelectOnClose;\n });\n S2.define('select2/dropdown/closeOnSelect', [], function () {\n function CloseOnSelect() {}\n\n CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n var self = this;\n decorated.call(this, container, $container);\n container.on('select', function (evt) {\n self._selectTriggered(evt);\n });\n container.on('unselect', function (evt) {\n self._selectTriggered(evt);\n });\n };\n\n CloseOnSelect.prototype._selectTriggered = function (_, evt) {\n var originalEvent = evt.originalEvent; // Don't close if the control key is being held\n\n if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) {\n return;\n }\n\n this.trigger('close', {\n originalEvent: originalEvent,\n originalSelect2Event: evt\n });\n };\n\n return CloseOnSelect;\n });\n S2.define('select2/i18n/en', [], function () {\n // English\n return {\n errorLoading: function errorLoading() {\n return 'The results could not be loaded.';\n },\n inputTooLong: function inputTooLong(args) {\n var overChars = args.input.length - args.maximum;\n var message = 'Please delete ' + overChars + ' character';\n\n if (overChars != 1) {\n message += 's';\n }\n\n return message;\n },\n inputTooShort: function inputTooShort(args) {\n var remainingChars = args.minimum - args.input.length;\n var message = 'Please enter ' + remainingChars + ' or more characters';\n return message;\n },\n loadingMore: function loadingMore() {\n return 'Loading more results…';\n },\n maximumSelected: function maximumSelected(args) {\n var message = 'You can only select ' + args.maximum + ' item';\n\n if (args.maximum != 1) {\n message += 's';\n }\n\n return message;\n },\n noResults: function noResults() {\n return 'No results found';\n },\n searching: function searching() {\n return 'Searching…';\n },\n removeAllItems: function removeAllItems() {\n return 'Remove all items';\n }\n };\n });\n S2.define('select2/defaults', ['jquery', 'require', './results', './selection/single', './selection/multiple', './selection/placeholder', './selection/allowClear', './selection/search', './selection/eventRelay', './utils', './translation', './diacritics', './data/select', './data/array', './data/ajax', './data/tags', './data/tokenizer', './data/minimumInputLength', './data/maximumInputLength', './data/maximumSelectionLength', './dropdown', './dropdown/search', './dropdown/hidePlaceholder', './dropdown/infiniteScroll', './dropdown/attachBody', './dropdown/minimumResultsForSearch', './dropdown/selectOnClose', './dropdown/closeOnSelect', './i18n/en'], function ($, require, ResultsList, SingleSelection, MultipleSelection, Placeholder, AllowClear, SelectionSearch, EventRelay, Utils, Translation, DIACRITICS, SelectData, ArrayData, AjaxData, Tags, Tokenizer, MinimumInputLength, MaximumInputLength, MaximumSelectionLength, Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll, AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect, EnglishTranslation) {\n function Defaults() {\n this.reset();\n }\n\n Defaults.prototype.apply = function (options) {\n options = $.extend(true, {}, this.defaults, options);\n\n if (options.dataAdapter == null) {\n if (options.ajax != null) {\n options.dataAdapter = AjaxData;\n } else if (options.data != null) {\n options.dataAdapter = ArrayData;\n } else {\n options.dataAdapter = SelectData;\n }\n\n if (options.minimumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, MinimumInputLength);\n }\n\n if (options.maximumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, MaximumInputLength);\n }\n\n if (options.maximumSelectionLength > 0) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, MaximumSelectionLength);\n }\n\n if (options.tags) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\n }\n\n if (options.tokenSeparators != null || options.tokenizer != null) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, Tokenizer);\n }\n\n if (options.query != null) {\n var Query = require(options.amdBase + 'compat/query');\n\n options.dataAdapter = Utils.Decorate(options.dataAdapter, Query);\n }\n\n if (options.initSelection != null) {\n var InitSelection = require(options.amdBase + 'compat/initSelection');\n\n options.dataAdapter = Utils.Decorate(options.dataAdapter, InitSelection);\n }\n }\n\n if (options.resultsAdapter == null) {\n options.resultsAdapter = ResultsList;\n\n if (options.ajax != null) {\n options.resultsAdapter = Utils.Decorate(options.resultsAdapter, InfiniteScroll);\n }\n\n if (options.placeholder != null) {\n options.resultsAdapter = Utils.Decorate(options.resultsAdapter, HidePlaceholder);\n }\n\n if (options.selectOnClose) {\n options.resultsAdapter = Utils.Decorate(options.resultsAdapter, SelectOnClose);\n }\n }\n\n if (options.dropdownAdapter == null) {\n if (options.multiple) {\n options.dropdownAdapter = Dropdown;\n } else {\n var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\n options.dropdownAdapter = SearchableDropdown;\n }\n\n if (options.minimumResultsForSearch !== 0) {\n options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, MinimumResultsForSearch);\n }\n\n if (options.closeOnSelect) {\n options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, CloseOnSelect);\n }\n\n if (options.dropdownCssClass != null || options.dropdownCss != null || options.adaptDropdownCssClass != null) {\n var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');\n\n options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, DropdownCSS);\n }\n\n options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, AttachBody);\n }\n\n if (options.selectionAdapter == null) {\n if (options.multiple) {\n options.selectionAdapter = MultipleSelection;\n } else {\n options.selectionAdapter = SingleSelection;\n } // Add the placeholder mixin if a placeholder was specified\n\n\n if (options.placeholder != null) {\n options.selectionAdapter = Utils.Decorate(options.selectionAdapter, Placeholder);\n }\n\n if (options.allowClear) {\n options.selectionAdapter = Utils.Decorate(options.selectionAdapter, AllowClear);\n }\n\n if (options.multiple) {\n options.selectionAdapter = Utils.Decorate(options.selectionAdapter, SelectionSearch);\n }\n\n if (options.containerCssClass != null || options.containerCss != null || options.adaptContainerCssClass != null) {\n var ContainerCSS = require(options.amdBase + 'compat/containerCss');\n\n options.selectionAdapter = Utils.Decorate(options.selectionAdapter, ContainerCSS);\n }\n\n options.selectionAdapter = Utils.Decorate(options.selectionAdapter, EventRelay);\n } // If the defaults were not previously applied from an element, it is\n // possible for the language option to have not been resolved\n\n\n options.language = this._resolveLanguage(options.language); // Always fall back to English since it will always be complete\n\n options.language.push('en');\n var uniqueLanguages = [];\n\n for (var l = 0; l < options.language.length; l++) {\n var language = options.language[l];\n\n if (uniqueLanguages.indexOf(language) === -1) {\n uniqueLanguages.push(language);\n }\n }\n\n options.language = uniqueLanguages;\n options.translations = this._processTranslations(options.language, options.debug);\n return options;\n };\n\n Defaults.prototype.reset = function () {\n function stripDiacritics(text) {\n // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n function match(a) {\n return DIACRITICS[a] || a;\n }\n\n return text.replace(/[^\\u0000-\\u007E]/g, match);\n }\n\n function matcher(params, data) {\n // Always return the object if there is nothing to compare\n if ($.trim(params.term) === '') {\n return data;\n } // Do a recursive check for options with children\n\n\n if (data.children && data.children.length > 0) {\n // Clone the data object if there are children\n // This is required as we modify the object to remove any non-matches\n var match = $.extend(true, {}, data); // Check each child of the option\n\n for (var c = data.children.length - 1; c >= 0; c--) {\n var child = data.children[c];\n var matches = matcher(params, child); // If there wasn't a match, remove the object in the array\n\n if (matches == null) {\n match.children.splice(c, 1);\n }\n } // If any children matched, return the new object\n\n\n if (match.children.length > 0) {\n return match;\n } // If there were no matching children, check just the plain object\n\n\n return matcher(params, match);\n }\n\n var original = stripDiacritics(data.text).toUpperCase();\n var term = stripDiacritics(params.term).toUpperCase(); // Check if the text contains the term\n\n if (original.indexOf(term) > -1) {\n return data;\n } // If it doesn't contain the term, don't return anything\n\n\n return null;\n }\n\n this.defaults = {\n amdBase: './',\n amdLanguageBase: './i18n/',\n closeOnSelect: true,\n debug: false,\n dropdownAutoWidth: false,\n escapeMarkup: Utils.escapeMarkup,\n language: {},\n matcher: matcher,\n minimumInputLength: 0,\n maximumInputLength: 0,\n maximumSelectionLength: 0,\n minimumResultsForSearch: 0,\n selectOnClose: false,\n scrollAfterSelect: false,\n sorter: function sorter(data) {\n return data;\n },\n templateResult: function templateResult(result) {\n return result.text;\n },\n templateSelection: function templateSelection(selection) {\n return selection.text;\n },\n theme: 'default',\n width: 'resolve'\n };\n };\n\n Defaults.prototype.applyFromElement = function (options, $element) {\n var optionLanguage = options.language;\n var defaultLanguage = this.defaults.language;\n var elementLanguage = $element.prop('lang');\n var parentLanguage = $element.closest('[lang]').prop('lang');\n var languages = Array.prototype.concat.call(this._resolveLanguage(elementLanguage), this._resolveLanguage(optionLanguage), this._resolveLanguage(defaultLanguage), this._resolveLanguage(parentLanguage));\n options.language = languages;\n return options;\n };\n\n Defaults.prototype._resolveLanguage = function (language) {\n if (!language) {\n return [];\n }\n\n if ($.isEmptyObject(language)) {\n return [];\n }\n\n if ($.isPlainObject(language)) {\n return [language];\n }\n\n var languages;\n\n if (!$.isArray(language)) {\n languages = [language];\n } else {\n languages = language;\n }\n\n var resolvedLanguages = [];\n\n for (var l = 0; l < languages.length; l++) {\n resolvedLanguages.push(languages[l]);\n\n if (typeof languages[l] === 'string' && languages[l].indexOf('-') > 0) {\n // Extract the region information if it is included\n var languageParts = languages[l].split('-');\n var baseLanguage = languageParts[0];\n resolvedLanguages.push(baseLanguage);\n }\n }\n\n return resolvedLanguages;\n };\n\n Defaults.prototype._processTranslations = function (languages, debug) {\n var translations = new Translation();\n\n for (var l = 0; l < languages.length; l++) {\n var languageData = new Translation();\n var language = languages[l];\n\n if (typeof language === 'string') {\n try {\n // Try to load it with the original name\n languageData = Translation.loadPath(language);\n } catch (e) {\n try {\n // If we couldn't load it, check if it wasn't the full path\n language = this.defaults.amdLanguageBase + language;\n languageData = Translation.loadPath(language);\n } catch (ex) {\n // The translation could not be loaded at all. Sometimes this is\n // because of a configuration problem, other times this can be\n // because of how Select2 helps load all possible translation files\n if (debug && window.console && console.warn) {\n console.warn('Select2: The language file for \"' + language + '\" could ' + 'not be automatically loaded. A fallback will be used instead.');\n }\n }\n }\n } else if ($.isPlainObject(language)) {\n languageData = new Translation(language);\n } else {\n languageData = language;\n }\n\n translations.extend(languageData);\n }\n\n return translations;\n };\n\n Defaults.prototype.set = function (key, value) {\n var camelKey = $.camelCase(key);\n var data = {};\n data[camelKey] = value;\n\n var convertedData = Utils._convertData(data);\n\n $.extend(true, this.defaults, convertedData);\n };\n\n var defaults = new Defaults();\n return defaults;\n });\n S2.define('select2/options', ['require', 'jquery', './defaults', './utils'], function (require, $, Defaults, Utils) {\n function Options(options, $element) {\n this.options = options;\n\n if ($element != null) {\n this.fromElement($element);\n }\n\n if ($element != null) {\n this.options = Defaults.applyFromElement(this.options, $element);\n }\n\n this.options = Defaults.apply(this.options);\n\n if ($element && $element.is('input')) {\n var InputCompat = require(this.get('amdBase') + 'compat/inputData');\n\n this.options.dataAdapter = Utils.Decorate(this.options.dataAdapter, InputCompat);\n }\n }\n\n Options.prototype.fromElement = function ($e) {\n var excludedData = ['select2'];\n\n if (this.options.multiple == null) {\n this.options.multiple = $e.prop('multiple');\n }\n\n if (this.options.disabled == null) {\n this.options.disabled = $e.prop('disabled');\n }\n\n if (this.options.dir == null) {\n if ($e.prop('dir')) {\n this.options.dir = $e.prop('dir');\n } else if ($e.closest('[dir]').prop('dir')) {\n this.options.dir = $e.closest('[dir]').prop('dir');\n } else {\n this.options.dir = 'ltr';\n }\n }\n\n $e.prop('disabled', this.options.disabled);\n $e.prop('multiple', this.options.multiple);\n\n if (Utils.GetData($e[0], 'select2Tags')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn('Select2: The `data-select2-tags` attribute has been changed to ' + 'use the `data-data` and `data-tags=\"true\"` attributes and will be ' + 'removed in future versions of Select2.');\n }\n\n Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));\n Utils.StoreData($e[0], 'tags', true);\n }\n\n if (Utils.GetData($e[0], 'ajaxUrl')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn('Select2: The `data-ajax-url` attribute has been changed to ' + '`data-ajax--url` and support for the old attribute will be removed' + ' in future versions of Select2.');\n }\n\n $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));\n Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));\n }\n\n var dataset = {};\n\n function upperCaseLetter(_, letter) {\n return letter.toUpperCase();\n } // Pre-load all of the attributes which are prefixed with `data-`\n\n\n for (var attr = 0; attr < $e[0].attributes.length; attr++) {\n var attributeName = $e[0].attributes[attr].name;\n var prefix = 'data-';\n\n if (attributeName.substr(0, prefix.length) == prefix) {\n // Get the contents of the attribute after `data-`\n var dataName = attributeName.substring(prefix.length); // Get the data contents from the consistent source\n // This is more than likely the jQuery data helper\n\n var dataValue = Utils.GetData($e[0], dataName); // camelCase the attribute name to match the spec\n\n var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter); // Store the data attribute contents into the dataset since\n\n dataset[camelDataName] = dataValue;\n }\n } // Prefer the element's `dataset` attribute if it exists\n // jQuery 1.x does not correctly handle data attributes with multiple dashes\n\n\n if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\n dataset = $.extend(true, {}, $e[0].dataset, dataset);\n } // Prefer our internal data cache if it exists\n\n\n var data = $.extend(true, {}, Utils.GetData($e[0]), dataset);\n data = Utils._convertData(data);\n\n for (var key in data) {\n if ($.inArray(key, excludedData) > -1) {\n continue;\n }\n\n if ($.isPlainObject(this.options[key])) {\n $.extend(this.options[key], data[key]);\n } else {\n this.options[key] = data[key];\n }\n }\n\n return this;\n };\n\n Options.prototype.get = function (key) {\n return this.options[key];\n };\n\n Options.prototype.set = function (key, val) {\n this.options[key] = val;\n };\n\n return Options;\n });\n S2.define('select2/core', ['jquery', './options', './utils', './keys'], function ($, Options, Utils, KEYS) {\n var Select2 = function Select2($element, options) {\n if (Utils.GetData($element[0], 'select2') != null) {\n Utils.GetData($element[0], 'select2').destroy();\n }\n\n this.$element = $element;\n this.id = this._generateId($element);\n options = options || {};\n this.options = new Options(options, $element);\n\n Select2.__super__.constructor.call(this); // Set up the tabindex\n\n\n var tabindex = $element.attr('tabindex') || 0;\n Utils.StoreData($element[0], 'old-tabindex', tabindex);\n $element.attr('tabindex', '-1'); // Set up containers and adapters\n\n var DataAdapter = this.options.get('dataAdapter');\n this.dataAdapter = new DataAdapter($element, this.options);\n var $container = this.render();\n\n this._placeContainer($container);\n\n var SelectionAdapter = this.options.get('selectionAdapter');\n this.selection = new SelectionAdapter($element, this.options);\n this.$selection = this.selection.render();\n this.selection.position(this.$selection, $container);\n var DropdownAdapter = this.options.get('dropdownAdapter');\n this.dropdown = new DropdownAdapter($element, this.options);\n this.$dropdown = this.dropdown.render();\n this.dropdown.position(this.$dropdown, $container);\n var ResultsAdapter = this.options.get('resultsAdapter');\n this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n this.$results = this.results.render();\n this.results.position(this.$results, this.$dropdown); // Bind events\n\n var self = this; // Bind the container to all of the adapters\n\n this._bindAdapters(); // Register any DOM event handlers\n\n\n this._registerDomEvents(); // Register any internal event handlers\n\n\n this._registerDataEvents();\n\n this._registerSelectionEvents();\n\n this._registerDropdownEvents();\n\n this._registerResultsEvents();\n\n this._registerEvents(); // Set the initial state\n\n\n this.dataAdapter.current(function (initialData) {\n self.trigger('selection:update', {\n data: initialData\n });\n }); // Hide the original select\n\n $element.addClass('select2-hidden-accessible');\n $element.attr('aria-hidden', 'true'); // Synchronize any monitored attributes\n\n this._syncAttributes();\n\n Utils.StoreData($element[0], 'select2', this); // Ensure backwards compatibility with $element.data('select2').\n\n $element.data('select2', this);\n };\n\n Utils.Extend(Select2, Utils.Observable);\n\n Select2.prototype._generateId = function ($element) {\n var id = '';\n\n if ($element.attr('id') != null) {\n id = $element.attr('id');\n } else if ($element.attr('name') != null) {\n id = $element.attr('name') + '-' + Utils.generateChars(2);\n } else {\n id = Utils.generateChars(4);\n }\n\n id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n id = 'select2-' + id;\n return id;\n };\n\n Select2.prototype._placeContainer = function ($container) {\n $container.insertAfter(this.$element);\n\n var width = this._resolveWidth(this.$element, this.options.get('width'));\n\n if (width != null) {\n $container.css('width', width);\n }\n };\n\n Select2.prototype._resolveWidth = function ($element, method) {\n var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\n\n if (method == 'resolve') {\n var styleWidth = this._resolveWidth($element, 'style');\n\n if (styleWidth != null) {\n return styleWidth;\n }\n\n return this._resolveWidth($element, 'element');\n }\n\n if (method == 'element') {\n var elementWidth = $element.outerWidth(false);\n\n if (elementWidth <= 0) {\n return 'auto';\n }\n\n return elementWidth + 'px';\n }\n\n if (method == 'style') {\n var style = $element.attr('style');\n\n if (typeof style !== 'string') {\n return null;\n }\n\n var attrs = style.split(';');\n\n for (var i = 0, l = attrs.length; i < l; i = i + 1) {\n var attr = attrs[i].replace(/\\s/g, '');\n var matches = attr.match(WIDTH);\n\n if (matches !== null && matches.length >= 1) {\n return matches[1];\n }\n }\n\n return null;\n }\n\n if (method == 'computedstyle') {\n var computedStyle = window.getComputedStyle($element[0]);\n return computedStyle.width;\n }\n\n return method;\n };\n\n Select2.prototype._bindAdapters = function () {\n this.dataAdapter.bind(this, this.$container);\n this.selection.bind(this, this.$container);\n this.dropdown.bind(this, this.$container);\n this.results.bind(this, this.$container);\n };\n\n Select2.prototype._registerDomEvents = function () {\n var self = this;\n this.$element.on('change.select2', function () {\n self.dataAdapter.current(function (data) {\n self.trigger('selection:update', {\n data: data\n });\n });\n });\n this.$element.on('focus.select2', function (evt) {\n self.trigger('focus', evt);\n });\n this._syncA = Utils.bind(this._syncAttributes, this);\n this._syncS = Utils.bind(this._syncSubtree, this);\n\n if (this.$element[0].attachEvent) {\n this.$element[0].attachEvent('onpropertychange', this._syncA);\n }\n\n var observer = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;\n\n if (observer != null) {\n this._observer = new observer(function (mutations) {\n self._syncA();\n\n self._syncS(null, mutations);\n });\n\n this._observer.observe(this.$element[0], {\n attributes: true,\n childList: true,\n subtree: false\n });\n } else if (this.$element[0].addEventListener) {\n this.$element[0].addEventListener('DOMAttrModified', self._syncA, false);\n this.$element[0].addEventListener('DOMNodeInserted', self._syncS, false);\n this.$element[0].addEventListener('DOMNodeRemoved', self._syncS, false);\n }\n };\n\n Select2.prototype._registerDataEvents = function () {\n var self = this;\n this.dataAdapter.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerSelectionEvents = function () {\n var self = this;\n var nonRelayEvents = ['toggle', 'focus'];\n this.selection.on('toggle', function () {\n self.toggleDropdown();\n });\n this.selection.on('focus', function (params) {\n self.focus(params);\n });\n this.selection.on('*', function (name, params) {\n if ($.inArray(name, nonRelayEvents) !== -1) {\n return;\n }\n\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerDropdownEvents = function () {\n var self = this;\n this.dropdown.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerResultsEvents = function () {\n var self = this;\n this.results.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerEvents = function () {\n var self = this;\n this.on('open', function () {\n self.$container.addClass('select2-container--open');\n });\n this.on('close', function () {\n self.$container.removeClass('select2-container--open');\n });\n this.on('enable', function () {\n self.$container.removeClass('select2-container--disabled');\n });\n this.on('disable', function () {\n self.$container.addClass('select2-container--disabled');\n });\n this.on('blur', function () {\n self.$container.removeClass('select2-container--focus');\n });\n this.on('query', function (params) {\n if (!self.isOpen()) {\n self.trigger('open', {});\n }\n\n this.dataAdapter.query(params, function (data) {\n self.trigger('results:all', {\n data: data,\n query: params\n });\n });\n });\n this.on('query:append', function (params) {\n this.dataAdapter.query(params, function (data) {\n self.trigger('results:append', {\n data: data,\n query: params\n });\n });\n });\n this.on('keypress', function (evt) {\n var key = evt.which;\n\n if (self.isOpen()) {\n if (key === KEYS.ESC || key === KEYS.TAB || key === KEYS.UP && evt.altKey) {\n self.close(evt);\n evt.preventDefault();\n } else if (key === KEYS.ENTER) {\n self.trigger('results:select', {});\n evt.preventDefault();\n } else if (key === KEYS.SPACE && evt.ctrlKey) {\n self.trigger('results:toggle', {});\n evt.preventDefault();\n } else if (key === KEYS.UP) {\n self.trigger('results:previous', {});\n evt.preventDefault();\n } else if (key === KEYS.DOWN) {\n self.trigger('results:next', {});\n evt.preventDefault();\n }\n } else {\n if (key === KEYS.ENTER || key === KEYS.SPACE || key === KEYS.DOWN && evt.altKey) {\n self.open();\n evt.preventDefault();\n }\n }\n });\n };\n\n Select2.prototype._syncAttributes = function () {\n this.options.set('disabled', this.$element.prop('disabled'));\n\n if (this.isDisabled()) {\n if (this.isOpen()) {\n this.close();\n }\n\n this.trigger('disable', {});\n } else {\n this.trigger('enable', {});\n }\n };\n\n Select2.prototype._isChangeMutation = function (evt, mutations) {\n var changed = false;\n var self = this; // Ignore any mutation events raised for elements that aren't options or\n // optgroups. This handles the case when the select element is destroyed\n\n if (evt && evt.target && evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP') {\n return;\n }\n\n if (!mutations) {\n // If mutation events aren't supported, then we can only assume that the\n // change affected the selections\n changed = true;\n } else if (mutations.addedNodes && mutations.addedNodes.length > 0) {\n for (var n = 0; n < mutations.addedNodes.length; n++) {\n var node = mutations.addedNodes[n];\n\n if (node.selected) {\n changed = true;\n }\n }\n } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\n changed = true;\n } else if ($.isArray(mutations)) {\n $.each(mutations, function (evt, mutation) {\n if (self._isChangeMutation(evt, mutation)) {\n // We've found a change mutation.\n // Let's escape from the loop and continue\n changed = true;\n return false;\n }\n });\n }\n\n return changed;\n };\n\n Select2.prototype._syncSubtree = function (evt, mutations) {\n var changed = this._isChangeMutation(evt, mutations);\n\n var self = this; // Only re-pull the data if we think there is a change\n\n if (changed) {\n this.dataAdapter.current(function (currentData) {\n self.trigger('selection:update', {\n data: currentData\n });\n });\n }\n };\n /**\n * Override the trigger method to automatically trigger pre-events when\n * there are events that can be prevented.\n */\n\n\n Select2.prototype.trigger = function (name, args) {\n var actualTrigger = Select2.__super__.trigger;\n var preTriggerMap = {\n 'open': 'opening',\n 'close': 'closing',\n 'select': 'selecting',\n 'unselect': 'unselecting',\n 'clear': 'clearing'\n };\n\n if (args === undefined) {\n args = {};\n }\n\n if (name in preTriggerMap) {\n var preTriggerName = preTriggerMap[name];\n var preTriggerArgs = {\n prevented: false,\n name: name,\n args: args\n };\n actualTrigger.call(this, preTriggerName, preTriggerArgs);\n\n if (preTriggerArgs.prevented) {\n args.prevented = true;\n return;\n }\n }\n\n actualTrigger.call(this, name, args);\n };\n\n Select2.prototype.toggleDropdown = function () {\n if (this.isDisabled()) {\n return;\n }\n\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n };\n\n Select2.prototype.open = function () {\n if (this.isOpen()) {\n return;\n }\n\n if (this.isDisabled()) {\n return;\n }\n\n this.trigger('query', {});\n };\n\n Select2.prototype.close = function (evt) {\n if (!this.isOpen()) {\n return;\n }\n\n this.trigger('close', {\n originalEvent: evt\n });\n };\n /**\n * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n * object.\n *\n * @return {true} if the instance is not disabled.\n * @return {false} if the instance is disabled.\n */\n\n\n Select2.prototype.isEnabled = function () {\n return !this.isDisabled();\n };\n /**\n * Helper method to abstract the \"disabled\" state of this object.\n *\n * @return {true} if the disabled option is true.\n * @return {false} if the disabled option is false.\n */\n\n\n Select2.prototype.isDisabled = function () {\n return this.options.get('disabled');\n };\n\n Select2.prototype.isOpen = function () {\n return this.$container.hasClass('select2-container--open');\n };\n\n Select2.prototype.hasFocus = function () {\n return this.$container.hasClass('select2-container--focus');\n };\n\n Select2.prototype.focus = function (data) {\n // No need to re-trigger focus events if we are already focused\n if (this.hasFocus()) {\n return;\n }\n\n this.$container.addClass('select2-container--focus');\n this.trigger('focus', {});\n };\n\n Select2.prototype.enable = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn('Select2: The `select2(\"enable\")` method has been deprecated and will' + ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' + ' instead.');\n }\n\n if (args == null || args.length === 0) {\n args = [true];\n }\n\n var disabled = !args[0];\n this.$element.prop('disabled', disabled);\n };\n\n Select2.prototype.data = function () {\n if (this.options.get('debug') && arguments.length > 0 && window.console && console.warn) {\n console.warn('Select2: Data can no longer be set using `select2(\"data\")`. You ' + 'should consider setting the value instead using `$element.val()`.');\n }\n\n var data = [];\n this.dataAdapter.current(function (currentData) {\n data = currentData;\n });\n return data;\n };\n\n Select2.prototype.val = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn('Select2: The `select2(\"val\")` method has been deprecated and will be' + ' removed in later Select2 versions. Use $element.val() instead.');\n }\n\n if (args == null || args.length === 0) {\n return this.$element.val();\n }\n\n var newVal = args[0];\n\n if ($.isArray(newVal)) {\n newVal = $.map(newVal, function (obj) {\n return obj.toString();\n });\n }\n\n this.$element.val(newVal).trigger('input').trigger('change');\n };\n\n Select2.prototype.destroy = function () {\n this.$container.remove();\n\n if (this.$element[0].detachEvent) {\n this.$element[0].detachEvent('onpropertychange', this._syncA);\n }\n\n if (this._observer != null) {\n this._observer.disconnect();\n\n this._observer = null;\n } else if (this.$element[0].removeEventListener) {\n this.$element[0].removeEventListener('DOMAttrModified', this._syncA, false);\n this.$element[0].removeEventListener('DOMNodeInserted', this._syncS, false);\n this.$element[0].removeEventListener('DOMNodeRemoved', this._syncS, false);\n }\n\n this._syncA = null;\n this._syncS = null;\n this.$element.off('.select2');\n this.$element.attr('tabindex', Utils.GetData(this.$element[0], 'old-tabindex'));\n this.$element.removeClass('select2-hidden-accessible');\n this.$element.attr('aria-hidden', 'false');\n Utils.RemoveData(this.$element[0]);\n this.$element.removeData('select2');\n this.dataAdapter.destroy();\n this.selection.destroy();\n this.dropdown.destroy();\n this.results.destroy();\n this.dataAdapter = null;\n this.selection = null;\n this.dropdown = null;\n this.results = null;\n };\n\n Select2.prototype.render = function () {\n var $container = $('' + ' ' + ' ' + ' ');\n $container.attr('dir', this.options.get('dir'));\n this.$container = $container;\n this.$container.addClass('select2-container--' + this.options.get('theme'));\n Utils.StoreData($container[0], 'element', this.$element);\n return $container;\n };\n\n return Select2;\n });\n S2.define('select2/compat/utils', ['jquery'], function ($) {\n function syncCssClasses($dest, $src, adapter) {\n var classes,\n replacements = [],\n adapted;\n classes = $.trim($dest.attr('class'));\n\n if (classes) {\n classes = '' + classes; // for IE which returns object\n\n $(classes.split(/\\s+/)).each(function () {\n // Save all Select2 classes\n if (this.indexOf('select2-') === 0) {\n replacements.push(this);\n }\n });\n }\n\n classes = $.trim($src.attr('class'));\n\n if (classes) {\n classes = '' + classes; // for IE which returns object\n\n $(classes.split(/\\s+/)).each(function () {\n // Only adapt non-Select2 classes\n if (this.indexOf('select2-') !== 0) {\n adapted = adapter(this);\n\n if (adapted != null) {\n replacements.push(adapted);\n }\n }\n });\n }\n\n $dest.attr('class', replacements.join(' '));\n }\n\n return {\n syncCssClasses: syncCssClasses\n };\n });\n S2.define('select2/compat/containerCss', ['jquery', './utils'], function ($, CompatUtils) {\n // No-op CSS adapter that discards all classes by default\n function _containerAdapter(clazz) {\n return null;\n }\n\n function ContainerCSS() {}\n\n ContainerCSS.prototype.render = function (decorated) {\n var $container = decorated.call(this);\n var containerCssClass = this.options.get('containerCssClass') || '';\n\n if ($.isFunction(containerCssClass)) {\n containerCssClass = containerCssClass(this.$element);\n }\n\n var containerCssAdapter = this.options.get('adaptContainerCssClass');\n containerCssAdapter = containerCssAdapter || _containerAdapter;\n\n if (containerCssClass.indexOf(':all:') !== -1) {\n containerCssClass = containerCssClass.replace(':all:', '');\n var _cssAdapter = containerCssAdapter;\n\n containerCssAdapter = function containerCssAdapter(clazz) {\n var adapted = _cssAdapter(clazz);\n\n if (adapted != null) {\n // Append the old one along with the adapted one\n return adapted + ' ' + clazz;\n }\n\n return clazz;\n };\n }\n\n var containerCss = this.options.get('containerCss') || {};\n\n if ($.isFunction(containerCss)) {\n containerCss = containerCss(this.$element);\n }\n\n CompatUtils.syncCssClasses($container, this.$element, containerCssAdapter);\n $container.css(containerCss);\n $container.addClass(containerCssClass);\n return $container;\n };\n\n return ContainerCSS;\n });\n S2.define('select2/compat/dropdownCss', ['jquery', './utils'], function ($, CompatUtils) {\n // No-op CSS adapter that discards all classes by default\n function _dropdownAdapter(clazz) {\n return null;\n }\n\n function DropdownCSS() {}\n\n DropdownCSS.prototype.render = function (decorated) {\n var $dropdown = decorated.call(this);\n var dropdownCssClass = this.options.get('dropdownCssClass') || '';\n\n if ($.isFunction(dropdownCssClass)) {\n dropdownCssClass = dropdownCssClass(this.$element);\n }\n\n var dropdownCssAdapter = this.options.get('adaptDropdownCssClass');\n dropdownCssAdapter = dropdownCssAdapter || _dropdownAdapter;\n\n if (dropdownCssClass.indexOf(':all:') !== -1) {\n dropdownCssClass = dropdownCssClass.replace(':all:', '');\n var _cssAdapter = dropdownCssAdapter;\n\n dropdownCssAdapter = function dropdownCssAdapter(clazz) {\n var adapted = _cssAdapter(clazz);\n\n if (adapted != null) {\n // Append the old one along with the adapted one\n return adapted + ' ' + clazz;\n }\n\n return clazz;\n };\n }\n\n var dropdownCss = this.options.get('dropdownCss') || {};\n\n if ($.isFunction(dropdownCss)) {\n dropdownCss = dropdownCss(this.$element);\n }\n\n CompatUtils.syncCssClasses($dropdown, this.$element, dropdownCssAdapter);\n $dropdown.css(dropdownCss);\n $dropdown.addClass(dropdownCssClass);\n return $dropdown;\n };\n\n return DropdownCSS;\n });\n S2.define('select2/compat/initSelection', ['jquery'], function ($) {\n function InitSelection(decorated, $element, options) {\n if (options.get('debug') && window.console && console.warn) {\n console.warn('Select2: The `initSelection` option has been deprecated in favor' + ' of a custom data adapter that overrides the `current` method. ' + 'This method is now called multiple times instead of a single ' + 'time when the instance is initialized. Support will be removed ' + 'for the `initSelection` option in future versions of Select2');\n }\n\n this.initSelection = options.get('initSelection');\n this._isInitialized = false;\n decorated.call(this, $element, options);\n }\n\n InitSelection.prototype.current = function (decorated, callback) {\n var self = this;\n\n if (this._isInitialized) {\n decorated.call(this, callback);\n return;\n }\n\n this.initSelection.call(null, this.$element, function (data) {\n self._isInitialized = true;\n\n if (!$.isArray(data)) {\n data = [data];\n }\n\n callback(data);\n });\n };\n\n return InitSelection;\n });\n S2.define('select2/compat/inputData', ['jquery', '../utils'], function ($, Utils) {\n function InputData(decorated, $element, options) {\n this._currentData = [];\n this._valueSeparator = options.get('valueSeparator') || ',';\n\n if ($element.prop('type') === 'hidden') {\n if (options.get('debug') && console && console.warn) {\n console.warn('Select2: Using a hidden input with Select2 is no longer ' + 'supported and may stop working in the future. It is recommended ' + 'to use a `` element instead.');\n }\n }\n\n decorated.call(this, $element, options);\n }\n\n InputData.prototype.current = function (_, callback) {\n function getSelected(data, selectedIds) {\n var selected = [];\n\n if (data.selected || $.inArray(data.id, selectedIds) !== -1) {\n data.selected = true;\n selected.push(data);\n } else {\n data.selected = false;\n }\n\n if (data.children) {\n selected.push.apply(selected, getSelected(data.children, selectedIds));\n }\n\n return selected;\n }\n\n var selected = [];\n\n for (var d = 0; d < this._currentData.length; d++) {\n var data = this._currentData[d];\n selected.push.apply(selected, getSelected(data, this.$element.val().split(this._valueSeparator)));\n }\n\n callback(selected);\n };\n\n InputData.prototype.select = function (_, data) {\n if (!this.options.get('multiple')) {\n this.current(function (allData) {\n $.map(allData, function (data) {\n data.selected = false;\n });\n });\n this.$element.val(data.id);\n this.$element.trigger('input').trigger('change');\n } else {\n var value = this.$element.val();\n value += this._valueSeparator + data.id;\n this.$element.val(value);\n this.$element.trigger('input').trigger('change');\n }\n };\n\n InputData.prototype.unselect = function (_, data) {\n var self = this;\n data.selected = false;\n this.current(function (allData) {\n var values = [];\n\n for (var d = 0; d < allData.length; d++) {\n var item = allData[d];\n\n if (data.id == item.id) {\n continue;\n }\n\n values.push(item.id);\n }\n\n self.$element.val(values.join(self._valueSeparator));\n self.$element.trigger('input').trigger('change');\n });\n };\n\n InputData.prototype.query = function (_, params, callback) {\n var results = [];\n\n for (var d = 0; d < this._currentData.length; d++) {\n var data = this._currentData[d];\n var matches = this.matches(params, data);\n\n if (matches !== null) {\n results.push(matches);\n }\n }\n\n callback({\n results: results\n });\n };\n\n InputData.prototype.addOptions = function (_, $options) {\n var options = $.map($options, function ($option) {\n return Utils.GetData($option[0], 'data');\n });\n\n this._currentData.push.apply(this._currentData, options);\n };\n\n return InputData;\n });\n S2.define('select2/compat/matcher', ['jquery'], function ($) {\n function oldMatcher(matcher) {\n function wrappedMatcher(params, data) {\n var match = $.extend(true, {}, data);\n\n if (params.term == null || $.trim(params.term) === '') {\n return match;\n }\n\n if (data.children) {\n for (var c = data.children.length - 1; c >= 0; c--) {\n var child = data.children[c]; // Check if the child object matches\n // The old matcher returned a boolean true or false\n\n var doesMatch = matcher(params.term, child.text, child); // If the child didn't match, pop it off\n\n if (!doesMatch) {\n match.children.splice(c, 1);\n }\n }\n\n if (match.children.length > 0) {\n return match;\n }\n }\n\n if (matcher(params.term, data.text, data)) {\n return match;\n }\n\n return null;\n }\n\n return wrappedMatcher;\n }\n\n return oldMatcher;\n });\n S2.define('select2/compat/query', [], function () {\n function Query(decorated, $element, options) {\n if (options.get('debug') && window.console && console.warn) {\n console.warn('Select2: The `query` option has been deprecated in favor of a ' + 'custom data adapter that overrides the `query` method. Support ' + 'will be removed for the `query` option in future versions of ' + 'Select2.');\n }\n\n decorated.call(this, $element, options);\n }\n\n Query.prototype.query = function (_, params, callback) {\n params.callback = callback;\n var query = this.options.get('query');\n query.call(null, params);\n };\n\n return Query;\n });\n S2.define('select2/dropdown/attachContainer', [], function () {\n function AttachContainer(decorated, $element, options) {\n decorated.call(this, $element, options);\n }\n\n AttachContainer.prototype.position = function (decorated, $dropdown, $container) {\n var $dropdownContainer = $container.find('.dropdown-wrapper');\n $dropdownContainer.append($dropdown);\n $dropdown.addClass('select2-dropdown--below');\n $container.addClass('select2-container--below');\n };\n\n return AttachContainer;\n });\n S2.define('select2/dropdown/stopPropagation', [], function () {\n function StopPropagation() {}\n\n StopPropagation.prototype.bind = function (decorated, container, $container) {\n decorated.call(this, container, $container);\n var stoppedEvents = ['blur', 'change', 'click', 'dblclick', 'focus', 'focusin', 'focusout', 'input', 'keydown', 'keyup', 'keypress', 'mousedown', 'mouseenter', 'mouseleave', 'mousemove', 'mouseover', 'mouseup', 'search', 'touchend', 'touchstart'];\n this.$dropdown.on(stoppedEvents.join(' '), function (evt) {\n evt.stopPropagation();\n });\n };\n\n return StopPropagation;\n });\n S2.define('select2/selection/stopPropagation', [], function () {\n function StopPropagation() {}\n\n StopPropagation.prototype.bind = function (decorated, container, $container) {\n decorated.call(this, container, $container);\n var stoppedEvents = ['blur', 'change', 'click', 'dblclick', 'focus', 'focusin', 'focusout', 'input', 'keydown', 'keyup', 'keypress', 'mousedown', 'mouseenter', 'mouseleave', 'mousemove', 'mouseover', 'mouseup', 'search', 'touchend', 'touchstart'];\n this.$selection.on(stoppedEvents.join(' '), function (evt) {\n evt.stopPropagation();\n });\n };\n\n return StopPropagation;\n });\n /*!\n * jQuery Mousewheel 3.1.13\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n */\n\n (function (factory) {\n if (typeof S2.define === 'function' && S2.define.amd) {\n // AMD. Register as an anonymous module.\n S2.define('jquery-mousewheel', ['jquery'], factory);\n } else if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object') {\n // Node/CommonJS style for Browserify\n module.exports = factory;\n } else {\n // Browser globals\n factory(jQuery);\n }\n })(function ($) {\n var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],\n toBind = 'onwheel' in document || document.documentMode >= 9 ? ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],\n slice = Array.prototype.slice,\n nullLowestDeltaTimeout,\n lowestDelta;\n\n if ($.event.fixHooks) {\n for (var i = toFix.length; i;) {\n $.event.fixHooks[toFix[--i]] = $.event.mouseHooks;\n }\n }\n\n var special = $.event.special.mousewheel = {\n version: '3.1.12',\n setup: function setup() {\n if (this.addEventListener) {\n for (var i = toBind.length; i;) {\n this.addEventListener(toBind[--i], handler, false);\n }\n } else {\n this.onmousewheel = handler;\n } // Store the line height and page height for this particular element\n\n\n $.data(this, 'mousewheel-line-height', special.getLineHeight(this));\n $.data(this, 'mousewheel-page-height', special.getPageHeight(this));\n },\n teardown: function teardown() {\n if (this.removeEventListener) {\n for (var i = toBind.length; i;) {\n this.removeEventListener(toBind[--i], handler, false);\n }\n } else {\n this.onmousewheel = null;\n } // Clean up the data we added to the element\n\n\n $.removeData(this, 'mousewheel-line-height');\n $.removeData(this, 'mousewheel-page-height');\n },\n getLineHeight: function getLineHeight(elem) {\n var $elem = $(elem),\n $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent']();\n\n if (!$parent.length) {\n $parent = $('body');\n }\n\n return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16;\n },\n getPageHeight: function getPageHeight(elem) {\n return $(elem).height();\n },\n settings: {\n adjustOldDeltas: true,\n // see shouldAdjustOldDeltas() below\n normalizeOffset: true // calls getBoundingClientRect for each event\n\n }\n };\n $.fn.extend({\n mousewheel: function mousewheel(fn) {\n return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel');\n },\n unmousewheel: function unmousewheel(fn) {\n return this.unbind('mousewheel', fn);\n }\n });\n\n function handler(event) {\n var orgEvent = event || window.event,\n args = slice.call(arguments, 1),\n delta = 0,\n deltaX = 0,\n deltaY = 0,\n absDelta = 0,\n offsetX = 0,\n offsetY = 0;\n event = $.event.fix(orgEvent);\n event.type = 'mousewheel'; // Old school scrollwheel delta\n\n if ('detail' in orgEvent) {\n deltaY = orgEvent.detail * -1;\n }\n\n if ('wheelDelta' in orgEvent) {\n deltaY = orgEvent.wheelDelta;\n }\n\n if ('wheelDeltaY' in orgEvent) {\n deltaY = orgEvent.wheelDeltaY;\n }\n\n if ('wheelDeltaX' in orgEvent) {\n deltaX = orgEvent.wheelDeltaX * -1;\n } // Firefox < 17 horizontal scrolling related to DOMMouseScroll event\n\n\n if ('axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS) {\n deltaX = deltaY * -1;\n deltaY = 0;\n } // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy\n\n\n delta = deltaY === 0 ? deltaX : deltaY; // New school wheel delta (wheel event)\n\n if ('deltaY' in orgEvent) {\n deltaY = orgEvent.deltaY * -1;\n delta = deltaY;\n }\n\n if ('deltaX' in orgEvent) {\n deltaX = orgEvent.deltaX;\n\n if (deltaY === 0) {\n delta = deltaX * -1;\n }\n } // No change actually happened, no reason to go any further\n\n\n if (deltaY === 0 && deltaX === 0) {\n return;\n } // Need to convert lines and pages to pixels if we aren't already in pixels\n // There are three delta modes:\n // * deltaMode 0 is by pixels, nothing to do\n // * deltaMode 1 is by lines\n // * deltaMode 2 is by pages\n\n\n if (orgEvent.deltaMode === 1) {\n var lineHeight = $.data(this, 'mousewheel-line-height');\n delta *= lineHeight;\n deltaY *= lineHeight;\n deltaX *= lineHeight;\n } else if (orgEvent.deltaMode === 2) {\n var pageHeight = $.data(this, 'mousewheel-page-height');\n delta *= pageHeight;\n deltaY *= pageHeight;\n deltaX *= pageHeight;\n } // Store lowest absolute delta to normalize the delta values\n\n\n absDelta = Math.max(Math.abs(deltaY), Math.abs(deltaX));\n\n if (!lowestDelta || absDelta < lowestDelta) {\n lowestDelta = absDelta; // Adjust older deltas if necessary\n\n if (shouldAdjustOldDeltas(orgEvent, absDelta)) {\n lowestDelta /= 40;\n }\n } // Adjust older deltas if necessary\n\n\n if (shouldAdjustOldDeltas(orgEvent, absDelta)) {\n // Divide all the things by 40!\n delta /= 40;\n deltaX /= 40;\n deltaY /= 40;\n } // Get a whole, normalized value for the deltas\n\n\n delta = Math[delta >= 1 ? 'floor' : 'ceil'](delta / lowestDelta);\n deltaX = Math[deltaX >= 1 ? 'floor' : 'ceil'](deltaX / lowestDelta);\n deltaY = Math[deltaY >= 1 ? 'floor' : 'ceil'](deltaY / lowestDelta); // Normalise offsetX and offsetY properties\n\n if (special.settings.normalizeOffset && this.getBoundingClientRect) {\n var boundingRect = this.getBoundingClientRect();\n offsetX = event.clientX - boundingRect.left;\n offsetY = event.clientY - boundingRect.top;\n } // Add information to the event object\n\n\n event.deltaX = deltaX;\n event.deltaY = deltaY;\n event.deltaFactor = lowestDelta;\n event.offsetX = offsetX;\n event.offsetY = offsetY; // Go ahead and set deltaMode to 0 since we converted to pixels\n // Although this is a little odd since we overwrite the deltaX/Y\n // properties with normalized deltas.\n\n event.deltaMode = 0; // Add event and delta to the front of the arguments\n\n args.unshift(event, delta, deltaX, deltaY); // Clearout lowestDelta after sometime to better\n // handle multiple device types that give different\n // a different lowestDelta\n // Ex: trackpad = 3 and mouse wheel = 120\n\n if (nullLowestDeltaTimeout) {\n clearTimeout(nullLowestDeltaTimeout);\n }\n\n nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200);\n return ($.event.dispatch || $.event.handle).apply(this, args);\n }\n\n function nullLowestDelta() {\n lowestDelta = null;\n }\n\n function shouldAdjustOldDeltas(orgEvent, absDelta) {\n // If this is an older event and the delta is divisable by 120,\n // then we are assuming that the browser is treating this as an\n // older mouse wheel event and that we should divide the deltas\n // by 40 to try and get a more usable deltaFactor.\n // Side note, this actually impacts the reported scroll distance\n // in older browsers and can cause scrolling to be slower than native.\n // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.\n return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0;\n }\n });\n\n S2.define('jquery.select2', ['jquery', 'jquery-mousewheel', './select2/core', './select2/defaults', './select2/utils'], function ($, _, Select2, Defaults, Utils) {\n if ($.fn.select2 == null) {\n // All methods that should return the element\n var thisMethods = ['open', 'close', 'destroy'];\n\n $.fn.select2 = function (options) {\n options = options || {};\n\n if (_typeof(options) === 'object') {\n this.each(function () {\n var instanceOptions = $.extend(true, {}, options);\n var instance = new Select2($(this), instanceOptions);\n });\n return this;\n } else if (typeof options === 'string') {\n var ret;\n var args = Array.prototype.slice.call(arguments, 1);\n this.each(function () {\n var instance = Utils.GetData(this, 'select2');\n\n if (instance == null && window.console && console.error) {\n console.error('The select2(\\'' + options + '\\') method was called on an ' + 'element that is not using Select2.');\n }\n\n ret = instance[options].apply(instance, args);\n }); // Check if we should be returning `this`\n\n if ($.inArray(options, thisMethods) > -1) {\n return this;\n }\n\n return ret;\n } else {\n throw new Error('Invalid arguments for Select2: ' + options);\n }\n };\n }\n\n if ($.fn.select2.defaults == null) {\n $.fn.select2.defaults = Defaults;\n }\n\n return Select2;\n }); // Return the AMD loader configuration so it can be used outside of this file\n\n return {\n define: S2.define,\n require: S2.require\n };\n }(); // Autoload the jQuery bindings\n // We know that all of the modules exist above this, so we're safe\n\n\n var select2 = S2.require('jquery.select2'); // Hold the AMD module references on the jQuery function that was just loaded\n // This allows Select2 to use the internal loader outside of this file, such\n // as in the language files.\n\n\n jQuery.fn.select2.amd = S2; // Return the Select2 instance for anyone who is importing it.\n\n return select2;\n});","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/dist/cjs.js??ref--4-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--4-2!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FlowDetailForm.vue?vue&type=style&index=0&id=fc2f7800&scoped=true&lang=css&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/dist/cjs.js??ref--4-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--4-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectGuidanceWay.vue?vue&type=style&index=0&id=1efcf237&scoped=true&lang=css&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/dist/cjs.js??ref--4-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--4-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocalCautionModal.vue?vue&type=style&index=0&id=b3def3f2&scoped=true&lang=css&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/dist/cjs.js??ref--4-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--4-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocalGuidanceIntroduction.vue?vue&type=style&index=0&id=aa14aef0&scoped=true&lang=css&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/dist/cjs.js??ref--4-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--4-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RemoteCautionModal.vue?vue&type=style&index=0&id=a20719b2&scoped=true&lang=css&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/dist/cjs.js??ref--4-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--4-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RemoteGuidanceIntroduction.vue?vue&type=style&index=0&id=1c942a43&scoped=true&lang=css&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/dist/cjs.js??ref--4-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--4-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TakeFaceImage.vue?vue&type=style&index=0&scope=true&lang=css&\"","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*!\n * Bootstrap v4.3.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) : typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) : (global = global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));\n})(this, function (exports, $, Popper) {\n 'use strict';\n\n $ = $ && $.hasOwnProperty('default') ? $['default'] : $;\n Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper;\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n }\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n }\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n /**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\n\n var TRANSITION_END = 'transitionend';\n var MAX_UID = 1000000;\n var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n function toType(obj) {\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n }\n\n function getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle: function handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n\n return undefined; // eslint-disable-line no-undefined\n }\n };\n }\n\n function transitionEndEmulator(duration) {\n var _this = this;\n\n var called = false;\n $(this).one(Util.TRANSITION_END, function () {\n called = true;\n });\n setTimeout(function () {\n if (!called) {\n Util.triggerTransitionEnd(_this);\n }\n }, duration);\n return this;\n }\n\n function setTransitionEndSupport() {\n $.fn.emulateTransitionEnd = transitionEndEmulator;\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n }\n /**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\n\n var Util = {\n TRANSITION_END: 'bsTransitionEnd',\n getUID: function getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID); // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix));\n\n return prefix;\n },\n getSelectorFromElement: function getSelectorFromElement(element) {\n var selector = element.getAttribute('data-target');\n\n if (!selector || selector === '#') {\n var hrefAttr = element.getAttribute('href');\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';\n }\n\n try {\n return document.querySelector(selector) ? selector : null;\n } catch (err) {\n return null;\n }\n },\n getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n\n var transitionDuration = $(element).css('transition-duration');\n var transitionDelay = $(element).css('transition-delay');\n var floatTransitionDuration = parseFloat(transitionDuration);\n var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n } // If multiple durations are defined, take the first\n\n\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n },\n reflow: function reflow(element) {\n return element.offsetHeight;\n },\n triggerTransitionEnd: function triggerTransitionEnd(element) {\n $(element).trigger(TRANSITION_END);\n },\n // TODO: Remove in v5\n supportsTransitionEnd: function supportsTransitionEnd() {\n return Boolean(TRANSITION_END);\n },\n isElement: function isElement(obj) {\n return (obj[0] || obj).nodeType;\n },\n typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {\n for (var property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n var expectedTypes = configTypes[property];\n var value = config[property];\n var valueType = value && Util.isElement(value) ? 'element' : toType(value);\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(componentName.toUpperCase() + \": \" + (\"Option \\\"\" + property + \"\\\" provided type \\\"\" + valueType + \"\\\" \") + (\"but expected type \\\"\" + expectedTypes + \"\\\".\"));\n }\n }\n }\n },\n findShadowRoot: function findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null;\n } // Can find the shadow root otherwise it'll return the document\n\n\n if (typeof element.getRootNode === 'function') {\n var root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n\n if (element instanceof ShadowRoot) {\n return element;\n } // when we don't find a shadow root\n\n\n if (!element.parentNode) {\n return null;\n }\n\n return Util.findShadowRoot(element.parentNode);\n }\n };\n setTransitionEndSupport();\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME = 'alert';\n var VERSION = '4.3.1';\n var DATA_KEY = 'bs.alert';\n var EVENT_KEY = \".\" + DATA_KEY;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT = $.fn[NAME];\n var Selector = {\n DISMISS: '[data-dismiss=\"alert\"]'\n };\n var Event = {\n CLOSE: \"close\" + EVENT_KEY,\n CLOSED: \"closed\" + EVENT_KEY,\n CLICK_DATA_API: \"click\" + EVENT_KEY + DATA_API_KEY\n };\n var ClassName = {\n ALERT: 'alert',\n FADE: 'fade',\n SHOW: 'show'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Alert = /*#__PURE__*/function () {\n function Alert(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Alert.prototype; // Public\n\n _proto.close = function close(element) {\n var rootElement = this._element;\n\n if (element) {\n rootElement = this._getRootElement(element);\n }\n\n var customEvent = this._triggerCloseEvent(rootElement);\n\n if (customEvent.isDefaultPrevented()) {\n return;\n }\n\n this._removeElement(rootElement);\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY);\n this._element = null;\n } // Private\n ;\n\n _proto._getRootElement = function _getRootElement(element) {\n var selector = Util.getSelectorFromElement(element);\n var parent = false;\n\n if (selector) {\n parent = document.querySelector(selector);\n }\n\n if (!parent) {\n parent = $(element).closest(\".\" + ClassName.ALERT)[0];\n }\n\n return parent;\n };\n\n _proto._triggerCloseEvent = function _triggerCloseEvent(element) {\n var closeEvent = $.Event(Event.CLOSE);\n $(element).trigger(closeEvent);\n return closeEvent;\n };\n\n _proto._removeElement = function _removeElement(element) {\n var _this = this;\n\n $(element).removeClass(ClassName.SHOW);\n\n if (!$(element).hasClass(ClassName.FADE)) {\n this._destroyElement(element);\n\n return;\n }\n\n var transitionDuration = Util.getTransitionDurationFromElement(element);\n $(element).one(Util.TRANSITION_END, function (event) {\n return _this._destroyElement(element, event);\n }).emulateTransitionEnd(transitionDuration);\n };\n\n _proto._destroyElement = function _destroyElement(element) {\n $(element).detach().trigger(Event.CLOSED).remove();\n } // Static\n ;\n\n Alert._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $(this);\n var data = $element.data(DATA_KEY);\n\n if (!data) {\n data = new Alert(this);\n $element.data(DATA_KEY, data);\n }\n\n if (config === 'close') {\n data[config](this);\n }\n });\n };\n\n Alert._handleDismiss = function _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault();\n }\n\n alertInstance.close(this);\n };\n };\n\n _createClass(Alert, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }]);\n\n return Alert;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Alert._jQueryInterface;\n $.fn[NAME].Constructor = Alert;\n\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n return Alert._jQueryInterface;\n };\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n\n var NAME$1 = 'button';\n var VERSION$1 = '4.3.1';\n var DATA_KEY$1 = 'bs.button';\n var EVENT_KEY$1 = \".\" + DATA_KEY$1;\n var DATA_API_KEY$1 = '.data-api';\n var JQUERY_NO_CONFLICT$1 = $.fn[NAME$1];\n var ClassName$1 = {\n ACTIVE: 'active',\n BUTTON: 'btn',\n FOCUS: 'focus'\n };\n var Selector$1 = {\n DATA_TOGGLE_CARROT: '[data-toggle^=\"button\"]',\n DATA_TOGGLE: '[data-toggle=\"buttons\"]',\n INPUT: 'input:not([type=\"hidden\"])',\n ACTIVE: '.active',\n BUTTON: '.btn'\n };\n var Event$1 = {\n CLICK_DATA_API: \"click\" + EVENT_KEY$1 + DATA_API_KEY$1,\n FOCUS_BLUR_DATA_API: \"focus\" + EVENT_KEY$1 + DATA_API_KEY$1 + \" \" + (\"blur\" + EVENT_KEY$1 + DATA_API_KEY$1)\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Button = /*#__PURE__*/function () {\n function Button(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Button.prototype; // Public\n\n _proto.toggle = function toggle() {\n var triggerChangeEvent = true;\n var addAriaPressed = true;\n var rootElement = $(this._element).closest(Selector$1.DATA_TOGGLE)[0];\n\n if (rootElement) {\n var input = this._element.querySelector(Selector$1.INPUT);\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked && this._element.classList.contains(ClassName$1.ACTIVE)) {\n triggerChangeEvent = false;\n } else {\n var activeElement = rootElement.querySelector(Selector$1.ACTIVE);\n\n if (activeElement) {\n $(activeElement).removeClass(ClassName$1.ACTIVE);\n }\n }\n }\n\n if (triggerChangeEvent) {\n if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) {\n return;\n }\n\n input.checked = !this._element.classList.contains(ClassName$1.ACTIVE);\n $(input).trigger('change');\n }\n\n input.focus();\n addAriaPressed = false;\n }\n }\n\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed', !this._element.classList.contains(ClassName$1.ACTIVE));\n }\n\n if (triggerChangeEvent) {\n $(this._element).toggleClass(ClassName$1.ACTIVE);\n }\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$1);\n this._element = null;\n } // Static\n ;\n\n Button._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$1);\n\n if (!data) {\n data = new Button(this);\n $(this).data(DATA_KEY$1, data);\n }\n\n if (config === 'toggle') {\n data[config]();\n }\n });\n };\n\n _createClass(Button, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$1;\n }\n }]);\n\n return Button;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(Event$1.CLICK_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {\n event.preventDefault();\n var button = event.target;\n\n if (!$(button).hasClass(ClassName$1.BUTTON)) {\n button = $(button).closest(Selector$1.BUTTON);\n }\n\n Button._jQueryInterface.call($(button), 'toggle');\n }).on(Event$1.FOCUS_BLUR_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {\n var button = $(event.target).closest(Selector$1.BUTTON)[0];\n $(button).toggleClass(ClassName$1.FOCUS, /^focus(in)?$/.test(event.type));\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$1] = Button._jQueryInterface;\n $.fn[NAME$1].Constructor = Button;\n\n $.fn[NAME$1].noConflict = function () {\n $.fn[NAME$1] = JQUERY_NO_CONFLICT$1;\n return Button._jQueryInterface;\n };\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n\n var NAME$2 = 'carousel';\n var VERSION$2 = '4.3.1';\n var DATA_KEY$2 = 'bs.carousel';\n var EVENT_KEY$2 = \".\" + DATA_KEY$2;\n var DATA_API_KEY$2 = '.data-api';\n var JQUERY_NO_CONFLICT$2 = $.fn[NAME$2];\n var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key\n\n var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key\n\n var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n var SWIPE_THRESHOLD = 40;\n var Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n };\n var DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n };\n var Direction = {\n NEXT: 'next',\n PREV: 'prev',\n LEFT: 'left',\n RIGHT: 'right'\n };\n var Event$2 = {\n SLIDE: \"slide\" + EVENT_KEY$2,\n SLID: \"slid\" + EVENT_KEY$2,\n KEYDOWN: \"keydown\" + EVENT_KEY$2,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$2,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$2,\n TOUCHSTART: \"touchstart\" + EVENT_KEY$2,\n TOUCHMOVE: \"touchmove\" + EVENT_KEY$2,\n TOUCHEND: \"touchend\" + EVENT_KEY$2,\n POINTERDOWN: \"pointerdown\" + EVENT_KEY$2,\n POINTERUP: \"pointerup\" + EVENT_KEY$2,\n DRAG_START: \"dragstart\" + EVENT_KEY$2,\n LOAD_DATA_API: \"load\" + EVENT_KEY$2 + DATA_API_KEY$2,\n CLICK_DATA_API: \"click\" + EVENT_KEY$2 + DATA_API_KEY$2\n };\n var ClassName$2 = {\n CAROUSEL: 'carousel',\n ACTIVE: 'active',\n SLIDE: 'slide',\n RIGHT: 'carousel-item-right',\n LEFT: 'carousel-item-left',\n NEXT: 'carousel-item-next',\n PREV: 'carousel-item-prev',\n ITEM: 'carousel-item',\n POINTER_EVENT: 'pointer-event'\n };\n var Selector$2 = {\n ACTIVE: '.active',\n ACTIVE_ITEM: '.active.carousel-item',\n ITEM: '.carousel-item',\n ITEM_IMG: '.carousel-item img',\n NEXT_PREV: '.carousel-item-next, .carousel-item-prev',\n INDICATORS: '.carousel-indicators',\n DATA_SLIDE: '[data-slide], [data-slide-to]',\n DATA_RIDE: '[data-ride=\"carousel\"]'\n };\n var PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Carousel = /*#__PURE__*/function () {\n function Carousel(element, config) {\n this._items = null;\n this._interval = null;\n this._activeElement = null;\n this._isPaused = false;\n this._isSliding = false;\n this.touchTimeout = null;\n this.touchStartX = 0;\n this.touchDeltaX = 0;\n this._config = this._getConfig(config);\n this._element = element;\n this._indicatorsElement = this._element.querySelector(Selector$2.INDICATORS);\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);\n\n this._addEventListeners();\n } // Getters\n\n\n var _proto = Carousel.prototype; // Public\n\n _proto.next = function next() {\n if (!this._isSliding) {\n this._slide(Direction.NEXT);\n }\n };\n\n _proto.nextWhenVisible = function nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && $(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden') {\n this.next();\n }\n };\n\n _proto.prev = function prev() {\n if (!this._isSliding) {\n this._slide(Direction.PREV);\n }\n };\n\n _proto.pause = function pause(event) {\n if (!event) {\n this._isPaused = true;\n }\n\n if (this._element.querySelector(Selector$2.NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element);\n this.cycle(true);\n }\n\n clearInterval(this._interval);\n this._interval = null;\n };\n\n _proto.cycle = function cycle(event) {\n if (!event) {\n this._isPaused = false;\n }\n\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n\n if (this._config.interval && !this._isPaused) {\n this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);\n }\n };\n\n _proto.to = function to(index) {\n var _this = this;\n\n this._activeElement = this._element.querySelector(Selector$2.ACTIVE_ITEM);\n\n var activeIndex = this._getItemIndex(this._activeElement);\n\n if (index > this._items.length - 1 || index < 0) {\n return;\n }\n\n if (this._isSliding) {\n $(this._element).one(Event$2.SLID, function () {\n return _this.to(index);\n });\n return;\n }\n\n if (activeIndex === index) {\n this.pause();\n this.cycle();\n return;\n }\n\n var direction = index > activeIndex ? Direction.NEXT : Direction.PREV;\n\n this._slide(direction, this._items[index]);\n };\n\n _proto.dispose = function dispose() {\n $(this._element).off(EVENT_KEY$2);\n $.removeData(this._element, DATA_KEY$2);\n this._items = null;\n this._config = null;\n this._element = null;\n this._interval = null;\n this._isPaused = null;\n this._isSliding = null;\n this._activeElement = null;\n this._indicatorsElement = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread({}, Default, config);\n Util.typeCheckConfig(NAME$2, config, DefaultType);\n return config;\n };\n\n _proto._handleSwipe = function _handleSwipe() {\n var absDeltax = Math.abs(this.touchDeltaX);\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return;\n }\n\n var direction = absDeltax / this.touchDeltaX; // swipe left\n\n if (direction > 0) {\n this.prev();\n } // swipe right\n\n\n if (direction < 0) {\n this.next();\n }\n };\n\n _proto._addEventListeners = function _addEventListeners() {\n var _this2 = this;\n\n if (this._config.keyboard) {\n $(this._element).on(Event$2.KEYDOWN, function (event) {\n return _this2._keydown(event);\n });\n }\n\n if (this._config.pause === 'hover') {\n $(this._element).on(Event$2.MOUSEENTER, function (event) {\n return _this2.pause(event);\n }).on(Event$2.MOUSELEAVE, function (event) {\n return _this2.cycle(event);\n });\n }\n\n if (this._config.touch) {\n this._addTouchEventListeners();\n }\n };\n\n _proto._addTouchEventListeners = function _addTouchEventListeners() {\n var _this3 = this;\n\n if (!this._touchSupported) {\n return;\n }\n\n var start = function start(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchStartX = event.originalEvent.clientX;\n } else if (!_this3._pointerEvent) {\n _this3.touchStartX = event.originalEvent.touches[0].clientX;\n }\n };\n\n var move = function move(event) {\n // ensure swiping with one touch and not pinching\n if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {\n _this3.touchDeltaX = 0;\n } else {\n _this3.touchDeltaX = event.originalEvent.touches[0].clientX - _this3.touchStartX;\n }\n };\n\n var end = function end(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;\n }\n\n _this3._handleSwipe();\n\n if (_this3._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n _this3.pause();\n\n if (_this3.touchTimeout) {\n clearTimeout(_this3.touchTimeout);\n }\n\n _this3.touchTimeout = setTimeout(function (event) {\n return _this3.cycle(event);\n }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);\n }\n };\n\n $(this._element.querySelectorAll(Selector$2.ITEM_IMG)).on(Event$2.DRAG_START, function (e) {\n return e.preventDefault();\n });\n\n if (this._pointerEvent) {\n $(this._element).on(Event$2.POINTERDOWN, function (event) {\n return start(event);\n });\n $(this._element).on(Event$2.POINTERUP, function (event) {\n return end(event);\n });\n\n this._element.classList.add(ClassName$2.POINTER_EVENT);\n } else {\n $(this._element).on(Event$2.TOUCHSTART, function (event) {\n return start(event);\n });\n $(this._element).on(Event$2.TOUCHMOVE, function (event) {\n return move(event);\n });\n $(this._element).on(Event$2.TOUCHEND, function (event) {\n return end(event);\n });\n }\n };\n\n _proto._keydown = function _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault();\n this.prev();\n break;\n\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault();\n this.next();\n break;\n\n default:\n }\n };\n\n _proto._getItemIndex = function _getItemIndex(element) {\n this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(Selector$2.ITEM)) : [];\n return this._items.indexOf(element);\n };\n\n _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {\n var isNextDirection = direction === Direction.NEXT;\n var isPrevDirection = direction === Direction.PREV;\n\n var activeIndex = this._getItemIndex(activeElement);\n\n var lastItemIndex = this._items.length - 1;\n var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement;\n }\n\n var delta = direction === Direction.PREV ? -1 : 1;\n var itemIndex = (activeIndex + delta) % this._items.length;\n return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];\n };\n\n _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {\n var targetIndex = this._getItemIndex(relatedTarget);\n\n var fromIndex = this._getItemIndex(this._element.querySelector(Selector$2.ACTIVE_ITEM));\n\n var slideEvent = $.Event(Event$2.SLIDE, {\n relatedTarget: relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n });\n $(this._element).trigger(slideEvent);\n return slideEvent;\n };\n\n _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(Selector$2.ACTIVE));\n $(indicators).removeClass(ClassName$2.ACTIVE);\n\n var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];\n\n if (nextIndicator) {\n $(nextIndicator).addClass(ClassName$2.ACTIVE);\n }\n }\n };\n\n _proto._slide = function _slide(direction, element) {\n var _this4 = this;\n\n var activeElement = this._element.querySelector(Selector$2.ACTIVE_ITEM);\n\n var activeElementIndex = this._getItemIndex(activeElement);\n\n var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);\n\n var nextElementIndex = this._getItemIndex(nextElement);\n\n var isCycling = Boolean(this._interval);\n var directionalClassName;\n var orderClassName;\n var eventDirectionName;\n\n if (direction === Direction.NEXT) {\n directionalClassName = ClassName$2.LEFT;\n orderClassName = ClassName$2.NEXT;\n eventDirectionName = Direction.LEFT;\n } else {\n directionalClassName = ClassName$2.RIGHT;\n orderClassName = ClassName$2.PREV;\n eventDirectionName = Direction.RIGHT;\n }\n\n if (nextElement && $(nextElement).hasClass(ClassName$2.ACTIVE)) {\n this._isSliding = false;\n return;\n }\n\n var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);\n\n if (slideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return;\n }\n\n this._isSliding = true;\n\n if (isCycling) {\n this.pause();\n }\n\n this._setActiveIndicatorElement(nextElement);\n\n var slidEvent = $.Event(Event$2.SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n });\n\n if ($(this._element).hasClass(ClassName$2.SLIDE)) {\n $(nextElement).addClass(orderClassName);\n Util.reflow(nextElement);\n $(activeElement).addClass(directionalClassName);\n $(nextElement).addClass(directionalClassName);\n var nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10);\n\n if (nextElementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval;\n this._config.interval = nextElementInterval;\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval;\n }\n\n var transitionDuration = Util.getTransitionDurationFromElement(activeElement);\n $(activeElement).one(Util.TRANSITION_END, function () {\n $(nextElement).removeClass(directionalClassName + \" \" + orderClassName).addClass(ClassName$2.ACTIVE);\n $(activeElement).removeClass(ClassName$2.ACTIVE + \" \" + orderClassName + \" \" + directionalClassName);\n _this4._isSliding = false;\n setTimeout(function () {\n return $(_this4._element).trigger(slidEvent);\n }, 0);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n $(activeElement).removeClass(ClassName$2.ACTIVE);\n $(nextElement).addClass(ClassName$2.ACTIVE);\n this._isSliding = false;\n $(this._element).trigger(slidEvent);\n }\n\n if (isCycling) {\n this.cycle();\n }\n } // Static\n ;\n\n Carousel._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$2);\n\n var _config = _objectSpread({}, Default, $(this).data());\n\n if (_typeof(config) === 'object') {\n _config = _objectSpread({}, _config, config);\n }\n\n var action = typeof config === 'string' ? config : _config.slide;\n\n if (!data) {\n data = new Carousel(this, _config);\n $(this).data(DATA_KEY$2, data);\n }\n\n if (typeof config === 'number') {\n data.to(config);\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + action + \"\\\"\");\n }\n\n data[action]();\n } else if (_config.interval && _config.ride) {\n data.pause();\n data.cycle();\n }\n });\n };\n\n Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {\n var selector = Util.getSelectorFromElement(this);\n\n if (!selector) {\n return;\n }\n\n var target = $(selector)[0];\n\n if (!target || !$(target).hasClass(ClassName$2.CAROUSEL)) {\n return;\n }\n\n var config = _objectSpread({}, $(target).data(), $(this).data());\n\n var slideIndex = this.getAttribute('data-slide-to');\n\n if (slideIndex) {\n config.interval = false;\n }\n\n Carousel._jQueryInterface.call($(target), config);\n\n if (slideIndex) {\n $(target).data(DATA_KEY$2).to(slideIndex);\n }\n\n event.preventDefault();\n };\n\n _createClass(Carousel, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$2;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }]);\n\n return Carousel;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(Event$2.CLICK_DATA_API, Selector$2.DATA_SLIDE, Carousel._dataApiClickHandler);\n $(window).on(Event$2.LOAD_DATA_API, function () {\n var carousels = [].slice.call(document.querySelectorAll(Selector$2.DATA_RIDE));\n\n for (var i = 0, len = carousels.length; i < len; i++) {\n var $carousel = $(carousels[i]);\n\n Carousel._jQueryInterface.call($carousel, $carousel.data());\n }\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$2] = Carousel._jQueryInterface;\n $.fn[NAME$2].Constructor = Carousel;\n\n $.fn[NAME$2].noConflict = function () {\n $.fn[NAME$2] = JQUERY_NO_CONFLICT$2;\n return Carousel._jQueryInterface;\n };\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n\n var NAME$3 = 'collapse';\n var VERSION$3 = '4.3.1';\n var DATA_KEY$3 = 'bs.collapse';\n var EVENT_KEY$3 = \".\" + DATA_KEY$3;\n var DATA_API_KEY$3 = '.data-api';\n var JQUERY_NO_CONFLICT$3 = $.fn[NAME$3];\n var Default$1 = {\n toggle: true,\n parent: ''\n };\n var DefaultType$1 = {\n toggle: 'boolean',\n parent: '(string|element)'\n };\n var Event$3 = {\n SHOW: \"show\" + EVENT_KEY$3,\n SHOWN: \"shown\" + EVENT_KEY$3,\n HIDE: \"hide\" + EVENT_KEY$3,\n HIDDEN: \"hidden\" + EVENT_KEY$3,\n CLICK_DATA_API: \"click\" + EVENT_KEY$3 + DATA_API_KEY$3\n };\n var ClassName$3 = {\n SHOW: 'show',\n COLLAPSE: 'collapse',\n COLLAPSING: 'collapsing',\n COLLAPSED: 'collapsed'\n };\n var Dimension = {\n WIDTH: 'width',\n HEIGHT: 'height'\n };\n var Selector$3 = {\n ACTIVES: '.show, .collapsing',\n DATA_TOGGLE: '[data-toggle=\"collapse\"]'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Collapse = /*#__PURE__*/function () {\n function Collapse(element, config) {\n this._isTransitioning = false;\n this._element = element;\n this._config = this._getConfig(config);\n this._triggerArray = [].slice.call(document.querySelectorAll(\"[data-toggle=\\\"collapse\\\"][href=\\\"#\" + element.id + \"\\\"],\" + (\"[data-toggle=\\\"collapse\\\"][data-target=\\\"#\" + element.id + \"\\\"]\")));\n var toggleList = [].slice.call(document.querySelectorAll(Selector$3.DATA_TOGGLE));\n\n for (var i = 0, len = toggleList.length; i < len; i++) {\n var elem = toggleList[i];\n var selector = Util.getSelectorFromElement(elem);\n var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {\n return foundElem === element;\n });\n\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector;\n\n this._triggerArray.push(elem);\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null;\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray);\n }\n\n if (this._config.toggle) {\n this.toggle();\n }\n } // Getters\n\n\n var _proto = Collapse.prototype; // Public\n\n _proto.toggle = function toggle() {\n if ($(this._element).hasClass(ClassName$3.SHOW)) {\n this.hide();\n } else {\n this.show();\n }\n };\n\n _proto.show = function show() {\n var _this = this;\n\n if (this._isTransitioning || $(this._element).hasClass(ClassName$3.SHOW)) {\n return;\n }\n\n var actives;\n var activesData;\n\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(Selector$3.ACTIVES)).filter(function (elem) {\n if (typeof _this._config.parent === 'string') {\n return elem.getAttribute('data-parent') === _this._config.parent;\n }\n\n return elem.classList.contains(ClassName$3.COLLAPSE);\n });\n\n if (actives.length === 0) {\n actives = null;\n }\n }\n\n if (actives) {\n activesData = $(actives).not(this._selector).data(DATA_KEY$3);\n\n if (activesData && activesData._isTransitioning) {\n return;\n }\n }\n\n var startEvent = $.Event(Event$3.SHOW);\n $(this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide');\n\n if (!activesData) {\n $(actives).data(DATA_KEY$3, null);\n }\n }\n\n var dimension = this._getDimension();\n\n $(this._element).removeClass(ClassName$3.COLLAPSE).addClass(ClassName$3.COLLAPSING);\n this._element.style[dimension] = 0;\n\n if (this._triggerArray.length) {\n $(this._triggerArray).removeClass(ClassName$3.COLLAPSED).attr('aria-expanded', true);\n }\n\n this.setTransitioning(true);\n\n var complete = function complete() {\n $(_this._element).removeClass(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).addClass(ClassName$3.SHOW);\n _this._element.style[dimension] = '';\n\n _this.setTransitioning(false);\n\n $(_this._element).trigger(Event$3.SHOWN);\n };\n\n var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n var scrollSize = \"scroll\" + capitalizedDimension;\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n this._element.style[dimension] = this._element[scrollSize] + \"px\";\n };\n\n _proto.hide = function hide() {\n var _this2 = this;\n\n if (this._isTransitioning || !$(this._element).hasClass(ClassName$3.SHOW)) {\n return;\n }\n\n var startEvent = $.Event(Event$3.HIDE);\n $(this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n var dimension = this._getDimension();\n\n this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + \"px\";\n Util.reflow(this._element);\n $(this._element).addClass(ClassName$3.COLLAPSING).removeClass(ClassName$3.COLLAPSE).removeClass(ClassName$3.SHOW);\n var triggerArrayLength = this._triggerArray.length;\n\n if (triggerArrayLength > 0) {\n for (var i = 0; i < triggerArrayLength; i++) {\n var trigger = this._triggerArray[i];\n var selector = Util.getSelectorFromElement(trigger);\n\n if (selector !== null) {\n var $elem = $([].slice.call(document.querySelectorAll(selector)));\n\n if (!$elem.hasClass(ClassName$3.SHOW)) {\n $(trigger).addClass(ClassName$3.COLLAPSED).attr('aria-expanded', false);\n }\n }\n }\n }\n\n this.setTransitioning(true);\n\n var complete = function complete() {\n _this2.setTransitioning(false);\n\n $(_this2._element).removeClass(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).trigger(Event$3.HIDDEN);\n };\n\n this._element.style[dimension] = '';\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n };\n\n _proto.setTransitioning = function setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning;\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$3);\n this._config = null;\n this._parent = null;\n this._element = null;\n this._triggerArray = null;\n this._isTransitioning = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread({}, Default$1, config);\n config.toggle = Boolean(config.toggle); // Coerce string values\n\n Util.typeCheckConfig(NAME$3, config, DefaultType$1);\n return config;\n };\n\n _proto._getDimension = function _getDimension() {\n var hasWidth = $(this._element).hasClass(Dimension.WIDTH);\n return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT;\n };\n\n _proto._getParent = function _getParent() {\n var _this3 = this;\n\n var parent;\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent; // It's a jQuery object\n\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0];\n }\n } else {\n parent = document.querySelector(this._config.parent);\n }\n\n var selector = \"[data-toggle=\\\"collapse\\\"][data-parent=\\\"\" + this._config.parent + \"\\\"]\";\n var children = [].slice.call(parent.querySelectorAll(selector));\n $(children).each(function (i, element) {\n _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);\n });\n return parent;\n };\n\n _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {\n var isOpen = $(element).hasClass(ClassName$3.SHOW);\n\n if (triggerArray.length) {\n $(triggerArray).toggleClass(ClassName$3.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);\n }\n } // Static\n ;\n\n Collapse._getTargetFromElement = function _getTargetFromElement(element) {\n var selector = Util.getSelectorFromElement(element);\n return selector ? document.querySelector(selector) : null;\n };\n\n Collapse._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $this = $(this);\n var data = $this.data(DATA_KEY$3);\n\n var _config = _objectSpread({}, Default$1, $this.data(), _typeof(config) === 'object' && config ? config : {});\n\n if (!data && _config.toggle && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n\n if (!data) {\n data = new Collapse(this, _config);\n $this.data(DATA_KEY$3, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Collapse, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$3;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$1;\n }\n }]);\n\n return Collapse;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(Event$3.CLICK_DATA_API, Selector$3.DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault();\n }\n\n var $trigger = $(this);\n var selector = Util.getSelectorFromElement(this);\n var selectors = [].slice.call(document.querySelectorAll(selector));\n $(selectors).each(function () {\n var $target = $(this);\n var data = $target.data(DATA_KEY$3);\n var config = data ? 'toggle' : $trigger.data();\n\n Collapse._jQueryInterface.call($target, config);\n });\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$3] = Collapse._jQueryInterface;\n $.fn[NAME$3].Constructor = Collapse;\n\n $.fn[NAME$3].noConflict = function () {\n $.fn[NAME$3] = JQUERY_NO_CONFLICT$3;\n return Collapse._jQueryInterface;\n };\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n\n var NAME$4 = 'dropdown';\n var VERSION$4 = '4.3.1';\n var DATA_KEY$4 = 'bs.dropdown';\n var EVENT_KEY$4 = \".\" + DATA_KEY$4;\n var DATA_API_KEY$4 = '.data-api';\n var JQUERY_NO_CONFLICT$4 = $.fn[NAME$4];\n var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key\n\n var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key\n\n var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key\n\n var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key\n\n var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)\n\n var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + \"|\" + ARROW_DOWN_KEYCODE + \"|\" + ESCAPE_KEYCODE);\n var Event$4 = {\n HIDE: \"hide\" + EVENT_KEY$4,\n HIDDEN: \"hidden\" + EVENT_KEY$4,\n SHOW: \"show\" + EVENT_KEY$4,\n SHOWN: \"shown\" + EVENT_KEY$4,\n CLICK: \"click\" + EVENT_KEY$4,\n CLICK_DATA_API: \"click\" + EVENT_KEY$4 + DATA_API_KEY$4,\n KEYDOWN_DATA_API: \"keydown\" + EVENT_KEY$4 + DATA_API_KEY$4,\n KEYUP_DATA_API: \"keyup\" + EVENT_KEY$4 + DATA_API_KEY$4\n };\n var ClassName$4 = {\n DISABLED: 'disabled',\n SHOW: 'show',\n DROPUP: 'dropup',\n DROPRIGHT: 'dropright',\n DROPLEFT: 'dropleft',\n MENURIGHT: 'dropdown-menu-right',\n MENULEFT: 'dropdown-menu-left',\n POSITION_STATIC: 'position-static'\n };\n var Selector$4 = {\n DATA_TOGGLE: '[data-toggle=\"dropdown\"]',\n FORM_CHILD: '.dropdown form',\n MENU: '.dropdown-menu',\n NAVBAR_NAV: '.navbar-nav',\n VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n };\n var AttachmentMap = {\n TOP: 'top-start',\n TOPEND: 'top-end',\n BOTTOM: 'bottom-start',\n BOTTOMEND: 'bottom-end',\n RIGHT: 'right-start',\n RIGHTEND: 'right-end',\n LEFT: 'left-start',\n LEFTEND: 'left-end'\n };\n var Default$2 = {\n offset: 0,\n flip: true,\n boundary: 'scrollParent',\n reference: 'toggle',\n display: 'dynamic'\n };\n var DefaultType$2 = {\n offset: '(number|string|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element)',\n display: 'string'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Dropdown = /*#__PURE__*/function () {\n function Dropdown(element, config) {\n this._element = element;\n this._popper = null;\n this._config = this._getConfig(config);\n this._menu = this._getMenuElement();\n this._inNavbar = this._detectNavbar();\n\n this._addEventListeners();\n } // Getters\n\n\n var _proto = Dropdown.prototype; // Public\n\n _proto.toggle = function toggle() {\n if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED)) {\n return;\n }\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n var isActive = $(this._menu).hasClass(ClassName$4.SHOW);\n\n Dropdown._clearMenus();\n\n if (isActive) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var showEvent = $.Event(Event$4.SHOW, relatedTarget);\n $(parent).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n } // Disable totally Popper.js for Dropdown in Navbar\n\n\n if (!this._inNavbar) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper.js (https://popper.js.org/)');\n }\n\n var referenceElement = this._element;\n\n if (this._config.reference === 'parent') {\n referenceElement = parent;\n } else if (Util.isElement(this._config.reference)) {\n referenceElement = this._config.reference; // Check if it's jQuery element\n\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0];\n }\n } // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n\n\n if (this._config.boundary !== 'scrollParent') {\n $(parent).addClass(ClassName$4.POSITION_STATIC);\n }\n\n this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig());\n } // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n if ('ontouchstart' in document.documentElement && $(parent).closest(Selector$4.NAVBAR_NAV).length === 0) {\n $(document.body).children().on('mouseover', null, $.noop);\n }\n\n this._element.focus();\n\n this._element.setAttribute('aria-expanded', true);\n\n $(this._menu).toggleClass(ClassName$4.SHOW);\n $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget));\n };\n\n _proto.show = function show() {\n if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || $(this._menu).hasClass(ClassName$4.SHOW)) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var showEvent = $.Event(Event$4.SHOW, relatedTarget);\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n $(parent).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n }\n\n $(this._menu).toggleClass(ClassName$4.SHOW);\n $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget));\n };\n\n _proto.hide = function hide() {\n if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || !$(this._menu).hasClass(ClassName$4.SHOW)) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var hideEvent = $.Event(Event$4.HIDE, relatedTarget);\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n $(parent).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n $(this._menu).toggleClass(ClassName$4.SHOW);\n $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget));\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$4);\n $(this._element).off(EVENT_KEY$4);\n this._element = null;\n this._menu = null;\n\n if (this._popper !== null) {\n this._popper.destroy();\n\n this._popper = null;\n }\n };\n\n _proto.update = function update() {\n this._inNavbar = this._detectNavbar();\n\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Private\n ;\n\n _proto._addEventListeners = function _addEventListeners() {\n var _this = this;\n\n $(this._element).on(Event$4.CLICK, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.toggle();\n });\n };\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread({}, this.constructor.Default, $(this._element).data(), config);\n Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);\n return config;\n };\n\n _proto._getMenuElement = function _getMenuElement() {\n if (!this._menu) {\n var parent = Dropdown._getParentFromElement(this._element);\n\n if (parent) {\n this._menu = parent.querySelector(Selector$4.MENU);\n }\n }\n\n return this._menu;\n };\n\n _proto._getPlacement = function _getPlacement() {\n var $parentDropdown = $(this._element.parentNode);\n var placement = AttachmentMap.BOTTOM; // Handle dropup\n\n if ($parentDropdown.hasClass(ClassName$4.DROPUP)) {\n placement = AttachmentMap.TOP;\n\n if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {\n placement = AttachmentMap.TOPEND;\n }\n } else if ($parentDropdown.hasClass(ClassName$4.DROPRIGHT)) {\n placement = AttachmentMap.RIGHT;\n } else if ($parentDropdown.hasClass(ClassName$4.DROPLEFT)) {\n placement = AttachmentMap.LEFT;\n } else if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {\n placement = AttachmentMap.BOTTOMEND;\n }\n\n return placement;\n };\n\n _proto._detectNavbar = function _detectNavbar() {\n return $(this._element).closest('.navbar').length > 0;\n };\n\n _proto._getOffset = function _getOffset() {\n var _this2 = this;\n\n var offset = {};\n\n if (typeof this._config.offset === 'function') {\n offset.fn = function (data) {\n data.offsets = _objectSpread({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {});\n return data;\n };\n } else {\n offset.offset = this._config.offset;\n }\n\n return offset;\n };\n\n _proto._getPopperConfig = function _getPopperConfig() {\n var popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: this._getOffset(),\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n } // Disable Popper.js if we have a static display\n\n };\n\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n };\n }\n\n return popperConfig;\n } // Static\n ;\n\n Dropdown._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$4);\n\n var _config = _typeof(config) === 'object' ? config : null;\n\n if (!data) {\n data = new Dropdown(this, _config);\n $(this).data(DATA_KEY$4, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n Dropdown._clearMenus = function _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return;\n }\n\n var toggles = [].slice.call(document.querySelectorAll(Selector$4.DATA_TOGGLE));\n\n for (var i = 0, len = toggles.length; i < len; i++) {\n var parent = Dropdown._getParentFromElement(toggles[i]);\n\n var context = $(toggles[i]).data(DATA_KEY$4);\n var relatedTarget = {\n relatedTarget: toggles[i]\n };\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n\n if (!context) {\n continue;\n }\n\n var dropdownMenu = context._menu;\n\n if (!$(parent).hasClass(ClassName$4.SHOW)) {\n continue;\n }\n\n if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $.contains(parent, event.target)) {\n continue;\n }\n\n var hideEvent = $.Event(Event$4.HIDE, relatedTarget);\n $(parent).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n continue;\n } // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop);\n }\n\n toggles[i].setAttribute('aria-expanded', 'false');\n $(dropdownMenu).removeClass(ClassName$4.SHOW);\n $(parent).removeClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget));\n }\n };\n\n Dropdown._getParentFromElement = function _getParentFromElement(element) {\n var parent;\n var selector = Util.getSelectorFromElement(element);\n\n if (selector) {\n parent = document.querySelector(selector);\n }\n\n return parent || element.parentNode;\n } // eslint-disable-next-line complexity\n ;\n\n Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $(event.target).closest(Selector$4.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if (this.disabled || $(this).hasClass(ClassName$4.DISABLED)) {\n return;\n }\n\n var parent = Dropdown._getParentFromElement(this);\n\n var isActive = $(parent).hasClass(ClassName$4.SHOW);\n\n if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n if (event.which === ESCAPE_KEYCODE) {\n var toggle = parent.querySelector(Selector$4.DATA_TOGGLE);\n $(toggle).trigger('focus');\n }\n\n $(this).trigger('click');\n return;\n }\n\n var items = [].slice.call(parent.querySelectorAll(Selector$4.VISIBLE_ITEMS));\n\n if (items.length === 0) {\n return;\n }\n\n var index = items.indexOf(event.target);\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) {\n // Up\n index--;\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {\n // Down\n index++;\n }\n\n if (index < 0) {\n index = 0;\n }\n\n items[index].focus();\n };\n\n _createClass(Dropdown, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$4;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$2;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$2;\n }\n }]);\n\n return Dropdown;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(Event$4.KEYDOWN_DATA_API, Selector$4.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event$4.KEYDOWN_DATA_API, Selector$4.MENU, Dropdown._dataApiKeydownHandler).on(Event$4.CLICK_DATA_API + \" \" + Event$4.KEYUP_DATA_API, Dropdown._clearMenus).on(Event$4.CLICK_DATA_API, Selector$4.DATA_TOGGLE, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n Dropdown._jQueryInterface.call($(this), 'toggle');\n }).on(Event$4.CLICK_DATA_API, Selector$4.FORM_CHILD, function (e) {\n e.stopPropagation();\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$4] = Dropdown._jQueryInterface;\n $.fn[NAME$4].Constructor = Dropdown;\n\n $.fn[NAME$4].noConflict = function () {\n $.fn[NAME$4] = JQUERY_NO_CONFLICT$4;\n return Dropdown._jQueryInterface;\n };\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n\n var NAME$5 = 'modal';\n var VERSION$5 = '4.3.1';\n var DATA_KEY$5 = 'bs.modal';\n var EVENT_KEY$5 = \".\" + DATA_KEY$5;\n var DATA_API_KEY$5 = '.data-api';\n var JQUERY_NO_CONFLICT$5 = $.fn[NAME$5];\n var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var Default$3 = {\n backdrop: true,\n keyboard: true,\n focus: true,\n show: true\n };\n var DefaultType$3 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean',\n show: 'boolean'\n };\n var Event$5 = {\n HIDE: \"hide\" + EVENT_KEY$5,\n HIDDEN: \"hidden\" + EVENT_KEY$5,\n SHOW: \"show\" + EVENT_KEY$5,\n SHOWN: \"shown\" + EVENT_KEY$5,\n FOCUSIN: \"focusin\" + EVENT_KEY$5,\n RESIZE: \"resize\" + EVENT_KEY$5,\n CLICK_DISMISS: \"click.dismiss\" + EVENT_KEY$5,\n KEYDOWN_DISMISS: \"keydown.dismiss\" + EVENT_KEY$5,\n MOUSEUP_DISMISS: \"mouseup.dismiss\" + EVENT_KEY$5,\n MOUSEDOWN_DISMISS: \"mousedown.dismiss\" + EVENT_KEY$5,\n CLICK_DATA_API: \"click\" + EVENT_KEY$5 + DATA_API_KEY$5\n };\n var ClassName$5 = {\n SCROLLABLE: 'modal-dialog-scrollable',\n SCROLLBAR_MEASURER: 'modal-scrollbar-measure',\n BACKDROP: 'modal-backdrop',\n OPEN: 'modal-open',\n FADE: 'fade',\n SHOW: 'show'\n };\n var Selector$5 = {\n DIALOG: '.modal-dialog',\n MODAL_BODY: '.modal-body',\n DATA_TOGGLE: '[data-toggle=\"modal\"]',\n DATA_DISMISS: '[data-dismiss=\"modal\"]',\n FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT: '.sticky-top'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Modal = /*#__PURE__*/function () {\n function Modal(element, config) {\n this._config = this._getConfig(config);\n this._element = element;\n this._dialog = element.querySelector(Selector$5.DIALOG);\n this._backdrop = null;\n this._isShown = false;\n this._isBodyOverflowing = false;\n this._ignoreBackdropClick = false;\n this._isTransitioning = false;\n this._scrollbarWidth = 0;\n } // Getters\n\n\n var _proto = Modal.prototype; // Public\n\n _proto.toggle = function toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n };\n\n _proto.show = function show(relatedTarget) {\n var _this = this;\n\n if (this._isShown || this._isTransitioning) {\n return;\n }\n\n if ($(this._element).hasClass(ClassName$5.FADE)) {\n this._isTransitioning = true;\n }\n\n var showEvent = $.Event(Event$5.SHOW, {\n relatedTarget: relatedTarget\n });\n $(this._element).trigger(showEvent);\n\n if (this._isShown || showEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = true;\n\n this._checkScrollbar();\n\n this._setScrollbar();\n\n this._adjustDialog();\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $(this._element).on(Event$5.CLICK_DISMISS, Selector$5.DATA_DISMISS, function (event) {\n return _this.hide(event);\n });\n $(this._dialog).on(Event$5.MOUSEDOWN_DISMISS, function () {\n $(_this._element).one(Event$5.MOUSEUP_DISMISS, function (event) {\n if ($(event.target).is(_this._element)) {\n _this._ignoreBackdropClick = true;\n }\n });\n });\n\n this._showBackdrop(function () {\n return _this._showElement(relatedTarget);\n });\n };\n\n _proto.hide = function hide(event) {\n var _this2 = this;\n\n if (event) {\n event.preventDefault();\n }\n\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n\n var hideEvent = $.Event(Event$5.HIDE);\n $(this._element).trigger(hideEvent);\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = false;\n var transition = $(this._element).hasClass(ClassName$5.FADE);\n\n if (transition) {\n this._isTransitioning = true;\n }\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $(document).off(Event$5.FOCUSIN);\n $(this._element).removeClass(ClassName$5.SHOW);\n $(this._element).off(Event$5.CLICK_DISMISS);\n $(this._dialog).off(Event$5.MOUSEDOWN_DISMISS);\n\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $(this._element).one(Util.TRANSITION_END, function (event) {\n return _this2._hideModal(event);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n this._hideModal();\n }\n };\n\n _proto.dispose = function dispose() {\n [window, this._element, this._dialog].forEach(function (htmlElement) {\n return $(htmlElement).off(EVENT_KEY$5);\n });\n /**\n * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `Event.CLICK_DATA_API` event that should remain\n */\n\n $(document).off(Event$5.FOCUSIN);\n $.removeData(this._element, DATA_KEY$5);\n this._config = null;\n this._element = null;\n this._dialog = null;\n this._backdrop = null;\n this._isShown = null;\n this._isBodyOverflowing = null;\n this._ignoreBackdropClick = null;\n this._isTransitioning = null;\n this._scrollbarWidth = null;\n };\n\n _proto.handleUpdate = function handleUpdate() {\n this._adjustDialog();\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread({}, Default$3, config);\n Util.typeCheckConfig(NAME$5, config, DefaultType$3);\n return config;\n };\n\n _proto._showElement = function _showElement(relatedTarget) {\n var _this3 = this;\n\n var transition = $(this._element).hasClass(ClassName$5.FADE);\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element);\n }\n\n this._element.style.display = 'block';\n\n this._element.removeAttribute('aria-hidden');\n\n this._element.setAttribute('aria-modal', true);\n\n if ($(this._dialog).hasClass(ClassName$5.SCROLLABLE)) {\n this._dialog.querySelector(Selector$5.MODAL_BODY).scrollTop = 0;\n } else {\n this._element.scrollTop = 0;\n }\n\n if (transition) {\n Util.reflow(this._element);\n }\n\n $(this._element).addClass(ClassName$5.SHOW);\n\n if (this._config.focus) {\n this._enforceFocus();\n }\n\n var shownEvent = $.Event(Event$5.SHOWN, {\n relatedTarget: relatedTarget\n });\n\n var transitionComplete = function transitionComplete() {\n if (_this3._config.focus) {\n _this3._element.focus();\n }\n\n _this3._isTransitioning = false;\n $(_this3._element).trigger(shownEvent);\n };\n\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);\n } else {\n transitionComplete();\n }\n };\n\n _proto._enforceFocus = function _enforceFocus() {\n var _this4 = this;\n\n $(document).off(Event$5.FOCUSIN) // Guard against infinite focus loop\n .on(Event$5.FOCUSIN, function (event) {\n if (document !== event.target && _this4._element !== event.target && $(_this4._element).has(event.target).length === 0) {\n _this4._element.focus();\n }\n });\n };\n\n _proto._setEscapeEvent = function _setEscapeEvent() {\n var _this5 = this;\n\n if (this._isShown && this._config.keyboard) {\n $(this._element).on(Event$5.KEYDOWN_DISMISS, function (event) {\n if (event.which === ESCAPE_KEYCODE$1) {\n event.preventDefault();\n\n _this5.hide();\n }\n });\n } else if (!this._isShown) {\n $(this._element).off(Event$5.KEYDOWN_DISMISS);\n }\n };\n\n _proto._setResizeEvent = function _setResizeEvent() {\n var _this6 = this;\n\n if (this._isShown) {\n $(window).on(Event$5.RESIZE, function (event) {\n return _this6.handleUpdate(event);\n });\n } else {\n $(window).off(Event$5.RESIZE);\n }\n };\n\n _proto._hideModal = function _hideModal() {\n var _this7 = this;\n\n this._element.style.display = 'none';\n\n this._element.setAttribute('aria-hidden', true);\n\n this._element.removeAttribute('aria-modal');\n\n this._isTransitioning = false;\n\n this._showBackdrop(function () {\n $(document.body).removeClass(ClassName$5.OPEN);\n\n _this7._resetAdjustments();\n\n _this7._resetScrollbar();\n\n $(_this7._element).trigger(Event$5.HIDDEN);\n });\n };\n\n _proto._removeBackdrop = function _removeBackdrop() {\n if (this._backdrop) {\n $(this._backdrop).remove();\n this._backdrop = null;\n }\n };\n\n _proto._showBackdrop = function _showBackdrop(callback) {\n var _this8 = this;\n\n var animate = $(this._element).hasClass(ClassName$5.FADE) ? ClassName$5.FADE : '';\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div');\n this._backdrop.className = ClassName$5.BACKDROP;\n\n if (animate) {\n this._backdrop.classList.add(animate);\n }\n\n $(this._backdrop).appendTo(document.body);\n $(this._element).on(Event$5.CLICK_DISMISS, function (event) {\n if (_this8._ignoreBackdropClick) {\n _this8._ignoreBackdropClick = false;\n return;\n }\n\n if (event.target !== event.currentTarget) {\n return;\n }\n\n if (_this8._config.backdrop === 'static') {\n _this8._element.focus();\n } else {\n _this8.hide();\n }\n });\n\n if (animate) {\n Util.reflow(this._backdrop);\n }\n\n $(this._backdrop).addClass(ClassName$5.SHOW);\n\n if (!callback) {\n return;\n }\n\n if (!animate) {\n callback();\n return;\n }\n\n var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);\n } else if (!this._isShown && this._backdrop) {\n $(this._backdrop).removeClass(ClassName$5.SHOW);\n\n var callbackRemove = function callbackRemove() {\n _this8._removeBackdrop();\n\n if (callback) {\n callback();\n }\n };\n\n if ($(this._element).hasClass(ClassName$5.FADE)) {\n var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n\n $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);\n } else {\n callbackRemove();\n }\n } else if (callback) {\n callback();\n }\n } // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n ;\n\n _proto._adjustDialog = function _adjustDialog() {\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = this._scrollbarWidth + \"px\";\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = this._scrollbarWidth + \"px\";\n }\n };\n\n _proto._resetAdjustments = function _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n };\n\n _proto._checkScrollbar = function _checkScrollbar() {\n var rect = document.body.getBoundingClientRect();\n this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;\n this._scrollbarWidth = this._getScrollbarWidth();\n };\n\n _proto._setScrollbar = function _setScrollbar() {\n var _this9 = this;\n\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT));\n var stickyContent = [].slice.call(document.querySelectorAll(Selector$5.STICKY_CONTENT)); // Adjust fixed content padding\n\n $(fixedContent).each(function (index, element) {\n var actualPadding = element.style.paddingRight;\n var calculatedPadding = $(element).css('padding-right');\n $(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + \"px\");\n }); // Adjust sticky content margin\n\n $(stickyContent).each(function (index, element) {\n var actualMargin = element.style.marginRight;\n var calculatedMargin = $(element).css('margin-right');\n $(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + \"px\");\n }); // Adjust body padding\n\n var actualPadding = document.body.style.paddingRight;\n var calculatedPadding = $(document.body).css('padding-right');\n $(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + \"px\");\n }\n\n $(document.body).addClass(ClassName$5.OPEN);\n };\n\n _proto._resetScrollbar = function _resetScrollbar() {\n // Restore fixed content padding\n var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT));\n $(fixedContent).each(function (index, element) {\n var padding = $(element).data('padding-right');\n $(element).removeData('padding-right');\n element.style.paddingRight = padding ? padding : '';\n }); // Restore sticky content\n\n var elements = [].slice.call(document.querySelectorAll(\"\" + Selector$5.STICKY_CONTENT));\n $(elements).each(function (index, element) {\n var margin = $(element).data('margin-right');\n\n if (typeof margin !== 'undefined') {\n $(element).css('margin-right', margin).removeData('margin-right');\n }\n }); // Restore body padding\n\n var padding = $(document.body).data('padding-right');\n $(document.body).removeData('padding-right');\n document.body.style.paddingRight = padding ? padding : '';\n };\n\n _proto._getScrollbarWidth = function _getScrollbarWidth() {\n // thx d.walsh\n var scrollDiv = document.createElement('div');\n scrollDiv.className = ClassName$5.SCROLLBAR_MEASURER;\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n } // Static\n ;\n\n Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$5);\n\n var _config = _objectSpread({}, Default$3, $(this).data(), _typeof(config) === 'object' && config ? config : {});\n\n if (!data) {\n data = new Modal(this, _config);\n $(this).data(DATA_KEY$5, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config](relatedTarget);\n } else if (_config.show) {\n data.show(relatedTarget);\n }\n });\n };\n\n _createClass(Modal, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$5;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$3;\n }\n }]);\n\n return Modal;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(Event$5.CLICK_DATA_API, Selector$5.DATA_TOGGLE, function (event) {\n var _this10 = this;\n\n var target;\n var selector = Util.getSelectorFromElement(this);\n\n if (selector) {\n target = document.querySelector(selector);\n }\n\n var config = $(target).data(DATA_KEY$5) ? 'toggle' : _objectSpread({}, $(target).data(), $(this).data());\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault();\n }\n\n var $target = $(target).one(Event$5.SHOW, function (showEvent) {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return;\n }\n\n $target.one(Event$5.HIDDEN, function () {\n if ($(_this10).is(':visible')) {\n _this10.focus();\n }\n });\n });\n\n Modal._jQueryInterface.call($(target), config, this);\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$5] = Modal._jQueryInterface;\n $.fn[NAME$5].Constructor = Modal;\n\n $.fn[NAME$5].noConflict = function () {\n $.fn[NAME$5] = JQUERY_NO_CONFLICT$5;\n return Modal._jQueryInterface;\n };\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];\n var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n var DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n /**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n };\n var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi;\n /**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;\n\n function allowedAttribute(attr, allowedAttributeList) {\n var attrName = attr.nodeName.toLowerCase();\n\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));\n }\n\n return true;\n }\n\n var regExp = allowedAttributeList.filter(function (attrRegex) {\n return attrRegex instanceof RegExp;\n }); // Check if a regular expression validates the attribute.\n\n for (var i = 0, l = regExp.length; i < l; i++) {\n if (attrName.match(regExp[i])) {\n return true;\n }\n }\n\n return false;\n }\n\n function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml;\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml);\n }\n\n var domParser = new window.DOMParser();\n var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n var whitelistKeys = Object.keys(whiteList);\n var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));\n\n var _loop = function _loop(i, len) {\n var el = elements[i];\n var elName = el.nodeName.toLowerCase();\n\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el);\n return \"continue\";\n }\n\n var attributeList = [].slice.call(el.attributes);\n var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);\n attributeList.forEach(function (attr) {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName);\n }\n });\n };\n\n for (var i = 0, len = elements.length; i < len; i++) {\n var _ret = _loop(i, len);\n\n if (_ret === \"continue\") continue;\n }\n\n return createdDocument.body.innerHTML;\n }\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n\n var NAME$6 = 'tooltip';\n var VERSION$6 = '4.3.1';\n var DATA_KEY$6 = 'bs.tooltip';\n var EVENT_KEY$6 = \".\" + DATA_KEY$6;\n var JQUERY_NO_CONFLICT$6 = $.fn[NAME$6];\n var CLASS_PREFIX = 'bs-tooltip';\n var BSCLS_PREFIX_REGEX = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX + \"\\\\S+\", 'g');\n var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];\n var DefaultType$4 = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(number|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacement: '(string|array)',\n boundary: '(string|element)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n whiteList: 'object'\n };\n var AttachmentMap$1 = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left'\n };\n var Default$4 = {\n animation: true,\n template: '',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: 0,\n container: false,\n fallbackPlacement: 'flip',\n boundary: 'scrollParent',\n sanitize: true,\n sanitizeFn: null,\n whiteList: DefaultWhitelist\n };\n var HoverState = {\n SHOW: 'show',\n OUT: 'out'\n };\n var Event$6 = {\n HIDE: \"hide\" + EVENT_KEY$6,\n HIDDEN: \"hidden\" + EVENT_KEY$6,\n SHOW: \"show\" + EVENT_KEY$6,\n SHOWN: \"shown\" + EVENT_KEY$6,\n INSERTED: \"inserted\" + EVENT_KEY$6,\n CLICK: \"click\" + EVENT_KEY$6,\n FOCUSIN: \"focusin\" + EVENT_KEY$6,\n FOCUSOUT: \"focusout\" + EVENT_KEY$6,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$6,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$6\n };\n var ClassName$6 = {\n FADE: 'fade',\n SHOW: 'show'\n };\n var Selector$6 = {\n TOOLTIP: '.tooltip',\n TOOLTIP_INNER: '.tooltip-inner',\n ARROW: '.arrow'\n };\n var Trigger = {\n HOVER: 'hover',\n FOCUS: 'focus',\n CLICK: 'click',\n MANUAL: 'manual'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Tooltip = /*#__PURE__*/function () {\n function Tooltip(element, config) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper.js (https://popper.js.org/)');\n } // private\n\n\n this._isEnabled = true;\n this._timeout = 0;\n this._hoverState = '';\n this._activeTrigger = {};\n this._popper = null; // Protected\n\n this.element = element;\n this.config = this._getConfig(config);\n this.tip = null;\n\n this._setListeners();\n } // Getters\n\n\n var _proto = Tooltip.prototype; // Public\n\n _proto.enable = function enable() {\n this._isEnabled = true;\n };\n\n _proto.disable = function disable() {\n this._isEnabled = false;\n };\n\n _proto.toggleEnabled = function toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n };\n\n _proto.toggle = function toggle(event) {\n if (!this._isEnabled) {\n return;\n }\n\n if (event) {\n var dataKey = this.constructor.DATA_KEY;\n var context = $(event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $(event.currentTarget).data(dataKey, context);\n }\n\n context._activeTrigger.click = !context._activeTrigger.click;\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context);\n } else {\n context._leave(null, context);\n }\n } else {\n if ($(this.getTipElement()).hasClass(ClassName$6.SHOW)) {\n this._leave(null, this);\n\n return;\n }\n\n this._enter(null, this);\n }\n };\n\n _proto.dispose = function dispose() {\n clearTimeout(this._timeout);\n $.removeData(this.element, this.constructor.DATA_KEY);\n $(this.element).off(this.constructor.EVENT_KEY);\n $(this.element).closest('.modal').off('hide.bs.modal');\n\n if (this.tip) {\n $(this.tip).remove();\n }\n\n this._isEnabled = null;\n this._timeout = null;\n this._hoverState = null;\n this._activeTrigger = null;\n\n if (this._popper !== null) {\n this._popper.destroy();\n }\n\n this._popper = null;\n this.element = null;\n this.config = null;\n this.tip = null;\n };\n\n _proto.show = function show() {\n var _this = this;\n\n if ($(this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements');\n }\n\n var showEvent = $.Event(this.constructor.Event.SHOW);\n\n if (this.isWithContent() && this._isEnabled) {\n $(this.element).trigger(showEvent);\n var shadowRoot = Util.findShadowRoot(this.element);\n var isInTheDom = $.contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return;\n }\n\n var tip = this.getTipElement();\n var tipId = Util.getUID(this.constructor.NAME);\n tip.setAttribute('id', tipId);\n this.element.setAttribute('aria-describedby', tipId);\n this.setContent();\n\n if (this.config.animation) {\n $(tip).addClass(ClassName$6.FADE);\n }\n\n var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;\n\n var attachment = this._getAttachment(placement);\n\n this.addAttachmentClass(attachment);\n\n var container = this._getContainer();\n\n $(tip).data(this.constructor.DATA_KEY, this);\n\n if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n $(tip).appendTo(container);\n }\n\n $(this.element).trigger(this.constructor.Event.INSERTED);\n this._popper = new Popper(this.element, tip, {\n placement: attachment,\n modifiers: {\n offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: Selector$6.ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: function onCreate(data) {\n if (data.originalPlacement !== data.placement) {\n _this._handlePopperPlacementChange(data);\n }\n },\n onUpdate: function onUpdate(data) {\n return _this._handlePopperPlacementChange(data);\n }\n });\n $(tip).addClass(ClassName$6.SHOW); // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().on('mouseover', null, $.noop);\n }\n\n var complete = function complete() {\n if (_this.config.animation) {\n _this._fixTransition();\n }\n\n var prevHoverState = _this._hoverState;\n _this._hoverState = null;\n $(_this.element).trigger(_this.constructor.Event.SHOWN);\n\n if (prevHoverState === HoverState.OUT) {\n _this._leave(null, _this);\n }\n };\n\n if ($(this.tip).hasClass(ClassName$6.FADE)) {\n var transitionDuration = Util.getTransitionDurationFromElement(this.tip);\n $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n }\n };\n\n _proto.hide = function hide(callback) {\n var _this2 = this;\n\n var tip = this.getTipElement();\n var hideEvent = $.Event(this.constructor.Event.HIDE);\n\n var complete = function complete() {\n if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip);\n }\n\n _this2._cleanTipClass();\n\n _this2.element.removeAttribute('aria-describedby');\n\n $(_this2.element).trigger(_this2.constructor.Event.HIDDEN);\n\n if (_this2._popper !== null) {\n _this2._popper.destroy();\n }\n\n if (callback) {\n callback();\n }\n };\n\n $(this.element).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n $(tip).removeClass(ClassName$6.SHOW); // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop);\n }\n\n this._activeTrigger[Trigger.CLICK] = false;\n this._activeTrigger[Trigger.FOCUS] = false;\n this._activeTrigger[Trigger.HOVER] = false;\n\n if ($(this.tip).hasClass(ClassName$6.FADE)) {\n var transitionDuration = Util.getTransitionDurationFromElement(tip);\n $(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n\n this._hoverState = '';\n };\n\n _proto.update = function update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Protected\n ;\n\n _proto.isWithContent = function isWithContent() {\n return Boolean(this.getTitle());\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(CLASS_PREFIX + \"-\" + attachment);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $(this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n var tip = this.getTipElement();\n this.setElementContent($(tip.querySelectorAll(Selector$6.TOOLTIP_INNER)), this.getTitle());\n $(tip).removeClass(ClassName$6.FADE + \" \" + ClassName$6.SHOW);\n };\n\n _proto.setElementContent = function setElementContent($element, content) {\n if (_typeof(content) === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (this.config.html) {\n if (!$(content).parent().is($element)) {\n $element.empty().append(content);\n }\n } else {\n $element.text($(content).text());\n }\n\n return;\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);\n }\n\n $element.html(content);\n } else {\n $element.text(content);\n }\n };\n\n _proto.getTitle = function getTitle() {\n var title = this.element.getAttribute('data-original-title');\n\n if (!title) {\n title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;\n }\n\n return title;\n } // Private\n ;\n\n _proto._getOffset = function _getOffset() {\n var _this3 = this;\n\n var offset = {};\n\n if (typeof this.config.offset === 'function') {\n offset.fn = function (data) {\n data.offsets = _objectSpread({}, data.offsets, _this3.config.offset(data.offsets, _this3.element) || {});\n return data;\n };\n } else {\n offset.offset = this.config.offset;\n }\n\n return offset;\n };\n\n _proto._getContainer = function _getContainer() {\n if (this.config.container === false) {\n return document.body;\n }\n\n if (Util.isElement(this.config.container)) {\n return $(this.config.container);\n }\n\n return $(document).find(this.config.container);\n };\n\n _proto._getAttachment = function _getAttachment(placement) {\n return AttachmentMap$1[placement.toUpperCase()];\n };\n\n _proto._setListeners = function _setListeners() {\n var _this4 = this;\n\n var triggers = this.config.trigger.split(' ');\n triggers.forEach(function (trigger) {\n if (trigger === 'click') {\n $(_this4.element).on(_this4.constructor.Event.CLICK, _this4.config.selector, function (event) {\n return _this4.toggle(event);\n });\n } else if (trigger !== Trigger.MANUAL) {\n var eventIn = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSEENTER : _this4.constructor.Event.FOCUSIN;\n var eventOut = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSELEAVE : _this4.constructor.Event.FOCUSOUT;\n $(_this4.element).on(eventIn, _this4.config.selector, function (event) {\n return _this4._enter(event);\n }).on(eventOut, _this4.config.selector, function (event) {\n return _this4._leave(event);\n });\n }\n });\n $(this.element).closest('.modal').on('hide.bs.modal', function () {\n if (_this4.element) {\n _this4.hide();\n }\n });\n\n if (this.config.selector) {\n this.config = _objectSpread({}, this.config, {\n trigger: 'manual',\n selector: ''\n });\n } else {\n this._fixTitle();\n }\n };\n\n _proto._fixTitle = function _fixTitle() {\n var titleType = _typeof(this.element.getAttribute('data-original-title'));\n\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');\n this.element.setAttribute('title', '');\n }\n };\n\n _proto._enter = function _enter(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $(event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $(event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true;\n }\n\n if ($(context.getTipElement()).hasClass(ClassName$6.SHOW) || context._hoverState === HoverState.SHOW) {\n context._hoverState = HoverState.SHOW;\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HoverState.SHOW;\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show();\n return;\n }\n\n context._timeout = setTimeout(function () {\n if (context._hoverState === HoverState.SHOW) {\n context.show();\n }\n }, context.config.delay.show);\n };\n\n _proto._leave = function _leave(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $(event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $(event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false;\n }\n\n if (context._isWithActiveTrigger()) {\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HoverState.OUT;\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide();\n return;\n }\n\n context._timeout = setTimeout(function () {\n if (context._hoverState === HoverState.OUT) {\n context.hide();\n }\n }, context.config.delay.hide);\n };\n\n _proto._isWithActiveTrigger = function _isWithActiveTrigger() {\n for (var trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true;\n }\n }\n\n return false;\n };\n\n _proto._getConfig = function _getConfig(config) {\n var dataAttributes = $(this.element).data();\n Object.keys(dataAttributes).forEach(function (dataAttr) {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr];\n }\n });\n config = _objectSpread({}, this.constructor.Default, dataAttributes, _typeof(config) === 'object' && config ? config : {});\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n\n Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);\n }\n\n return config;\n };\n\n _proto._getDelegateConfig = function _getDelegateConfig() {\n var config = {};\n\n if (this.config) {\n for (var key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key];\n }\n }\n }\n\n return config;\n };\n\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $(this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);\n\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''));\n }\n };\n\n _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {\n var popperInstance = popperData.instance;\n this.tip = popperInstance.popper;\n\n this._cleanTipClass();\n\n this.addAttachmentClass(this._getAttachment(popperData.placement));\n };\n\n _proto._fixTransition = function _fixTransition() {\n var tip = this.getTipElement();\n var initConfigAnimation = this.config.animation;\n\n if (tip.getAttribute('x-placement') !== null) {\n return;\n }\n\n $(tip).removeClass(ClassName$6.FADE);\n this.config.animation = false;\n this.hide();\n this.show();\n this.config.animation = initConfigAnimation;\n } // Static\n ;\n\n Tooltip._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$6);\n\n var _config = _typeof(config) === 'object' && config;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Tooltip(this, _config);\n $(this).data(DATA_KEY$6, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Tooltip, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$6;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$4;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$6;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$6;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event$6;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$6;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$4;\n }\n }]);\n\n return Tooltip;\n }();\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n\n $.fn[NAME$6] = Tooltip._jQueryInterface;\n $.fn[NAME$6].Constructor = Tooltip;\n\n $.fn[NAME$6].noConflict = function () {\n $.fn[NAME$6] = JQUERY_NO_CONFLICT$6;\n return Tooltip._jQueryInterface;\n };\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n\n var NAME$7 = 'popover';\n var VERSION$7 = '4.3.1';\n var DATA_KEY$7 = 'bs.popover';\n var EVENT_KEY$7 = \".\" + DATA_KEY$7;\n var JQUERY_NO_CONFLICT$7 = $.fn[NAME$7];\n var CLASS_PREFIX$1 = 'bs-popover';\n var BSCLS_PREFIX_REGEX$1 = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX$1 + \"\\\\S+\", 'g');\n\n var Default$5 = _objectSpread({}, Tooltip.Default, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: ''\n });\n\n var DefaultType$5 = _objectSpread({}, Tooltip.DefaultType, {\n content: '(string|element|function)'\n });\n\n var ClassName$7 = {\n FADE: 'fade',\n SHOW: 'show'\n };\n var Selector$7 = {\n TITLE: '.popover-header',\n CONTENT: '.popover-body'\n };\n var Event$7 = {\n HIDE: \"hide\" + EVENT_KEY$7,\n HIDDEN: \"hidden\" + EVENT_KEY$7,\n SHOW: \"show\" + EVENT_KEY$7,\n SHOWN: \"shown\" + EVENT_KEY$7,\n INSERTED: \"inserted\" + EVENT_KEY$7,\n CLICK: \"click\" + EVENT_KEY$7,\n FOCUSIN: \"focusin\" + EVENT_KEY$7,\n FOCUSOUT: \"focusout\" + EVENT_KEY$7,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$7,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$7\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Popover = /*#__PURE__*/function (_Tooltip) {\n _inheritsLoose(Popover, _Tooltip);\n\n function Popover() {\n return _Tooltip.apply(this, arguments) || this;\n }\n\n var _proto = Popover.prototype; // Overrides\n\n _proto.isWithContent = function isWithContent() {\n return this.getTitle() || this._getContent();\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(CLASS_PREFIX$1 + \"-\" + attachment);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $(this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n var $tip = $(this.getTipElement()); // We use append for html objects to maintain js events\n\n this.setElementContent($tip.find(Selector$7.TITLE), this.getTitle());\n\n var content = this._getContent();\n\n if (typeof content === 'function') {\n content = content.call(this.element);\n }\n\n this.setElementContent($tip.find(Selector$7.CONTENT), content);\n $tip.removeClass(ClassName$7.FADE + \" \" + ClassName$7.SHOW);\n } // Private\n ;\n\n _proto._getContent = function _getContent() {\n return this.element.getAttribute('data-content') || this.config.content;\n };\n\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $(this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);\n\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''));\n }\n } // Static\n ;\n\n Popover._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$7);\n\n var _config = _typeof(config) === 'object' ? config : null;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Popover(this, _config);\n $(this).data(DATA_KEY$7, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Popover, null, [{\n key: \"VERSION\",\n // Getters\n get: function get() {\n return VERSION$7;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$5;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$7;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$7;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event$7;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$7;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$5;\n }\n }]);\n\n return Popover;\n }(Tooltip);\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n\n $.fn[NAME$7] = Popover._jQueryInterface;\n $.fn[NAME$7].Constructor = Popover;\n\n $.fn[NAME$7].noConflict = function () {\n $.fn[NAME$7] = JQUERY_NO_CONFLICT$7;\n return Popover._jQueryInterface;\n };\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n\n var NAME$8 = 'scrollspy';\n var VERSION$8 = '4.3.1';\n var DATA_KEY$8 = 'bs.scrollspy';\n var EVENT_KEY$8 = \".\" + DATA_KEY$8;\n var DATA_API_KEY$6 = '.data-api';\n var JQUERY_NO_CONFLICT$8 = $.fn[NAME$8];\n var Default$6 = {\n offset: 10,\n method: 'auto',\n target: ''\n };\n var DefaultType$6 = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n };\n var Event$8 = {\n ACTIVATE: \"activate\" + EVENT_KEY$8,\n SCROLL: \"scroll\" + EVENT_KEY$8,\n LOAD_DATA_API: \"load\" + EVENT_KEY$8 + DATA_API_KEY$6\n };\n var ClassName$8 = {\n DROPDOWN_ITEM: 'dropdown-item',\n DROPDOWN_MENU: 'dropdown-menu',\n ACTIVE: 'active'\n };\n var Selector$8 = {\n DATA_SPY: '[data-spy=\"scroll\"]',\n ACTIVE: '.active',\n NAV_LIST_GROUP: '.nav, .list-group',\n NAV_LINKS: '.nav-link',\n NAV_ITEMS: '.nav-item',\n LIST_ITEMS: '.list-group-item',\n DROPDOWN: '.dropdown',\n DROPDOWN_ITEMS: '.dropdown-item',\n DROPDOWN_TOGGLE: '.dropdown-toggle'\n };\n var OffsetMethod = {\n OFFSET: 'offset',\n POSITION: 'position'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var ScrollSpy = /*#__PURE__*/function () {\n function ScrollSpy(element, config) {\n var _this = this;\n\n this._element = element;\n this._scrollElement = element.tagName === 'BODY' ? window : element;\n this._config = this._getConfig(config);\n this._selector = this._config.target + \" \" + Selector$8.NAV_LINKS + \",\" + (this._config.target + \" \" + Selector$8.LIST_ITEMS + \",\") + (this._config.target + \" \" + Selector$8.DROPDOWN_ITEMS);\n this._offsets = [];\n this._targets = [];\n this._activeTarget = null;\n this._scrollHeight = 0;\n $(this._scrollElement).on(Event$8.SCROLL, function (event) {\n return _this._process(event);\n });\n this.refresh();\n\n this._process();\n } // Getters\n\n\n var _proto = ScrollSpy.prototype; // Public\n\n _proto.refresh = function refresh() {\n var _this2 = this;\n\n var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION;\n var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;\n var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0;\n this._offsets = [];\n this._targets = [];\n this._scrollHeight = this._getScrollHeight();\n var targets = [].slice.call(document.querySelectorAll(this._selector));\n targets.map(function (element) {\n var target;\n var targetSelector = Util.getSelectorFromElement(element);\n\n if (targetSelector) {\n target = document.querySelector(targetSelector);\n }\n\n if (target) {\n var targetBCR = target.getBoundingClientRect();\n\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [$(target)[offsetMethod]().top + offsetBase, targetSelector];\n }\n }\n\n return null;\n }).filter(function (item) {\n return item;\n }).sort(function (a, b) {\n return a[0] - b[0];\n }).forEach(function (item) {\n _this2._offsets.push(item[0]);\n\n _this2._targets.push(item[1]);\n });\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$8);\n $(this._scrollElement).off(EVENT_KEY$8);\n this._element = null;\n this._scrollElement = null;\n this._config = null;\n this._selector = null;\n this._offsets = null;\n this._targets = null;\n this._activeTarget = null;\n this._scrollHeight = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread({}, Default$6, _typeof(config) === 'object' && config ? config : {});\n\n if (typeof config.target !== 'string') {\n var id = $(config.target).attr('id');\n\n if (!id) {\n id = Util.getUID(NAME$8);\n $(config.target).attr('id', id);\n }\n\n config.target = \"#\" + id;\n }\n\n Util.typeCheckConfig(NAME$8, config, DefaultType$6);\n return config;\n };\n\n _proto._getScrollTop = function _getScrollTop() {\n return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;\n };\n\n _proto._getScrollHeight = function _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n };\n\n _proto._getOffsetHeight = function _getOffsetHeight() {\n return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;\n };\n\n _proto._process = function _process() {\n var scrollTop = this._getScrollTop() + this._config.offset;\n\n var scrollHeight = this._getScrollHeight();\n\n var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh();\n }\n\n if (scrollTop >= maxScroll) {\n var target = this._targets[this._targets.length - 1];\n\n if (this._activeTarget !== target) {\n this._activate(target);\n }\n\n return;\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null;\n\n this._clear();\n\n return;\n }\n\n var offsetLength = this._offsets.length;\n\n for (var i = offsetLength; i--;) {\n var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);\n\n if (isActiveTarget) {\n this._activate(this._targets[i]);\n }\n }\n };\n\n _proto._activate = function _activate(target) {\n this._activeTarget = target;\n\n this._clear();\n\n var queries = this._selector.split(',').map(function (selector) {\n return selector + \"[data-target=\\\"\" + target + \"\\\"],\" + selector + \"[href=\\\"\" + target + \"\\\"]\";\n });\n\n var $link = $([].slice.call(document.querySelectorAll(queries.join(','))));\n\n if ($link.hasClass(ClassName$8.DROPDOWN_ITEM)) {\n $link.closest(Selector$8.DROPDOWN).find(Selector$8.DROPDOWN_TOGGLE).addClass(ClassName$8.ACTIVE);\n $link.addClass(ClassName$8.ACTIVE);\n } else {\n // Set triggered link as active\n $link.addClass(ClassName$8.ACTIVE); // Set triggered links parents as active\n // With both and markup a parent is the previous sibling of any nav ancestor\n\n $link.parents(Selector$8.NAV_LIST_GROUP).prev(Selector$8.NAV_LINKS + \", \" + Selector$8.LIST_ITEMS).addClass(ClassName$8.ACTIVE); // Handle special case when .nav-link is inside .nav-item\n\n $link.parents(Selector$8.NAV_LIST_GROUP).prev(Selector$8.NAV_ITEMS).children(Selector$8.NAV_LINKS).addClass(ClassName$8.ACTIVE);\n }\n\n $(this._scrollElement).trigger(Event$8.ACTIVATE, {\n relatedTarget: target\n });\n };\n\n _proto._clear = function _clear() {\n [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {\n return node.classList.contains(ClassName$8.ACTIVE);\n }).forEach(function (node) {\n return node.classList.remove(ClassName$8.ACTIVE);\n });\n } // Static\n ;\n\n ScrollSpy._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$8);\n\n var _config = _typeof(config) === 'object' && config;\n\n if (!data) {\n data = new ScrollSpy(this, _config);\n $(this).data(DATA_KEY$8, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(ScrollSpy, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$8;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$6;\n }\n }]);\n\n return ScrollSpy;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(window).on(Event$8.LOAD_DATA_API, function () {\n var scrollSpys = [].slice.call(document.querySelectorAll(Selector$8.DATA_SPY));\n var scrollSpysLength = scrollSpys.length;\n\n for (var i = scrollSpysLength; i--;) {\n var $spy = $(scrollSpys[i]);\n\n ScrollSpy._jQueryInterface.call($spy, $spy.data());\n }\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$8] = ScrollSpy._jQueryInterface;\n $.fn[NAME$8].Constructor = ScrollSpy;\n\n $.fn[NAME$8].noConflict = function () {\n $.fn[NAME$8] = JQUERY_NO_CONFLICT$8;\n return ScrollSpy._jQueryInterface;\n };\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n\n var NAME$9 = 'tab';\n var VERSION$9 = '4.3.1';\n var DATA_KEY$9 = 'bs.tab';\n var EVENT_KEY$9 = \".\" + DATA_KEY$9;\n var DATA_API_KEY$7 = '.data-api';\n var JQUERY_NO_CONFLICT$9 = $.fn[NAME$9];\n var Event$9 = {\n HIDE: \"hide\" + EVENT_KEY$9,\n HIDDEN: \"hidden\" + EVENT_KEY$9,\n SHOW: \"show\" + EVENT_KEY$9,\n SHOWN: \"shown\" + EVENT_KEY$9,\n CLICK_DATA_API: \"click\" + EVENT_KEY$9 + DATA_API_KEY$7\n };\n var ClassName$9 = {\n DROPDOWN_MENU: 'dropdown-menu',\n ACTIVE: 'active',\n DISABLED: 'disabled',\n FADE: 'fade',\n SHOW: 'show'\n };\n var Selector$9 = {\n DROPDOWN: '.dropdown',\n NAV_LIST_GROUP: '.nav, .list-group',\n ACTIVE: '.active',\n ACTIVE_UL: '> li > .active',\n DATA_TOGGLE: '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]',\n DROPDOWN_TOGGLE: '.dropdown-toggle',\n DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Tab = /*#__PURE__*/function () {\n function Tab(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Tab.prototype; // Public\n\n _proto.show = function show() {\n var _this = this;\n\n if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName$9.ACTIVE) || $(this._element).hasClass(ClassName$9.DISABLED)) {\n return;\n }\n\n var target;\n var previous;\n var listElement = $(this._element).closest(Selector$9.NAV_LIST_GROUP)[0];\n var selector = Util.getSelectorFromElement(this._element);\n\n if (listElement) {\n var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? Selector$9.ACTIVE_UL : Selector$9.ACTIVE;\n previous = $.makeArray($(listElement).find(itemSelector));\n previous = previous[previous.length - 1];\n }\n\n var hideEvent = $.Event(Event$9.HIDE, {\n relatedTarget: this._element\n });\n var showEvent = $.Event(Event$9.SHOW, {\n relatedTarget: previous\n });\n\n if (previous) {\n $(previous).trigger(hideEvent);\n }\n\n $(this._element).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (selector) {\n target = document.querySelector(selector);\n }\n\n this._activate(this._element, listElement);\n\n var complete = function complete() {\n var hiddenEvent = $.Event(Event$9.HIDDEN, {\n relatedTarget: _this._element\n });\n var shownEvent = $.Event(Event$9.SHOWN, {\n relatedTarget: previous\n });\n $(previous).trigger(hiddenEvent);\n $(_this._element).trigger(shownEvent);\n };\n\n if (target) {\n this._activate(target, target.parentNode, complete);\n } else {\n complete();\n }\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$9);\n this._element = null;\n } // Private\n ;\n\n _proto._activate = function _activate(element, container, callback) {\n var _this2 = this;\n\n var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $(container).find(Selector$9.ACTIVE_UL) : $(container).children(Selector$9.ACTIVE);\n var active = activeElements[0];\n var isTransitioning = callback && active && $(active).hasClass(ClassName$9.FADE);\n\n var complete = function complete() {\n return _this2._transitionComplete(element, active, callback);\n };\n\n if (active && isTransitioning) {\n var transitionDuration = Util.getTransitionDurationFromElement(active);\n $(active).removeClass(ClassName$9.SHOW).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n\n _proto._transitionComplete = function _transitionComplete(element, active, callback) {\n if (active) {\n $(active).removeClass(ClassName$9.ACTIVE);\n var dropdownChild = $(active.parentNode).find(Selector$9.DROPDOWN_ACTIVE_CHILD)[0];\n\n if (dropdownChild) {\n $(dropdownChild).removeClass(ClassName$9.ACTIVE);\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false);\n }\n }\n\n $(element).addClass(ClassName$9.ACTIVE);\n\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true);\n }\n\n Util.reflow(element);\n\n if (element.classList.contains(ClassName$9.FADE)) {\n element.classList.add(ClassName$9.SHOW);\n }\n\n if (element.parentNode && $(element.parentNode).hasClass(ClassName$9.DROPDOWN_MENU)) {\n var dropdownElement = $(element).closest(Selector$9.DROPDOWN)[0];\n\n if (dropdownElement) {\n var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(Selector$9.DROPDOWN_TOGGLE));\n $(dropdownToggleList).addClass(ClassName$9.ACTIVE);\n }\n\n element.setAttribute('aria-expanded', true);\n }\n\n if (callback) {\n callback();\n }\n } // Static\n ;\n\n Tab._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $this = $(this);\n var data = $this.data(DATA_KEY$9);\n\n if (!data) {\n data = new Tab(this);\n $this.data(DATA_KEY$9, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Tab, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$9;\n }\n }]);\n\n return Tab;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(Event$9.CLICK_DATA_API, Selector$9.DATA_TOGGLE, function (event) {\n event.preventDefault();\n\n Tab._jQueryInterface.call($(this), 'show');\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$9] = Tab._jQueryInterface;\n $.fn[NAME$9].Constructor = Tab;\n\n $.fn[NAME$9].noConflict = function () {\n $.fn[NAME$9] = JQUERY_NO_CONFLICT$9;\n return Tab._jQueryInterface;\n };\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n\n var NAME$a = 'toast';\n var VERSION$a = '4.3.1';\n var DATA_KEY$a = 'bs.toast';\n var EVENT_KEY$a = \".\" + DATA_KEY$a;\n var JQUERY_NO_CONFLICT$a = $.fn[NAME$a];\n var Event$a = {\n CLICK_DISMISS: \"click.dismiss\" + EVENT_KEY$a,\n HIDE: \"hide\" + EVENT_KEY$a,\n HIDDEN: \"hidden\" + EVENT_KEY$a,\n SHOW: \"show\" + EVENT_KEY$a,\n SHOWN: \"shown\" + EVENT_KEY$a\n };\n var ClassName$a = {\n FADE: 'fade',\n HIDE: 'hide',\n SHOW: 'show',\n SHOWING: 'showing'\n };\n var DefaultType$7 = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n };\n var Default$7 = {\n animation: true,\n autohide: true,\n delay: 500\n };\n var Selector$a = {\n DATA_DISMISS: '[data-dismiss=\"toast\"]'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Toast = /*#__PURE__*/function () {\n function Toast(element, config) {\n this._element = element;\n this._config = this._getConfig(config);\n this._timeout = null;\n\n this._setListeners();\n } // Getters\n\n\n var _proto = Toast.prototype; // Public\n\n _proto.show = function show() {\n var _this = this;\n\n $(this._element).trigger(Event$a.SHOW);\n\n if (this._config.animation) {\n this._element.classList.add(ClassName$a.FADE);\n }\n\n var complete = function complete() {\n _this._element.classList.remove(ClassName$a.SHOWING);\n\n _this._element.classList.add(ClassName$a.SHOW);\n\n $(_this._element).trigger(Event$a.SHOWN);\n\n if (_this._config.autohide) {\n _this.hide();\n }\n };\n\n this._element.classList.remove(ClassName$a.HIDE);\n\n this._element.classList.add(ClassName$a.SHOWING);\n\n if (this._config.animation) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n\n _proto.hide = function hide(withoutTimeout) {\n var _this2 = this;\n\n if (!this._element.classList.contains(ClassName$a.SHOW)) {\n return;\n }\n\n $(this._element).trigger(Event$a.HIDE);\n\n if (withoutTimeout) {\n this._close();\n } else {\n this._timeout = setTimeout(function () {\n _this2._close();\n }, this._config.delay);\n }\n };\n\n _proto.dispose = function dispose() {\n clearTimeout(this._timeout);\n this._timeout = null;\n\n if (this._element.classList.contains(ClassName$a.SHOW)) {\n this._element.classList.remove(ClassName$a.SHOW);\n }\n\n $(this._element).off(Event$a.CLICK_DISMISS);\n $.removeData(this._element, DATA_KEY$a);\n this._element = null;\n this._config = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread({}, Default$7, $(this._element).data(), _typeof(config) === 'object' && config ? config : {});\n Util.typeCheckConfig(NAME$a, config, this.constructor.DefaultType);\n return config;\n };\n\n _proto._setListeners = function _setListeners() {\n var _this3 = this;\n\n $(this._element).on(Event$a.CLICK_DISMISS, Selector$a.DATA_DISMISS, function () {\n return _this3.hide(true);\n });\n };\n\n _proto._close = function _close() {\n var _this4 = this;\n\n var complete = function complete() {\n _this4._element.classList.add(ClassName$a.HIDE);\n\n $(_this4._element).trigger(Event$a.HIDDEN);\n };\n\n this._element.classList.remove(ClassName$a.SHOW);\n\n if (this._config.animation) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n } // Static\n ;\n\n Toast._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $(this);\n var data = $element.data(DATA_KEY$a);\n\n var _config = _typeof(config) === 'object' && config;\n\n if (!data) {\n data = new Toast(this, _config);\n $element.data(DATA_KEY$a, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config](this);\n }\n });\n };\n\n _createClass(Toast, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$a;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$7;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$7;\n }\n }]);\n\n return Toast;\n }();\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n\n $.fn[NAME$a] = Toast._jQueryInterface;\n $.fn[NAME$a].Constructor = Toast;\n\n $.fn[NAME$a].noConflict = function () {\n $.fn[NAME$a] = JQUERY_NO_CONFLICT$a;\n return Toast._jQueryInterface;\n };\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n (function () {\n if (typeof $ === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.');\n }\n\n var version = $.fn.jquery.split(' ')[0].split('.');\n var minMajor = 1;\n var ltMajor = 2;\n var minMinor = 9;\n var minPatch = 1;\n var maxMajor = 4;\n\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');\n }\n })();\n\n exports.Util = Util;\n exports.Alert = Alert;\n exports.Button = Button;\n exports.Carousel = Carousel;\n exports.Collapse = Collapse;\n exports.Dropdown = Dropdown;\n exports.Modal = Modal;\n exports.Popover = Popover;\n exports.Scrollspy = ScrollSpy;\n exports.Tab = Tab;\n exports.Toast = Toast;\n exports.Tooltip = Tooltip;\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n});","module.exports = __webpack_public_path__ + \"media/navi/logo-1aafc531.png\";","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/dist/cjs.js??ref--4-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--4-2!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Header.vue?vue&type=style&index=0&id=19e924d0&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"media/navi/icon_home-7ed9e9ed.png\";","module.exports = __webpack_public_path__ + \"media/navi/icon_scroll-00d43f5a.png\";","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/dist/cjs.js??ref--4-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--4-2!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Step.vue?vue&type=style&index=0&id=4baa9600&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"media/navi/navi_default-a7f0ae9a.png\";","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/dist/cjs.js??ref--4-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--4-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Basic.vue?vue&type=style&index=0&id=32142ce6&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"media/navi/populife_pick_key-3f1489a0.png\";","module.exports = __webpack_public_path__ + \"media/navi/camera_kao_ninshiki-3704fde3.png\";","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/dist/cjs.js??ref--4-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--4-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Identification.vue?vue&type=style&index=0&id=6588d18a&scoped=true&lang=css&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/dist/cjs.js??ref--4-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--4-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loading.vue?vue&type=style&index=0&id=c4950e54&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"media/navi/lock_door_joiner-4b0f5af7.png\";","module.exports = __webpack_public_path__ + \"media/navi/phone_chat-6a5f1f5e.png\";","module.exports = __webpack_public_path__ + \"media/navi/populife_return_key-ae034306.png\";","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/dist/cjs.js??ref--4-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--4-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TakeFaceImage.vue?vue&type=style&index=0&scope=true&lang=css&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/dist/cjs.js??ref--4-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--4-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Viewing.vue?vue&type=style&index=0&id=218e26d0&scoped=true&lang=css&\"","var map = {\n\t\"./Calendar\": 399,\n\t\"./Calendar.jsx\": 399,\n\t\"./Calendar.vue\": 484,\n\t\"./CustomerInfoForm\": 416,\n\t\"./CustomerInfoForm.vue\": 416,\n\t\"./FetchLocation\": 67,\n\t\"./FetchLocation.vue\": 67,\n\t\"./FlowDetailForm\": 420,\n\t\"./FlowDetailForm.vue\": 420,\n\t\"./FlowNotesForm\": 421,\n\t\"./FlowNotesForm.vue\": 421,\n\t\"./LocationIncorrectModal\": 68,\n\t\"./LocationIncorrectModal.vue\": 68,\n\t\"./PhotoUntakeableModal\": 53,\n\t\"./PhotoUntakeableModal.vue\": 53,\n\t\"./ReservationOpinionForm\": 417,\n\t\"./ReservationOpinionForm.vue\": 417,\n\t\"./company/Loading\": 41,\n\t\"./company/Loading.vue\": 41,\n\t\"./company/LocalCautionModal\": 137,\n\t\"./company/LocalCautionModal.vue\": 137,\n\t\"./company/LocalGuidanceIntroduction\": 423,\n\t\"./company/LocalGuidanceIntroduction.vue\": 423,\n\t\"./company/RemoteCautionModal\": 138,\n\t\"./company/RemoteCautionModal.vue\": 138,\n\t\"./company/RemoteGuidanceIntroduction\": 424,\n\t\"./company/RemoteGuidanceIntroduction.vue\": 424,\n\t\"./company/SelectGuidanceWay\": 422,\n\t\"./company/SelectGuidanceWay.vue\": 422,\n\t\"./company/TakeCollatingPhoto\": 366,\n\t\"./company/TakeCollatingPhoto.vue\": 366,\n\t\"./company/TakeFaceImage\": 139,\n\t\"./company/TakeFaceImage.vue\": 139,\n\t\"./company/TakeFaceImageModal\": 418,\n\t\"./company/TakeFaceImageModal.vue\": 418,\n\t\"./company/WaitLocalGuidance\": 481,\n\t\"./company/WaitLocalGuidance.vue\": 481,\n\t\"./company/WaitRemoteGuidance\": 482,\n\t\"./company/WaitRemoteGuidance.vue\": 482,\n\t\"./enums/direction\": 56,\n\t\"./enums/direction.jsx\": 56,\n\t\"./enums/imageType\": 57,\n\t\"./enums/imageType.jsx\": 57,\n\t\"./enums/layouts\": 21,\n\t\"./enums/layouts.jsx\": 21,\n\t\"./enums/propertyKind\": 44,\n\t\"./enums/propertyKind.jsx\": 44,\n\t\"./enums/structure\": 58,\n\t\"./enums/structure.jsx\": 58,\n\t\"./enums/unit\": 24,\n\t\"./enums/unit.jsx\": 24,\n\t\"./navi/Basic\": 425,\n\t\"./navi/Basic.vue\": 425,\n\t\"./navi/Call\": 426,\n\t\"./navi/Call.vue\": 426,\n\t\"./navi/FinishViewing\": 437,\n\t\"./navi/FinishViewing.vue\": 437,\n\t\"./navi/GetKeyFromKs\": 427,\n\t\"./navi/GetKeyFromKs.vue\": 427,\n\t\"./navi/GetKeyFromPopulife\": 428,\n\t\"./navi/GetKeyFromPopulife.vue\": 428,\n\t\"./navi/HeadingToKs\": 429,\n\t\"./navi/HeadingToKs.vue\": 429,\n\t\"./navi/Identification\": 430,\n\t\"./navi/Identification.vue\": 430,\n\t\"./navi/Loading\": 431,\n\t\"./navi/Loading.vue\": 431,\n\t\"./navi/LockDoorJoiner\": 432,\n\t\"./navi/LockDoorJoiner.vue\": 432,\n\t\"./navi/MoveToProperty\": 438,\n\t\"./navi/MoveToProperty.vue\": 438,\n\t\"./navi/ReturnKeyToKs\": 433,\n\t\"./navi/ReturnKeyToKs.vue\": 433,\n\t\"./navi/ReturnKeyToPopulife\": 434,\n\t\"./navi/ReturnKeyToPopulife.vue\": 434,\n\t\"./navi/TakeFaceImage\": 419,\n\t\"./navi/TakeFaceImage.vue\": 419,\n\t\"./navi/UnlockDoorJoiner\": 435,\n\t\"./navi/UnlockDoorJoiner.vue\": 435,\n\t\"./navi/Viewing\": 436,\n\t\"./navi/Viewing.vue\": 436,\n\t\"./navi/common/Footer\": 19,\n\t\"./navi/common/Footer.vue\": 19,\n\t\"./navi/common/Header\": 15,\n\t\"./navi/common/Header.vue\": 15,\n\t\"./navi/common/RoomInfo\": 16,\n\t\"./navi/common/RoomInfo.vue\": 16,\n\t\"./navi/common/Step\": 17,\n\t\"./navi/common/Step.vue\": 17,\n\t\"./navi/common/Welcome\": 18,\n\t\"./navi/common/Welcome.vue\": 18,\n\t\"./pages/MySearchPage\": 467,\n\t\"./pages/MySearchPage.jsx\": 467,\n\t\"./pages/PropertiesSearch/ChangeConditions\": 288,\n\t\"./pages/PropertiesSearch/ChangeConditions.jsx\": 288,\n\t\"./pages/PropertiesSearch/DetailConditions\": 59,\n\t\"./pages/PropertiesSearch/DetailConditions.jsx\": 59,\n\t\"./pages/PropertiesSearch/DetailConditions/BuildingType\": 289,\n\t\"./pages/PropertiesSearch/DetailConditions/BuildingType.jsx\": 289,\n\t\"./pages/PropertiesSearch/DetailConditions/CheckBox\": 87,\n\t\"./pages/PropertiesSearch/DetailConditions/CheckBox.jsx\": 87,\n\t\"./pages/PropertiesSearch/DetailConditions/FloorPlan\": 291,\n\t\"./pages/PropertiesSearch/DetailConditions/FloorPlan.jsx\": 291,\n\t\"./pages/PropertiesSearch/DetailConditions/Particulars\": 295,\n\t\"./pages/PropertiesSearch/DetailConditions/Particulars.jsx\": 295,\n\t\"./pages/PropertiesSearch/DetailConditions/Rent\": 292,\n\t\"./pages/PropertiesSearch/DetailConditions/Rent.jsx\": 292,\n\t\"./pages/PropertiesSearch/DetailConditions/Structure\": 293,\n\t\"./pages/PropertiesSearch/DetailConditions/Structure.jsx\": 293,\n\t\"./pages/PropertiesSearch/DetailConditions/WalkFromStation\": 294,\n\t\"./pages/PropertiesSearch/DetailConditions/WalkFromStation.jsx\": 294,\n\t\"./pages/PropertiesSearch/Map\": 91,\n\t\"./pages/PropertiesSearch/Map.jsx\": 91,\n\t\"./pages/PropertiesSearch/Map2\": 79,\n\t\"./pages/PropertiesSearch/Map2.jsx\": 79,\n\t\"./pages/PropertiesSearch/Map3\": 296,\n\t\"./pages/PropertiesSearch/Map3.jsx\": 296,\n\t\"./pages/PropertiesSearch/MapContent\": 297,\n\t\"./pages/PropertiesSearch/MapContent.jsx\": 297,\n\t\"./pages/PropertiesSearch/MapViewModal\": 298,\n\t\"./pages/PropertiesSearch/MapViewModal.jsx\": 298,\n\t\"./pages/PropertiesSearch/Modal\": 299,\n\t\"./pages/PropertiesSearch/Modal.jsx\": 299,\n\t\"./pages/PropertiesSearch/Property\": 300,\n\t\"./pages/PropertiesSearch/Property.jsx\": 300,\n\t\"./pages/PropertiesSearch/Reservation\": 470,\n\t\"./pages/PropertiesSearch/Reservation.jsx\": 470,\n\t\"./pages/PropertiesSearch/ReservationCalender\": 474,\n\t\"./pages/PropertiesSearch/ReservationCalender.jsx\": 474,\n\t\"./pages/PropertiesSearch/ReservationCalenderModal\": 46,\n\t\"./pages/PropertiesSearch/ReservationCalenderModal.jsx\": 46,\n\t\"./pages/PropertiesSearch/ReservationForm/MapViewModal\": 78,\n\t\"./pages/PropertiesSearch/ReservationForm/MapViewModal.jsx\": 78,\n\t\"./pages/PropertiesSearch/ReservationForm/Modal\": 63,\n\t\"./pages/PropertiesSearch/ReservationForm/Modal.jsx\": 63,\n\t\"./pages/PropertiesSearch/ReservationForm/Recommendation\": 103,\n\t\"./pages/PropertiesSearch/ReservationForm/Recommendation.jsx\": 103,\n\t\"./pages/PropertiesSearch/ReservationForm/RecommendationTop\": 308,\n\t\"./pages/PropertiesSearch/ReservationForm/RecommendationTop.jsx\": 308,\n\t\"./pages/PropertiesSearch/ReservationForm/SchedeleCheckComplete\": 312,\n\t\"./pages/PropertiesSearch/ReservationForm/SchedeleCheckComplete.jsx\": 312,\n\t\"./pages/PropertiesSearch/ReservationForm/SchedeleCheckConfirm\": 311,\n\t\"./pages/PropertiesSearch/ReservationForm/SchedeleCheckConfirm.jsx\": 311,\n\t\"./pages/PropertiesSearch/ReservationForm/SchedeleCheckInput\": 310,\n\t\"./pages/PropertiesSearch/ReservationForm/SchedeleCheckInput.jsx\": 310,\n\t\"./pages/PropertiesSearch/ReservationForm/SelfComplete\": 307,\n\t\"./pages/PropertiesSearch/ReservationForm/SelfComplete.jsx\": 307,\n\t\"./pages/PropertiesSearch/ReservationForm/SelfConfirm\": 306,\n\t\"./pages/PropertiesSearch/ReservationForm/SelfConfirm.jsx\": 306,\n\t\"./pages/PropertiesSearch/ReservationForm/SelfInput\": 304,\n\t\"./pages/PropertiesSearch/ReservationForm/SelfInput.jsx\": 304,\n\t\"./pages/PropertiesSearch/Reservation_modal\": 302,\n\t\"./pages/PropertiesSearch/Reservation_modal.jsx\": 302,\n\t\"./pages/PropertiesSearch/Room\": 301,\n\t\"./pages/PropertiesSearch/Room.jsx\": 301,\n\t\"./pages/PropertiesSearch/ScheduleCheckReservationForm\": 309,\n\t\"./pages/PropertiesSearch/ScheduleCheckReservationForm.jsx\": 309,\n\t\"./pages/PropertiesSearch/SearchForm\": 77,\n\t\"./pages/PropertiesSearch/SearchForm.jsx\": 77,\n\t\"./pages/PropertiesSearch/SelfReservationForm\": 303,\n\t\"./pages/PropertiesSearch/SelfReservationForm.jsx\": 303,\n\t\"./pages/PropertiesSearch/StreetViewModal\": 62,\n\t\"./pages/PropertiesSearch/StreetViewModal.jsx\": 62,\n\t\"./pages/PropertiesSearch/common\": 76,\n\t\"./pages/PropertiesSearch/common.js\": 76,\n\t\"./pages/PropertiesSearch/state\": 13,\n\t\"./pages/PropertiesSearch/state.js\": 13,\n\t\"./pages/PropertiesSearchPage\": 475,\n\t\"./pages/PropertiesSearchPage.jsx\": 475,\n\t\"./pages/TopPage\": 476,\n\t\"./pages/TopPage.jsx\": 476,\n\t\"./pages/VideoPlayer/VideoBgm\": 141,\n\t\"./pages/VideoPlayer/VideoBgm.jsx\": 141,\n\t\"./pages/VideoPlayer/VideoPlayer\": 22,\n\t\"./pages/VideoPlayer/VideoPlayer.jsx\": 22,\n\t\"./pages/contact/Contact\": 477,\n\t\"./pages/contact/Contact.jsx\": 477,\n\t\"./pages/contact/ContactComplete\": 322,\n\t\"./pages/contact/ContactComplete.jsx\": 322,\n\t\"./pages/contact/ContactConfirm\": 323,\n\t\"./pages/contact/ContactConfirm.jsx\": 323,\n\t\"./pages/contact/ContactInput\": 321,\n\t\"./pages/contact/ContactInput.jsx\": 321,\n\t\"./pages/top/AreaSearch\": 104,\n\t\"./pages/top/AreaSearch.jsx\": 104,\n\t\"./pages/top/AreaSearch/Accordion\": 313,\n\t\"./pages/top/AreaSearch/Accordion.jsx\": 313,\n\t\"./pages/top/Faq\": 318,\n\t\"./pages/top/Faq.jsx\": 318,\n\t\"./pages/top/Map\": 136,\n\t\"./pages/top/Map.jsx\": 136,\n\t\"./pages/top/MapProperties\": 135,\n\t\"./pages/top/MapProperties.jsx\": 135,\n\t\"./pages/top/MapProperties2\": 478,\n\t\"./pages/top/MapProperties2.jsx\": 478,\n\t\"./pages/top/MapProperties3\": 99,\n\t\"./pages/top/MapProperties3.jsx\": 99,\n\t\"./pages/top/MapPropertiesModal\": 98,\n\t\"./pages/top/MapPropertiesModal.jsx\": 98,\n\t\"./pages/top/MapSearch\": 320,\n\t\"./pages/top/MapSearch.jsx\": 320,\n\t\"./pages/top/Properties\": 89,\n\t\"./pages/top/Properties.jsx\": 89,\n\t\"./pages/top/PropertiesSearch/AreaSearch\": 315,\n\t\"./pages/top/PropertiesSearch/AreaSearch.jsx\": 315,\n\t\"./pages/top/PropertiesSearch/CommuteSearch\": 479,\n\t\"./pages/top/PropertiesSearch/CommuteSearch.jsx\": 479,\n\t\"./pages/top/PropertiesSearch/MapSearch\": 319,\n\t\"./pages/top/PropertiesSearch/MapSearch.jsx\": 319,\n\t\"./pages/top/PropertiesSearch/StationSearch\": 316,\n\t\"./pages/top/PropertiesSearch/StationSearch.jsx\": 316,\n\t\"./pages/top/PropertyModal\": 61,\n\t\"./pages/top/PropertyModal.jsx\": 61,\n\t\"./pages/top/RecommendProperties\": 317,\n\t\"./pages/top/RecommendProperties.jsx\": 317,\n\t\"./pages/top/RecommendPropertyModal\": 88,\n\t\"./pages/top/RecommendPropertyModal.jsx\": 88,\n\t\"./pages/top/StationSearch\": 105,\n\t\"./pages/top/StationSearch.jsx\": 105,\n\t\"./pages/top/StationSearch/StationAccordion\": 142,\n\t\"./pages/top/StationSearch/StationAccordion.jsx\": 142,\n\t\"./pages/top/Top\": 314,\n\t\"./pages/top/Top.jsx\": 314,\n\t\"./pages/top/state\": 31,\n\t\"./pages/top/state.js\": 31\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 575;","/** @license React v17.0.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nvar l = require(\"object-assign\"),\n n = 60103,\n p = 60106;\n\nexports.Fragment = 60107;\nexports.StrictMode = 60108;\nexports.Profiler = 60114;\nvar q = 60109,\n r = 60110,\n t = 60112;\nexports.Suspense = 60113;\nvar u = 60115,\n v = 60116;\n\nif (\"function\" === typeof Symbol && Symbol.for) {\n var w = Symbol.for;\n n = w(\"react.element\");\n p = w(\"react.portal\");\n exports.Fragment = w(\"react.fragment\");\n exports.StrictMode = w(\"react.strict_mode\");\n exports.Profiler = w(\"react.profiler\");\n q = w(\"react.provider\");\n r = w(\"react.context\");\n t = w(\"react.forward_ref\");\n exports.Suspense = w(\"react.suspense\");\n u = w(\"react.memo\");\n v = w(\"react.lazy\");\n}\n\nvar x = \"function\" === typeof Symbol && Symbol.iterator;\n\nfunction y(a) {\n if (null === a || \"object\" !== _typeof(a)) return null;\n a = x && a[x] || a[\"@@iterator\"];\n return \"function\" === typeof a ? a : null;\n}\n\nfunction z(a) {\n for (var b = \"https://reactjs.org/docs/error-decoder.html?invariant=\" + a, c = 1; c < arguments.length; c++) {\n b += \"&args[]=\" + encodeURIComponent(arguments[c]);\n }\n\n return \"Minified React error #\" + a + \"; visit \" + b + \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\";\n}\n\nvar A = {\n isMounted: function isMounted() {\n return !1;\n },\n enqueueForceUpdate: function enqueueForceUpdate() {},\n enqueueReplaceState: function enqueueReplaceState() {},\n enqueueSetState: function enqueueSetState() {}\n},\n B = {};\n\nfunction C(a, b, c) {\n this.props = a;\n this.context = b;\n this.refs = B;\n this.updater = c || A;\n}\n\nC.prototype.isReactComponent = {};\n\nC.prototype.setState = function (a, b) {\n if (\"object\" !== _typeof(a) && \"function\" !== typeof a && null != a) throw Error(z(85));\n this.updater.enqueueSetState(this, a, b, \"setState\");\n};\n\nC.prototype.forceUpdate = function (a) {\n this.updater.enqueueForceUpdate(this, a, \"forceUpdate\");\n};\n\nfunction D() {}\n\nD.prototype = C.prototype;\n\nfunction E(a, b, c) {\n this.props = a;\n this.context = b;\n this.refs = B;\n this.updater = c || A;\n}\n\nvar F = E.prototype = new D();\nF.constructor = E;\nl(F, C.prototype);\nF.isPureReactComponent = !0;\nvar G = {\n current: null\n},\n H = Object.prototype.hasOwnProperty,\n I = {\n key: !0,\n ref: !0,\n __self: !0,\n __source: !0\n};\n\nfunction J(a, b, c) {\n var e,\n d = {},\n k = null,\n h = null;\n if (null != b) for (e in void 0 !== b.ref && (h = b.ref), void 0 !== b.key && (k = \"\" + b.key), b) {\n H.call(b, e) && !I.hasOwnProperty(e) && (d[e] = b[e]);\n }\n var g = arguments.length - 2;\n if (1 === g) d.children = c;else if (1 < g) {\n for (var f = Array(g), m = 0; m < g; m++) {\n f[m] = arguments[m + 2];\n }\n\n d.children = f;\n }\n if (a && a.defaultProps) for (e in g = a.defaultProps, g) {\n void 0 === d[e] && (d[e] = g[e]);\n }\n return {\n $$typeof: n,\n type: a,\n key: k,\n ref: h,\n props: d,\n _owner: G.current\n };\n}\n\nfunction K(a, b) {\n return {\n $$typeof: n,\n type: a.type,\n key: b,\n ref: a.ref,\n props: a.props,\n _owner: a._owner\n };\n}\n\nfunction L(a) {\n return \"object\" === _typeof(a) && null !== a && a.$$typeof === n;\n}\n\nfunction escape(a) {\n var b = {\n \"=\": \"=0\",\n \":\": \"=2\"\n };\n return \"$\" + a.replace(/[=:]/g, function (a) {\n return b[a];\n });\n}\n\nvar M = /\\/+/g;\n\nfunction N(a, b) {\n return \"object\" === _typeof(a) && null !== a && null != a.key ? escape(\"\" + a.key) : b.toString(36);\n}\n\nfunction O(a, b, c, e, d) {\n var k = _typeof(a);\n\n if (\"undefined\" === k || \"boolean\" === k) a = null;\n var h = !1;\n if (null === a) h = !0;else switch (k) {\n case \"string\":\n case \"number\":\n h = !0;\n break;\n\n case \"object\":\n switch (a.$$typeof) {\n case n:\n case p:\n h = !0;\n }\n\n }\n if (h) return h = a, d = d(h), a = \"\" === e ? \".\" + N(h, 0) : e, Array.isArray(d) ? (c = \"\", null != a && (c = a.replace(M, \"$&/\") + \"/\"), O(d, b, c, \"\", function (a) {\n return a;\n })) : null != d && (L(d) && (d = K(d, c + (!d.key || h && h.key === d.key ? \"\" : (\"\" + d.key).replace(M, \"$&/\") + \"/\") + a)), b.push(d)), 1;\n h = 0;\n e = \"\" === e ? \".\" : e + \":\";\n if (Array.isArray(a)) for (var g = 0; g < a.length; g++) {\n k = a[g];\n var f = e + N(k, g);\n h += O(k, b, c, f, d);\n } else if (f = y(a), \"function\" === typeof f) for (a = f.call(a), g = 0; !(k = a.next()).done;) {\n k = k.value, f = e + N(k, g++), h += O(k, b, c, f, d);\n } else if (\"object\" === k) throw b = \"\" + a, Error(z(31, \"[object Object]\" === b ? \"object with keys {\" + Object.keys(a).join(\", \") + \"}\" : b));\n return h;\n}\n\nfunction P(a, b, c) {\n if (null == a) return a;\n var e = [],\n d = 0;\n O(a, e, \"\", \"\", function (a) {\n return b.call(c, a, d++);\n });\n return e;\n}\n\nfunction Q(a) {\n if (-1 === a._status) {\n var b = a._result;\n b = b();\n a._status = 0;\n a._result = b;\n b.then(function (b) {\n 0 === a._status && (b = b.default, a._status = 1, a._result = b);\n }, function (b) {\n 0 === a._status && (a._status = 2, a._result = b);\n });\n }\n\n if (1 === a._status) return a._result;\n throw a._result;\n}\n\nvar R = {\n current: null\n};\n\nfunction S() {\n var a = R.current;\n if (null === a) throw Error(z(321));\n return a;\n}\n\nvar T = {\n ReactCurrentDispatcher: R,\n ReactCurrentBatchConfig: {\n transition: 0\n },\n ReactCurrentOwner: G,\n IsSomeRendererActing: {\n current: !1\n },\n assign: l\n};\nexports.Children = {\n map: P,\n forEach: function forEach(a, b, c) {\n P(a, function () {\n b.apply(this, arguments);\n }, c);\n },\n count: function count(a) {\n var b = 0;\n P(a, function () {\n b++;\n });\n return b;\n },\n toArray: function toArray(a) {\n return P(a, function (a) {\n return a;\n }) || [];\n },\n only: function only(a) {\n if (!L(a)) throw Error(z(143));\n return a;\n }\n};\nexports.Component = C;\nexports.PureComponent = E;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = T;\n\nexports.cloneElement = function (a, b, c) {\n if (null === a || void 0 === a) throw Error(z(267, a));\n var e = l({}, a.props),\n d = a.key,\n k = a.ref,\n h = a._owner;\n\n if (null != b) {\n void 0 !== b.ref && (k = b.ref, h = G.current);\n void 0 !== b.key && (d = \"\" + b.key);\n if (a.type && a.type.defaultProps) var g = a.type.defaultProps;\n\n for (f in b) {\n H.call(b, f) && !I.hasOwnProperty(f) && (e[f] = void 0 === b[f] && void 0 !== g ? g[f] : b[f]);\n }\n }\n\n var f = arguments.length - 2;\n if (1 === f) e.children = c;else if (1 < f) {\n g = Array(f);\n\n for (var m = 0; m < f; m++) {\n g[m] = arguments[m + 2];\n }\n\n e.children = g;\n }\n return {\n $$typeof: n,\n type: a.type,\n key: d,\n ref: k,\n props: e,\n _owner: h\n };\n};\n\nexports.createContext = function (a, b) {\n void 0 === b && (b = null);\n a = {\n $$typeof: r,\n _calculateChangedBits: b,\n _currentValue: a,\n _currentValue2: a,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n a.Provider = {\n $$typeof: q,\n _context: a\n };\n return a.Consumer = a;\n};\n\nexports.createElement = J;\n\nexports.createFactory = function (a) {\n var b = J.bind(null, a);\n b.type = a;\n return b;\n};\n\nexports.createRef = function () {\n return {\n current: null\n };\n};\n\nexports.forwardRef = function (a) {\n return {\n $$typeof: t,\n render: a\n };\n};\n\nexports.isValidElement = L;\n\nexports.lazy = function (a) {\n return {\n $$typeof: v,\n _payload: {\n _status: -1,\n _result: a\n },\n _init: Q\n };\n};\n\nexports.memo = function (a, b) {\n return {\n $$typeof: u,\n type: a,\n compare: void 0 === b ? null : b\n };\n};\n\nexports.useCallback = function (a, b) {\n return S().useCallback(a, b);\n};\n\nexports.useContext = function (a, b) {\n return S().useContext(a, b);\n};\n\nexports.useDebugValue = function () {};\n\nexports.useEffect = function (a, b) {\n return S().useEffect(a, b);\n};\n\nexports.useImperativeHandle = function (a, b, c) {\n return S().useImperativeHandle(a, b, c);\n};\n\nexports.useLayoutEffect = function (a, b) {\n return S().useLayoutEffect(a, b);\n};\n\nexports.useMemo = function (a, b) {\n return S().useMemo(a, b);\n};\n\nexports.useReducer = function (a, b, c) {\n return S().useReducer(a, b, c);\n};\n\nexports.useRef = function (a) {\n return S().useRef(a);\n};\n\nexports.useState = function (a) {\n return S().useState(a);\n};\n\nexports.version = \"17.0.2\";","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/dist/cjs.js??ref--4-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--4-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WaitLocalGuidance.vue?vue&type=style&index=0&id=e9a1e796&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"media/icon/icon_time-15c5e50b.svg\";","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nvar b = \"function\" === typeof Symbol && Symbol.for,\n c = b ? Symbol.for(\"react.element\") : 60103,\n d = b ? Symbol.for(\"react.portal\") : 60106,\n e = b ? Symbol.for(\"react.fragment\") : 60107,\n f = b ? Symbol.for(\"react.strict_mode\") : 60108,\n g = b ? Symbol.for(\"react.profiler\") : 60114,\n h = b ? Symbol.for(\"react.provider\") : 60109,\n k = b ? Symbol.for(\"react.context\") : 60110,\n l = b ? Symbol.for(\"react.async_mode\") : 60111,\n m = b ? Symbol.for(\"react.concurrent_mode\") : 60111,\n n = b ? Symbol.for(\"react.forward_ref\") : 60112,\n p = b ? Symbol.for(\"react.suspense\") : 60113,\n q = b ? Symbol.for(\"react.suspense_list\") : 60120,\n r = b ? Symbol.for(\"react.memo\") : 60115,\n t = b ? Symbol.for(\"react.lazy\") : 60116,\n v = b ? Symbol.for(\"react.block\") : 60121,\n w = b ? Symbol.for(\"react.fundamental\") : 60117,\n x = b ? Symbol.for(\"react.responder\") : 60118,\n y = b ? Symbol.for(\"react.scope\") : 60119;\n\nfunction z(a) {\n if (\"object\" === _typeof(a) && null !== a) {\n var u = a.$$typeof;\n\n switch (u) {\n case c:\n switch (a = a.type, a) {\n case l:\n case m:\n case e:\n case g:\n case f:\n case p:\n return a;\n\n default:\n switch (a = a && a.$$typeof, a) {\n case k:\n case n:\n case t:\n case r:\n case h:\n return a;\n\n default:\n return u;\n }\n\n }\n\n case d:\n return u;\n }\n }\n}\n\nfunction A(a) {\n return z(a) === m;\n}\n\nexports.AsyncMode = l;\nexports.ConcurrentMode = m;\nexports.ContextConsumer = k;\nexports.ContextProvider = h;\nexports.Element = c;\nexports.ForwardRef = n;\nexports.Fragment = e;\nexports.Lazy = t;\nexports.Memo = r;\nexports.Portal = d;\nexports.Profiler = g;\nexports.StrictMode = f;\nexports.Suspense = p;\n\nexports.isAsyncMode = function (a) {\n return A(a) || z(a) === l;\n};\n\nexports.isConcurrentMode = A;\n\nexports.isContextConsumer = function (a) {\n return z(a) === k;\n};\n\nexports.isContextProvider = function (a) {\n return z(a) === h;\n};\n\nexports.isElement = function (a) {\n return \"object\" === _typeof(a) && null !== a && a.$$typeof === c;\n};\n\nexports.isForwardRef = function (a) {\n return z(a) === n;\n};\n\nexports.isFragment = function (a) {\n return z(a) === e;\n};\n\nexports.isLazy = function (a) {\n return z(a) === t;\n};\n\nexports.isMemo = function (a) {\n return z(a) === r;\n};\n\nexports.isPortal = function (a) {\n return z(a) === d;\n};\n\nexports.isProfiler = function (a) {\n return z(a) === g;\n};\n\nexports.isStrictMode = function (a) {\n return z(a) === f;\n};\n\nexports.isSuspense = function (a) {\n return z(a) === p;\n};\n\nexports.isValidElementType = function (a) {\n return \"string\" === typeof a || \"function\" === typeof a || a === e || a === m || a === g || a === f || a === p || a === q || \"object\" === _typeof(a) && null !== a && (a.$$typeof === t || a.$$typeof === r || a.$$typeof === h || a.$$typeof === k || a.$$typeof === n || a.$$typeof === w || a.$$typeof === x || a.$$typeof === y || a.$$typeof === v);\n};\n\nexports.typeOf = z;","/** @license React v17.0.2\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nvar aa = require(\"react\"),\n m = require(\"object-assign\"),\n r = require(\"scheduler\");\n\nfunction y(a) {\n for (var b = \"https://reactjs.org/docs/error-decoder.html?invariant=\" + a, c = 1; c < arguments.length; c++) {\n b += \"&args[]=\" + encodeURIComponent(arguments[c]);\n }\n\n return \"Minified React error #\" + a + \"; visit \" + b + \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\";\n}\n\nif (!aa) throw Error(y(227));\nvar ba = new Set(),\n ca = {};\n\nfunction da(a, b) {\n ea(a, b);\n ea(a + \"Capture\", b);\n}\n\nfunction ea(a, b) {\n ca[a] = b;\n\n for (a = 0; a < b.length; a++) {\n ba.add(b[a]);\n }\n}\n\nvar fa = !(\"undefined\" === typeof window || \"undefined\" === typeof window.document || \"undefined\" === typeof window.document.createElement),\n ha = /^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,\n ia = Object.prototype.hasOwnProperty,\n ja = {},\n ka = {};\n\nfunction la(a) {\n if (ia.call(ka, a)) return !0;\n if (ia.call(ja, a)) return !1;\n if (ha.test(a)) return ka[a] = !0;\n ja[a] = !0;\n return !1;\n}\n\nfunction ma(a, b, c, d) {\n if (null !== c && 0 === c.type) return !1;\n\n switch (_typeof(b)) {\n case \"function\":\n case \"symbol\":\n return !0;\n\n case \"boolean\":\n if (d) return !1;\n if (null !== c) return !c.acceptsBooleans;\n a = a.toLowerCase().slice(0, 5);\n return \"data-\" !== a && \"aria-\" !== a;\n\n default:\n return !1;\n }\n}\n\nfunction na(a, b, c, d) {\n if (null === b || \"undefined\" === typeof b || ma(a, b, c, d)) return !0;\n if (d) return !1;\n if (null !== c) switch (c.type) {\n case 3:\n return !b;\n\n case 4:\n return !1 === b;\n\n case 5:\n return isNaN(b);\n\n case 6:\n return isNaN(b) || 1 > b;\n }\n return !1;\n}\n\nfunction B(a, b, c, d, e, f, g) {\n this.acceptsBooleans = 2 === b || 3 === b || 4 === b;\n this.attributeName = d;\n this.attributeNamespace = e;\n this.mustUseProperty = c;\n this.propertyName = a;\n this.type = b;\n this.sanitizeURL = f;\n this.removeEmptyString = g;\n}\n\nvar D = {};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function (a) {\n D[a] = new B(a, 0, !1, a, null, !1, !1);\n});\n[[\"acceptCharset\", \"accept-charset\"], [\"className\", \"class\"], [\"htmlFor\", \"for\"], [\"httpEquiv\", \"http-equiv\"]].forEach(function (a) {\n var b = a[0];\n D[b] = new B(b, 1, !1, a[1], null, !1, !1);\n});\n[\"contentEditable\", \"draggable\", \"spellCheck\", \"value\"].forEach(function (a) {\n D[a] = new B(a, 2, !1, a.toLowerCase(), null, !1, !1);\n});\n[\"autoReverse\", \"externalResourcesRequired\", \"focusable\", \"preserveAlpha\"].forEach(function (a) {\n D[a] = new B(a, 2, !1, a, null, !1, !1);\n});\n\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function (a) {\n D[a] = new B(a, 3, !1, a.toLowerCase(), null, !1, !1);\n});\n[\"checked\", \"multiple\", \"muted\", \"selected\"].forEach(function (a) {\n D[a] = new B(a, 3, !0, a, null, !1, !1);\n});\n[\"capture\", \"download\"].forEach(function (a) {\n D[a] = new B(a, 4, !1, a, null, !1, !1);\n});\n[\"cols\", \"rows\", \"size\", \"span\"].forEach(function (a) {\n D[a] = new B(a, 6, !1, a, null, !1, !1);\n});\n[\"rowSpan\", \"start\"].forEach(function (a) {\n D[a] = new B(a, 5, !1, a.toLowerCase(), null, !1, !1);\n});\nvar oa = /[\\-:]([a-z])/g;\n\nfunction pa(a) {\n return a[1].toUpperCase();\n}\n\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function (a) {\n var b = a.replace(oa, pa);\n D[b] = new B(b, 1, !1, a, null, !1, !1);\n});\n\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function (a) {\n var b = a.replace(oa, pa);\n D[b] = new B(b, 1, !1, a, \"http://www.w3.org/1999/xlink\", !1, !1);\n});\n[\"xml:base\", \"xml:lang\", \"xml:space\"].forEach(function (a) {\n var b = a.replace(oa, pa);\n D[b] = new B(b, 1, !1, a, \"http://www.w3.org/XML/1998/namespace\", !1, !1);\n});\n[\"tabIndex\", \"crossOrigin\"].forEach(function (a) {\n D[a] = new B(a, 1, !1, a.toLowerCase(), null, !1, !1);\n});\nD.xlinkHref = new B(\"xlinkHref\", 1, !1, \"xlink:href\", \"http://www.w3.org/1999/xlink\", !0, !1);\n[\"src\", \"href\", \"action\", \"formAction\"].forEach(function (a) {\n D[a] = new B(a, 1, !1, a.toLowerCase(), null, !0, !0);\n});\n\nfunction qa(a, b, c, d) {\n var e = D.hasOwnProperty(b) ? D[b] : null;\n var f = null !== e ? 0 === e.type : d ? !1 : !(2 < b.length) || \"o\" !== b[0] && \"O\" !== b[0] || \"n\" !== b[1] && \"N\" !== b[1] ? !1 : !0;\n f || (na(b, c, e, d) && (c = null), d || null === e ? la(b) && (null === c ? a.removeAttribute(b) : a.setAttribute(b, \"\" + c)) : e.mustUseProperty ? a[e.propertyName] = null === c ? 3 === e.type ? !1 : \"\" : c : (b = e.attributeName, d = e.attributeNamespace, null === c ? a.removeAttribute(b) : (e = e.type, c = 3 === e || 4 === e && !0 === c ? \"\" : \"\" + c, d ? a.setAttributeNS(d, b, c) : a.setAttribute(b, c))));\n}\n\nvar ra = aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n sa = 60103,\n ta = 60106,\n ua = 60107,\n wa = 60108,\n xa = 60114,\n ya = 60109,\n za = 60110,\n Aa = 60112,\n Ba = 60113,\n Ca = 60120,\n Da = 60115,\n Ea = 60116,\n Fa = 60121,\n Ga = 60128,\n Ha = 60129,\n Ia = 60130,\n Ja = 60131;\n\nif (\"function\" === typeof Symbol && Symbol.for) {\n var E = Symbol.for;\n sa = E(\"react.element\");\n ta = E(\"react.portal\");\n ua = E(\"react.fragment\");\n wa = E(\"react.strict_mode\");\n xa = E(\"react.profiler\");\n ya = E(\"react.provider\");\n za = E(\"react.context\");\n Aa = E(\"react.forward_ref\");\n Ba = E(\"react.suspense\");\n Ca = E(\"react.suspense_list\");\n Da = E(\"react.memo\");\n Ea = E(\"react.lazy\");\n Fa = E(\"react.block\");\n E(\"react.scope\");\n Ga = E(\"react.opaque.id\");\n Ha = E(\"react.debug_trace_mode\");\n Ia = E(\"react.offscreen\");\n Ja = E(\"react.legacy_hidden\");\n}\n\nvar Ka = \"function\" === typeof Symbol && Symbol.iterator;\n\nfunction La(a) {\n if (null === a || \"object\" !== _typeof(a)) return null;\n a = Ka && a[Ka] || a[\"@@iterator\"];\n return \"function\" === typeof a ? a : null;\n}\n\nvar Ma;\n\nfunction Na(a) {\n if (void 0 === Ma) try {\n throw Error();\n } catch (c) {\n var b = c.stack.trim().match(/\\n( *(at )?)/);\n Ma = b && b[1] || \"\";\n }\n return \"\\n\" + Ma + a;\n}\n\nvar Oa = !1;\n\nfunction Pa(a, b) {\n if (!a || Oa) return \"\";\n Oa = !0;\n var c = Error.prepareStackTrace;\n Error.prepareStackTrace = void 0;\n\n try {\n if (b) {\n if (b = function b() {\n throw Error();\n }, Object.defineProperty(b.prototype, \"props\", {\n set: function set() {\n throw Error();\n }\n }), \"object\" === (typeof Reflect === \"undefined\" ? \"undefined\" : _typeof(Reflect)) && Reflect.construct) {\n try {\n Reflect.construct(b, []);\n } catch (k) {\n var d = k;\n }\n\n Reflect.construct(a, [], b);\n } else {\n try {\n b.call();\n } catch (k) {\n d = k;\n }\n\n a.call(b.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (k) {\n d = k;\n }\n\n a();\n }\n } catch (k) {\n if (k && d && \"string\" === typeof k.stack) {\n for (var e = k.stack.split(\"\\n\"), f = d.stack.split(\"\\n\"), g = e.length - 1, h = f.length - 1; 1 <= g && 0 <= h && e[g] !== f[h];) {\n h--;\n }\n\n for (; 1 <= g && 0 <= h; g--, h--) {\n if (e[g] !== f[h]) {\n if (1 !== g || 1 !== h) {\n do {\n if (g--, h--, 0 > h || e[g] !== f[h]) return \"\\n\" + e[g].replace(\" at new \", \" at \");\n } while (1 <= g && 0 <= h);\n }\n\n break;\n }\n }\n }\n } finally {\n Oa = !1, Error.prepareStackTrace = c;\n }\n\n return (a = a ? a.displayName || a.name : \"\") ? Na(a) : \"\";\n}\n\nfunction Qa(a) {\n switch (a.tag) {\n case 5:\n return Na(a.type);\n\n case 16:\n return Na(\"Lazy\");\n\n case 13:\n return Na(\"Suspense\");\n\n case 19:\n return Na(\"SuspenseList\");\n\n case 0:\n case 2:\n case 15:\n return a = Pa(a.type, !1), a;\n\n case 11:\n return a = Pa(a.type.render, !1), a;\n\n case 22:\n return a = Pa(a.type._render, !1), a;\n\n case 1:\n return a = Pa(a.type, !0), a;\n\n default:\n return \"\";\n }\n}\n\nfunction Ra(a) {\n if (null == a) return null;\n if (\"function\" === typeof a) return a.displayName || a.name || null;\n if (\"string\" === typeof a) return a;\n\n switch (a) {\n case ua:\n return \"Fragment\";\n\n case ta:\n return \"Portal\";\n\n case xa:\n return \"Profiler\";\n\n case wa:\n return \"StrictMode\";\n\n case Ba:\n return \"Suspense\";\n\n case Ca:\n return \"SuspenseList\";\n }\n\n if (\"object\" === _typeof(a)) switch (a.$$typeof) {\n case za:\n return (a.displayName || \"Context\") + \".Consumer\";\n\n case ya:\n return (a._context.displayName || \"Context\") + \".Provider\";\n\n case Aa:\n var b = a.render;\n b = b.displayName || b.name || \"\";\n return a.displayName || (\"\" !== b ? \"ForwardRef(\" + b + \")\" : \"ForwardRef\");\n\n case Da:\n return Ra(a.type);\n\n case Fa:\n return Ra(a._render);\n\n case Ea:\n b = a._payload;\n a = a._init;\n\n try {\n return Ra(a(b));\n } catch (c) {}\n\n }\n return null;\n}\n\nfunction Sa(a) {\n switch (_typeof(a)) {\n case \"boolean\":\n case \"number\":\n case \"object\":\n case \"string\":\n case \"undefined\":\n return a;\n\n default:\n return \"\";\n }\n}\n\nfunction Ta(a) {\n var b = a.type;\n return (a = a.nodeName) && \"input\" === a.toLowerCase() && (\"checkbox\" === b || \"radio\" === b);\n}\n\nfunction Ua(a) {\n var b = Ta(a) ? \"checked\" : \"value\",\n c = Object.getOwnPropertyDescriptor(a.constructor.prototype, b),\n d = \"\" + a[b];\n\n if (!a.hasOwnProperty(b) && \"undefined\" !== typeof c && \"function\" === typeof c.get && \"function\" === typeof c.set) {\n var e = c.get,\n f = c.set;\n Object.defineProperty(a, b, {\n configurable: !0,\n get: function get() {\n return e.call(this);\n },\n set: function set(a) {\n d = \"\" + a;\n f.call(this, a);\n }\n });\n Object.defineProperty(a, b, {\n enumerable: c.enumerable\n });\n return {\n getValue: function getValue() {\n return d;\n },\n setValue: function setValue(a) {\n d = \"\" + a;\n },\n stopTracking: function stopTracking() {\n a._valueTracker = null;\n delete a[b];\n }\n };\n }\n}\n\nfunction Va(a) {\n a._valueTracker || (a._valueTracker = Ua(a));\n}\n\nfunction Wa(a) {\n if (!a) return !1;\n var b = a._valueTracker;\n if (!b) return !0;\n var c = b.getValue();\n var d = \"\";\n a && (d = Ta(a) ? a.checked ? \"true\" : \"false\" : a.value);\n a = d;\n return a !== c ? (b.setValue(a), !0) : !1;\n}\n\nfunction Xa(a) {\n a = a || (\"undefined\" !== typeof document ? document : void 0);\n if (\"undefined\" === typeof a) return null;\n\n try {\n return a.activeElement || a.body;\n } catch (b) {\n return a.body;\n }\n}\n\nfunction Ya(a, b) {\n var c = b.checked;\n return m({}, b, {\n defaultChecked: void 0,\n defaultValue: void 0,\n value: void 0,\n checked: null != c ? c : a._wrapperState.initialChecked\n });\n}\n\nfunction Za(a, b) {\n var c = null == b.defaultValue ? \"\" : b.defaultValue,\n d = null != b.checked ? b.checked : b.defaultChecked;\n c = Sa(null != b.value ? b.value : c);\n a._wrapperState = {\n initialChecked: d,\n initialValue: c,\n controlled: \"checkbox\" === b.type || \"radio\" === b.type ? null != b.checked : null != b.value\n };\n}\n\nfunction $a(a, b) {\n b = b.checked;\n null != b && qa(a, \"checked\", b, !1);\n}\n\nfunction ab(a, b) {\n $a(a, b);\n var c = Sa(b.value),\n d = b.type;\n if (null != c) {\n if (\"number\" === d) {\n if (0 === c && \"\" === a.value || a.value != c) a.value = \"\" + c;\n } else a.value !== \"\" + c && (a.value = \"\" + c);\n } else if (\"submit\" === d || \"reset\" === d) {\n a.removeAttribute(\"value\");\n return;\n }\n b.hasOwnProperty(\"value\") ? bb(a, b.type, c) : b.hasOwnProperty(\"defaultValue\") && bb(a, b.type, Sa(b.defaultValue));\n null == b.checked && null != b.defaultChecked && (a.defaultChecked = !!b.defaultChecked);\n}\n\nfunction cb(a, b, c) {\n if (b.hasOwnProperty(\"value\") || b.hasOwnProperty(\"defaultValue\")) {\n var d = b.type;\n if (!(\"submit\" !== d && \"reset\" !== d || void 0 !== b.value && null !== b.value)) return;\n b = \"\" + a._wrapperState.initialValue;\n c || b === a.value || (a.value = b);\n a.defaultValue = b;\n }\n\n c = a.name;\n \"\" !== c && (a.name = \"\");\n a.defaultChecked = !!a._wrapperState.initialChecked;\n \"\" !== c && (a.name = c);\n}\n\nfunction bb(a, b, c) {\n if (\"number\" !== b || Xa(a.ownerDocument) !== a) null == c ? a.defaultValue = \"\" + a._wrapperState.initialValue : a.defaultValue !== \"\" + c && (a.defaultValue = \"\" + c);\n}\n\nfunction db(a) {\n var b = \"\";\n aa.Children.forEach(a, function (a) {\n null != a && (b += a);\n });\n return b;\n}\n\nfunction eb(a, b) {\n a = m({\n children: void 0\n }, b);\n if (b = db(b.children)) a.children = b;\n return a;\n}\n\nfunction fb(a, b, c, d) {\n a = a.options;\n\n if (b) {\n b = {};\n\n for (var e = 0; e < c.length; e++) {\n b[\"$\" + c[e]] = !0;\n }\n\n for (c = 0; c < a.length; c++) {\n e = b.hasOwnProperty(\"$\" + a[c].value), a[c].selected !== e && (a[c].selected = e), e && d && (a[c].defaultSelected = !0);\n }\n } else {\n c = \"\" + Sa(c);\n b = null;\n\n for (e = 0; e < a.length; e++) {\n if (a[e].value === c) {\n a[e].selected = !0;\n d && (a[e].defaultSelected = !0);\n return;\n }\n\n null !== b || a[e].disabled || (b = a[e]);\n }\n\n null !== b && (b.selected = !0);\n }\n}\n\nfunction gb(a, b) {\n if (null != b.dangerouslySetInnerHTML) throw Error(y(91));\n return m({}, b, {\n value: void 0,\n defaultValue: void 0,\n children: \"\" + a._wrapperState.initialValue\n });\n}\n\nfunction hb(a, b) {\n var c = b.value;\n\n if (null == c) {\n c = b.children;\n b = b.defaultValue;\n\n if (null != c) {\n if (null != b) throw Error(y(92));\n\n if (Array.isArray(c)) {\n if (!(1 >= c.length)) throw Error(y(93));\n c = c[0];\n }\n\n b = c;\n }\n\n null == b && (b = \"\");\n c = b;\n }\n\n a._wrapperState = {\n initialValue: Sa(c)\n };\n}\n\nfunction ib(a, b) {\n var c = Sa(b.value),\n d = Sa(b.defaultValue);\n null != c && (c = \"\" + c, c !== a.value && (a.value = c), null == b.defaultValue && a.defaultValue !== c && (a.defaultValue = c));\n null != d && (a.defaultValue = \"\" + d);\n}\n\nfunction jb(a) {\n var b = a.textContent;\n b === a._wrapperState.initialValue && \"\" !== b && null !== b && (a.value = b);\n}\n\nvar kb = {\n html: \"http://www.w3.org/1999/xhtml\",\n mathml: \"http://www.w3.org/1998/Math/MathML\",\n svg: \"http://www.w3.org/2000/svg\"\n};\n\nfunction lb(a) {\n switch (a) {\n case \"svg\":\n return \"http://www.w3.org/2000/svg\";\n\n case \"math\":\n return \"http://www.w3.org/1998/Math/MathML\";\n\n default:\n return \"http://www.w3.org/1999/xhtml\";\n }\n}\n\nfunction mb(a, b) {\n return null == a || \"http://www.w3.org/1999/xhtml\" === a ? lb(b) : \"http://www.w3.org/2000/svg\" === a && \"foreignObject\" === b ? \"http://www.w3.org/1999/xhtml\" : a;\n}\n\nvar nb,\n ob = function (a) {\n return \"undefined\" !== typeof MSApp && MSApp.execUnsafeLocalFunction ? function (b, c, d, e) {\n MSApp.execUnsafeLocalFunction(function () {\n return a(b, c, d, e);\n });\n } : a;\n}(function (a, b) {\n if (a.namespaceURI !== kb.svg || \"innerHTML\" in a) a.innerHTML = b;else {\n nb = nb || document.createElement(\"div\");\n nb.innerHTML = \"\" + b.valueOf().toString() + \" \";\n\n for (b = nb.firstChild; a.firstChild;) {\n a.removeChild(a.firstChild);\n }\n\n for (; b.firstChild;) {\n a.appendChild(b.firstChild);\n }\n }\n});\n\nfunction pb(a, b) {\n if (b) {\n var c = a.firstChild;\n\n if (c && c === a.lastChild && 3 === c.nodeType) {\n c.nodeValue = b;\n return;\n }\n }\n\n a.textContent = b;\n}\n\nvar qb = {\n animationIterationCount: !0,\n borderImageOutset: !0,\n borderImageSlice: !0,\n borderImageWidth: !0,\n boxFlex: !0,\n boxFlexGroup: !0,\n boxOrdinalGroup: !0,\n columnCount: !0,\n columns: !0,\n flex: !0,\n flexGrow: !0,\n flexPositive: !0,\n flexShrink: !0,\n flexNegative: !0,\n flexOrder: !0,\n gridArea: !0,\n gridRow: !0,\n gridRowEnd: !0,\n gridRowSpan: !0,\n gridRowStart: !0,\n gridColumn: !0,\n gridColumnEnd: !0,\n gridColumnSpan: !0,\n gridColumnStart: !0,\n fontWeight: !0,\n lineClamp: !0,\n lineHeight: !0,\n opacity: !0,\n order: !0,\n orphans: !0,\n tabSize: !0,\n widows: !0,\n zIndex: !0,\n zoom: !0,\n fillOpacity: !0,\n floodOpacity: !0,\n stopOpacity: !0,\n strokeDasharray: !0,\n strokeDashoffset: !0,\n strokeMiterlimit: !0,\n strokeOpacity: !0,\n strokeWidth: !0\n},\n rb = [\"Webkit\", \"ms\", \"Moz\", \"O\"];\nObject.keys(qb).forEach(function (a) {\n rb.forEach(function (b) {\n b = b + a.charAt(0).toUpperCase() + a.substring(1);\n qb[b] = qb[a];\n });\n});\n\nfunction sb(a, b, c) {\n return null == b || \"boolean\" === typeof b || \"\" === b ? \"\" : c || \"number\" !== typeof b || 0 === b || qb.hasOwnProperty(a) && qb[a] ? (\"\" + b).trim() : b + \"px\";\n}\n\nfunction tb(a, b) {\n a = a.style;\n\n for (var c in b) {\n if (b.hasOwnProperty(c)) {\n var d = 0 === c.indexOf(\"--\"),\n e = sb(c, b[c], d);\n \"float\" === c && (c = \"cssFloat\");\n d ? a.setProperty(c, e) : a[c] = e;\n }\n }\n}\n\nvar ub = m({\n menuitem: !0\n}, {\n area: !0,\n base: !0,\n br: !0,\n col: !0,\n embed: !0,\n hr: !0,\n img: !0,\n input: !0,\n keygen: !0,\n link: !0,\n meta: !0,\n param: !0,\n source: !0,\n track: !0,\n wbr: !0\n});\n\nfunction vb(a, b) {\n if (b) {\n if (ub[a] && (null != b.children || null != b.dangerouslySetInnerHTML)) throw Error(y(137, a));\n\n if (null != b.dangerouslySetInnerHTML) {\n if (null != b.children) throw Error(y(60));\n if (!(\"object\" === _typeof(b.dangerouslySetInnerHTML) && \"__html\" in b.dangerouslySetInnerHTML)) throw Error(y(61));\n }\n\n if (null != b.style && \"object\" !== _typeof(b.style)) throw Error(y(62));\n }\n}\n\nfunction wb(a, b) {\n if (-1 === a.indexOf(\"-\")) return \"string\" === typeof b.is;\n\n switch (a) {\n case \"annotation-xml\":\n case \"color-profile\":\n case \"font-face\":\n case \"font-face-src\":\n case \"font-face-uri\":\n case \"font-face-format\":\n case \"font-face-name\":\n case \"missing-glyph\":\n return !1;\n\n default:\n return !0;\n }\n}\n\nfunction xb(a) {\n a = a.target || a.srcElement || window;\n a.correspondingUseElement && (a = a.correspondingUseElement);\n return 3 === a.nodeType ? a.parentNode : a;\n}\n\nvar yb = null,\n zb = null,\n Ab = null;\n\nfunction Bb(a) {\n if (a = Cb(a)) {\n if (\"function\" !== typeof yb) throw Error(y(280));\n var b = a.stateNode;\n b && (b = Db(b), yb(a.stateNode, a.type, b));\n }\n}\n\nfunction Eb(a) {\n zb ? Ab ? Ab.push(a) : Ab = [a] : zb = a;\n}\n\nfunction Fb() {\n if (zb) {\n var a = zb,\n b = Ab;\n Ab = zb = null;\n Bb(a);\n if (b) for (a = 0; a < b.length; a++) {\n Bb(b[a]);\n }\n }\n}\n\nfunction Gb(a, b) {\n return a(b);\n}\n\nfunction Hb(a, b, c, d, e) {\n return a(b, c, d, e);\n}\n\nfunction Ib() {}\n\nvar Jb = Gb,\n Kb = !1,\n Lb = !1;\n\nfunction Mb() {\n if (null !== zb || null !== Ab) Ib(), Fb();\n}\n\nfunction Nb(a, b, c) {\n if (Lb) return a(b, c);\n Lb = !0;\n\n try {\n return Jb(a, b, c);\n } finally {\n Lb = !1, Mb();\n }\n}\n\nfunction Ob(a, b) {\n var c = a.stateNode;\n if (null === c) return null;\n var d = Db(c);\n if (null === d) return null;\n c = d[b];\n\n a: switch (b) {\n case \"onClick\":\n case \"onClickCapture\":\n case \"onDoubleClick\":\n case \"onDoubleClickCapture\":\n case \"onMouseDown\":\n case \"onMouseDownCapture\":\n case \"onMouseMove\":\n case \"onMouseMoveCapture\":\n case \"onMouseUp\":\n case \"onMouseUpCapture\":\n case \"onMouseEnter\":\n (d = !d.disabled) || (a = a.type, d = !(\"button\" === a || \"input\" === a || \"select\" === a || \"textarea\" === a));\n a = !d;\n break a;\n\n default:\n a = !1;\n }\n\n if (a) return null;\n if (c && \"function\" !== typeof c) throw Error(y(231, b, _typeof(c)));\n return c;\n}\n\nvar Pb = !1;\nif (fa) try {\n var Qb = {};\n Object.defineProperty(Qb, \"passive\", {\n get: function get() {\n Pb = !0;\n }\n });\n window.addEventListener(\"test\", Qb, Qb);\n window.removeEventListener(\"test\", Qb, Qb);\n} catch (a) {\n Pb = !1;\n}\n\nfunction Rb(a, b, c, d, e, f, g, h, k) {\n var l = Array.prototype.slice.call(arguments, 3);\n\n try {\n b.apply(c, l);\n } catch (n) {\n this.onError(n);\n }\n}\n\nvar Sb = !1,\n Tb = null,\n Ub = !1,\n Vb = null,\n Wb = {\n onError: function onError(a) {\n Sb = !0;\n Tb = a;\n }\n};\n\nfunction Xb(a, b, c, d, e, f, g, h, k) {\n Sb = !1;\n Tb = null;\n Rb.apply(Wb, arguments);\n}\n\nfunction Yb(a, b, c, d, e, f, g, h, k) {\n Xb.apply(this, arguments);\n\n if (Sb) {\n if (Sb) {\n var l = Tb;\n Sb = !1;\n Tb = null;\n } else throw Error(y(198));\n\n Ub || (Ub = !0, Vb = l);\n }\n}\n\nfunction Zb(a) {\n var b = a,\n c = a;\n if (a.alternate) for (; b.return;) {\n b = b.return;\n } else {\n a = b;\n\n do {\n b = a, 0 !== (b.flags & 1026) && (c = b.return), a = b.return;\n } while (a);\n }\n return 3 === b.tag ? c : null;\n}\n\nfunction $b(a) {\n if (13 === a.tag) {\n var b = a.memoizedState;\n null === b && (a = a.alternate, null !== a && (b = a.memoizedState));\n if (null !== b) return b.dehydrated;\n }\n\n return null;\n}\n\nfunction ac(a) {\n if (Zb(a) !== a) throw Error(y(188));\n}\n\nfunction bc(a) {\n var b = a.alternate;\n\n if (!b) {\n b = Zb(a);\n if (null === b) throw Error(y(188));\n return b !== a ? null : a;\n }\n\n for (var c = a, d = b;;) {\n var e = c.return;\n if (null === e) break;\n var f = e.alternate;\n\n if (null === f) {\n d = e.return;\n\n if (null !== d) {\n c = d;\n continue;\n }\n\n break;\n }\n\n if (e.child === f.child) {\n for (f = e.child; f;) {\n if (f === c) return ac(e), a;\n if (f === d) return ac(e), b;\n f = f.sibling;\n }\n\n throw Error(y(188));\n }\n\n if (c.return !== d.return) c = e, d = f;else {\n for (var g = !1, h = e.child; h;) {\n if (h === c) {\n g = !0;\n c = e;\n d = f;\n break;\n }\n\n if (h === d) {\n g = !0;\n d = e;\n c = f;\n break;\n }\n\n h = h.sibling;\n }\n\n if (!g) {\n for (h = f.child; h;) {\n if (h === c) {\n g = !0;\n c = f;\n d = e;\n break;\n }\n\n if (h === d) {\n g = !0;\n d = f;\n c = e;\n break;\n }\n\n h = h.sibling;\n }\n\n if (!g) throw Error(y(189));\n }\n }\n if (c.alternate !== d) throw Error(y(190));\n }\n\n if (3 !== c.tag) throw Error(y(188));\n return c.stateNode.current === c ? a : b;\n}\n\nfunction cc(a) {\n a = bc(a);\n if (!a) return null;\n\n for (var b = a;;) {\n if (5 === b.tag || 6 === b.tag) return b;\n if (b.child) b.child.return = b, b = b.child;else {\n if (b === a) break;\n\n for (; !b.sibling;) {\n if (!b.return || b.return === a) return null;\n b = b.return;\n }\n\n b.sibling.return = b.return;\n b = b.sibling;\n }\n }\n\n return null;\n}\n\nfunction dc(a, b) {\n for (var c = a.alternate; null !== b;) {\n if (b === a || b === c) return !0;\n b = b.return;\n }\n\n return !1;\n}\n\nvar ec,\n fc,\n gc,\n hc,\n ic = !1,\n jc = [],\n kc = null,\n lc = null,\n mc = null,\n nc = new Map(),\n oc = new Map(),\n pc = [],\n qc = \"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\n\nfunction rc(a, b, c, d, e) {\n return {\n blockedOn: a,\n domEventName: b,\n eventSystemFlags: c | 16,\n nativeEvent: e,\n targetContainers: [d]\n };\n}\n\nfunction sc(a, b) {\n switch (a) {\n case \"focusin\":\n case \"focusout\":\n kc = null;\n break;\n\n case \"dragenter\":\n case \"dragleave\":\n lc = null;\n break;\n\n case \"mouseover\":\n case \"mouseout\":\n mc = null;\n break;\n\n case \"pointerover\":\n case \"pointerout\":\n nc.delete(b.pointerId);\n break;\n\n case \"gotpointercapture\":\n case \"lostpointercapture\":\n oc.delete(b.pointerId);\n }\n}\n\nfunction tc(a, b, c, d, e, f) {\n if (null === a || a.nativeEvent !== f) return a = rc(b, c, d, e, f), null !== b && (b = Cb(b), null !== b && fc(b)), a;\n a.eventSystemFlags |= d;\n b = a.targetContainers;\n null !== e && -1 === b.indexOf(e) && b.push(e);\n return a;\n}\n\nfunction uc(a, b, c, d, e) {\n switch (b) {\n case \"focusin\":\n return kc = tc(kc, a, b, c, d, e), !0;\n\n case \"dragenter\":\n return lc = tc(lc, a, b, c, d, e), !0;\n\n case \"mouseover\":\n return mc = tc(mc, a, b, c, d, e), !0;\n\n case \"pointerover\":\n var f = e.pointerId;\n nc.set(f, tc(nc.get(f) || null, a, b, c, d, e));\n return !0;\n\n case \"gotpointercapture\":\n return f = e.pointerId, oc.set(f, tc(oc.get(f) || null, a, b, c, d, e)), !0;\n }\n\n return !1;\n}\n\nfunction vc(a) {\n var b = wc(a.target);\n\n if (null !== b) {\n var c = Zb(b);\n if (null !== c) if (b = c.tag, 13 === b) {\n if (b = $b(c), null !== b) {\n a.blockedOn = b;\n hc(a.lanePriority, function () {\n r.unstable_runWithPriority(a.priority, function () {\n gc(c);\n });\n });\n return;\n }\n } else if (3 === b && c.stateNode.hydrate) {\n a.blockedOn = 3 === c.tag ? c.stateNode.containerInfo : null;\n return;\n }\n }\n\n a.blockedOn = null;\n}\n\nfunction xc(a) {\n if (null !== a.blockedOn) return !1;\n\n for (var b = a.targetContainers; 0 < b.length;) {\n var c = yc(a.domEventName, a.eventSystemFlags, b[0], a.nativeEvent);\n if (null !== c) return b = Cb(c), null !== b && fc(b), a.blockedOn = c, !1;\n b.shift();\n }\n\n return !0;\n}\n\nfunction zc(a, b, c) {\n xc(a) && c.delete(b);\n}\n\nfunction Ac() {\n for (ic = !1; 0 < jc.length;) {\n var a = jc[0];\n\n if (null !== a.blockedOn) {\n a = Cb(a.blockedOn);\n null !== a && ec(a);\n break;\n }\n\n for (var b = a.targetContainers; 0 < b.length;) {\n var c = yc(a.domEventName, a.eventSystemFlags, b[0], a.nativeEvent);\n\n if (null !== c) {\n a.blockedOn = c;\n break;\n }\n\n b.shift();\n }\n\n null === a.blockedOn && jc.shift();\n }\n\n null !== kc && xc(kc) && (kc = null);\n null !== lc && xc(lc) && (lc = null);\n null !== mc && xc(mc) && (mc = null);\n nc.forEach(zc);\n oc.forEach(zc);\n}\n\nfunction Bc(a, b) {\n a.blockedOn === b && (a.blockedOn = null, ic || (ic = !0, r.unstable_scheduleCallback(r.unstable_NormalPriority, Ac)));\n}\n\nfunction Cc(a) {\n function b(b) {\n return Bc(b, a);\n }\n\n if (0 < jc.length) {\n Bc(jc[0], a);\n\n for (var c = 1; c < jc.length; c++) {\n var d = jc[c];\n d.blockedOn === a && (d.blockedOn = null);\n }\n }\n\n null !== kc && Bc(kc, a);\n null !== lc && Bc(lc, a);\n null !== mc && Bc(mc, a);\n nc.forEach(b);\n oc.forEach(b);\n\n for (c = 0; c < pc.length; c++) {\n d = pc[c], d.blockedOn === a && (d.blockedOn = null);\n }\n\n for (; 0 < pc.length && (c = pc[0], null === c.blockedOn);) {\n vc(c), null === c.blockedOn && pc.shift();\n }\n}\n\nfunction Dc(a, b) {\n var c = {};\n c[a.toLowerCase()] = b.toLowerCase();\n c[\"Webkit\" + a] = \"webkit\" + b;\n c[\"Moz\" + a] = \"moz\" + b;\n return c;\n}\n\nvar Ec = {\n animationend: Dc(\"Animation\", \"AnimationEnd\"),\n animationiteration: Dc(\"Animation\", \"AnimationIteration\"),\n animationstart: Dc(\"Animation\", \"AnimationStart\"),\n transitionend: Dc(\"Transition\", \"TransitionEnd\")\n},\n Fc = {},\n Gc = {};\nfa && (Gc = document.createElement(\"div\").style, \"AnimationEvent\" in window || (delete Ec.animationend.animation, delete Ec.animationiteration.animation, delete Ec.animationstart.animation), \"TransitionEvent\" in window || delete Ec.transitionend.transition);\n\nfunction Hc(a) {\n if (Fc[a]) return Fc[a];\n if (!Ec[a]) return a;\n var b = Ec[a],\n c;\n\n for (c in b) {\n if (b.hasOwnProperty(c) && c in Gc) return Fc[a] = b[c];\n }\n\n return a;\n}\n\nvar Ic = Hc(\"animationend\"),\n Jc = Hc(\"animationiteration\"),\n Kc = Hc(\"animationstart\"),\n Lc = Hc(\"transitionend\"),\n Mc = new Map(),\n Nc = new Map(),\n Oc = [\"abort\", \"abort\", Ic, \"animationEnd\", Jc, \"animationIteration\", Kc, \"animationStart\", \"canplay\", \"canPlay\", \"canplaythrough\", \"canPlayThrough\", \"durationchange\", \"durationChange\", \"emptied\", \"emptied\", \"encrypted\", \"encrypted\", \"ended\", \"ended\", \"error\", \"error\", \"gotpointercapture\", \"gotPointerCapture\", \"load\", \"load\", \"loadeddata\", \"loadedData\", \"loadedmetadata\", \"loadedMetadata\", \"loadstart\", \"loadStart\", \"lostpointercapture\", \"lostPointerCapture\", \"playing\", \"playing\", \"progress\", \"progress\", \"seeking\", \"seeking\", \"stalled\", \"stalled\", \"suspend\", \"suspend\", \"timeupdate\", \"timeUpdate\", Lc, \"transitionEnd\", \"waiting\", \"waiting\"];\n\nfunction Pc(a, b) {\n for (var c = 0; c < a.length; c += 2) {\n var d = a[c],\n e = a[c + 1];\n e = \"on\" + (e[0].toUpperCase() + e.slice(1));\n Nc.set(d, b);\n Mc.set(d, e);\n da(e, [d]);\n }\n}\n\nvar Qc = r.unstable_now;\nQc();\nvar F = 8;\n\nfunction Rc(a) {\n if (0 !== (1 & a)) return F = 15, 1;\n if (0 !== (2 & a)) return F = 14, 2;\n if (0 !== (4 & a)) return F = 13, 4;\n var b = 24 & a;\n if (0 !== b) return F = 12, b;\n if (0 !== (a & 32)) return F = 11, 32;\n b = 192 & a;\n if (0 !== b) return F = 10, b;\n if (0 !== (a & 256)) return F = 9, 256;\n b = 3584 & a;\n if (0 !== b) return F = 8, b;\n if (0 !== (a & 4096)) return F = 7, 4096;\n b = 4186112 & a;\n if (0 !== b) return F = 6, b;\n b = 62914560 & a;\n if (0 !== b) return F = 5, b;\n if (a & 67108864) return F = 4, 67108864;\n if (0 !== (a & 134217728)) return F = 3, 134217728;\n b = 805306368 & a;\n if (0 !== b) return F = 2, b;\n if (0 !== (1073741824 & a)) return F = 1, 1073741824;\n F = 8;\n return a;\n}\n\nfunction Sc(a) {\n switch (a) {\n case 99:\n return 15;\n\n case 98:\n return 10;\n\n case 97:\n case 96:\n return 8;\n\n case 95:\n return 2;\n\n default:\n return 0;\n }\n}\n\nfunction Tc(a) {\n switch (a) {\n case 15:\n case 14:\n return 99;\n\n case 13:\n case 12:\n case 11:\n case 10:\n return 98;\n\n case 9:\n case 8:\n case 7:\n case 6:\n case 4:\n case 5:\n return 97;\n\n case 3:\n case 2:\n case 1:\n return 95;\n\n case 0:\n return 90;\n\n default:\n throw Error(y(358, a));\n }\n}\n\nfunction Uc(a, b) {\n var c = a.pendingLanes;\n if (0 === c) return F = 0;\n var d = 0,\n e = 0,\n f = a.expiredLanes,\n g = a.suspendedLanes,\n h = a.pingedLanes;\n if (0 !== f) d = f, e = F = 15;else if (f = c & 134217727, 0 !== f) {\n var k = f & ~g;\n 0 !== k ? (d = Rc(k), e = F) : (h &= f, 0 !== h && (d = Rc(h), e = F));\n } else f = c & ~g, 0 !== f ? (d = Rc(f), e = F) : 0 !== h && (d = Rc(h), e = F);\n if (0 === d) return 0;\n d = 31 - Vc(d);\n d = c & ((0 > d ? 0 : 1 << d) << 1) - 1;\n\n if (0 !== b && b !== d && 0 === (b & g)) {\n Rc(b);\n if (e <= F) return b;\n F = e;\n }\n\n b = a.entangledLanes;\n if (0 !== b) for (a = a.entanglements, b &= d; 0 < b;) {\n c = 31 - Vc(b), e = 1 << c, d |= a[c], b &= ~e;\n }\n return d;\n}\n\nfunction Wc(a) {\n a = a.pendingLanes & -1073741825;\n return 0 !== a ? a : a & 1073741824 ? 1073741824 : 0;\n}\n\nfunction Xc(a, b) {\n switch (a) {\n case 15:\n return 1;\n\n case 14:\n return 2;\n\n case 12:\n return a = Yc(24 & ~b), 0 === a ? Xc(10, b) : a;\n\n case 10:\n return a = Yc(192 & ~b), 0 === a ? Xc(8, b) : a;\n\n case 8:\n return a = Yc(3584 & ~b), 0 === a && (a = Yc(4186112 & ~b), 0 === a && (a = 512)), a;\n\n case 2:\n return b = Yc(805306368 & ~b), 0 === b && (b = 268435456), b;\n }\n\n throw Error(y(358, a));\n}\n\nfunction Yc(a) {\n return a & -a;\n}\n\nfunction Zc(a) {\n for (var b = [], c = 0; 31 > c; c++) {\n b.push(a);\n }\n\n return b;\n}\n\nfunction $c(a, b, c) {\n a.pendingLanes |= b;\n var d = b - 1;\n a.suspendedLanes &= d;\n a.pingedLanes &= d;\n a = a.eventTimes;\n b = 31 - Vc(b);\n a[b] = c;\n}\n\nvar Vc = Math.clz32 ? Math.clz32 : ad,\n bd = Math.log,\n cd = Math.LN2;\n\nfunction ad(a) {\n return 0 === a ? 32 : 31 - (bd(a) / cd | 0) | 0;\n}\n\nvar dd = r.unstable_UserBlockingPriority,\n ed = r.unstable_runWithPriority,\n fd = !0;\n\nfunction gd(a, b, c, d) {\n Kb || Ib();\n var e = hd,\n f = Kb;\n Kb = !0;\n\n try {\n Hb(e, a, b, c, d);\n } finally {\n (Kb = f) || Mb();\n }\n}\n\nfunction id(a, b, c, d) {\n ed(dd, hd.bind(null, a, b, c, d));\n}\n\nfunction hd(a, b, c, d) {\n if (fd) {\n var e;\n if ((e = 0 === (b & 4)) && 0 < jc.length && -1 < qc.indexOf(a)) a = rc(null, a, b, c, d), jc.push(a);else {\n var f = yc(a, b, c, d);\n if (null === f) e && sc(a, d);else {\n if (e) {\n if (-1 < qc.indexOf(a)) {\n a = rc(f, a, b, c, d);\n jc.push(a);\n return;\n }\n\n if (uc(f, a, b, c, d)) return;\n sc(a, d);\n }\n\n jd(a, b, d, null, c);\n }\n }\n }\n}\n\nfunction yc(a, b, c, d) {\n var e = xb(d);\n e = wc(e);\n\n if (null !== e) {\n var f = Zb(e);\n if (null === f) e = null;else {\n var g = f.tag;\n\n if (13 === g) {\n e = $b(f);\n if (null !== e) return e;\n e = null;\n } else if (3 === g) {\n if (f.stateNode.hydrate) return 3 === f.tag ? f.stateNode.containerInfo : null;\n e = null;\n } else f !== e && (e = null);\n }\n }\n\n jd(a, b, d, e, c);\n return null;\n}\n\nvar kd = null,\n ld = null,\n md = null;\n\nfunction nd() {\n if (md) return md;\n var a,\n b = ld,\n c = b.length,\n d,\n e = \"value\" in kd ? kd.value : kd.textContent,\n f = e.length;\n\n for (a = 0; a < c && b[a] === e[a]; a++) {\n ;\n }\n\n var g = c - a;\n\n for (d = 1; d <= g && b[c - d] === e[f - d]; d++) {\n ;\n }\n\n return md = e.slice(a, 1 < d ? 1 - d : void 0);\n}\n\nfunction od(a) {\n var b = a.keyCode;\n \"charCode\" in a ? (a = a.charCode, 0 === a && 13 === b && (a = 13)) : a = b;\n 10 === a && (a = 13);\n return 32 <= a || 13 === a ? a : 0;\n}\n\nfunction pd() {\n return !0;\n}\n\nfunction qd() {\n return !1;\n}\n\nfunction rd(a) {\n function b(b, d, e, f, g) {\n this._reactName = b;\n this._targetInst = e;\n this.type = d;\n this.nativeEvent = f;\n this.target = g;\n this.currentTarget = null;\n\n for (var c in a) {\n a.hasOwnProperty(c) && (b = a[c], this[c] = b ? b(f) : f[c]);\n }\n\n this.isDefaultPrevented = (null != f.defaultPrevented ? f.defaultPrevented : !1 === f.returnValue) ? pd : qd;\n this.isPropagationStopped = qd;\n return this;\n }\n\n m(b.prototype, {\n preventDefault: function preventDefault() {\n this.defaultPrevented = !0;\n var a = this.nativeEvent;\n a && (a.preventDefault ? a.preventDefault() : \"unknown\" !== typeof a.returnValue && (a.returnValue = !1), this.isDefaultPrevented = pd);\n },\n stopPropagation: function stopPropagation() {\n var a = this.nativeEvent;\n a && (a.stopPropagation ? a.stopPropagation() : \"unknown\" !== typeof a.cancelBubble && (a.cancelBubble = !0), this.isPropagationStopped = pd);\n },\n persist: function persist() {},\n isPersistent: pd\n });\n return b;\n}\n\nvar sd = {\n eventPhase: 0,\n bubbles: 0,\n cancelable: 0,\n timeStamp: function timeStamp(a) {\n return a.timeStamp || Date.now();\n },\n defaultPrevented: 0,\n isTrusted: 0\n},\n td = rd(sd),\n ud = m({}, sd, {\n view: 0,\n detail: 0\n}),\n vd = rd(ud),\n wd,\n xd,\n yd,\n Ad = m({}, ud, {\n screenX: 0,\n screenY: 0,\n clientX: 0,\n clientY: 0,\n pageX: 0,\n pageY: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n getModifierState: zd,\n button: 0,\n buttons: 0,\n relatedTarget: function relatedTarget(a) {\n return void 0 === a.relatedTarget ? a.fromElement === a.srcElement ? a.toElement : a.fromElement : a.relatedTarget;\n },\n movementX: function movementX(a) {\n if (\"movementX\" in a) return a.movementX;\n a !== yd && (yd && \"mousemove\" === a.type ? (wd = a.screenX - yd.screenX, xd = a.screenY - yd.screenY) : xd = wd = 0, yd = a);\n return wd;\n },\n movementY: function movementY(a) {\n return \"movementY\" in a ? a.movementY : xd;\n }\n}),\n Bd = rd(Ad),\n Cd = m({}, Ad, {\n dataTransfer: 0\n}),\n Dd = rd(Cd),\n Ed = m({}, ud, {\n relatedTarget: 0\n}),\n Fd = rd(Ed),\n Gd = m({}, sd, {\n animationName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n}),\n Hd = rd(Gd),\n Id = m({}, sd, {\n clipboardData: function clipboardData(a) {\n return \"clipboardData\" in a ? a.clipboardData : window.clipboardData;\n }\n}),\n Jd = rd(Id),\n Kd = m({}, sd, {\n data: 0\n}),\n Ld = rd(Kd),\n Md = {\n Esc: \"Escape\",\n Spacebar: \" \",\n Left: \"ArrowLeft\",\n Up: \"ArrowUp\",\n Right: \"ArrowRight\",\n Down: \"ArrowDown\",\n Del: \"Delete\",\n Win: \"OS\",\n Menu: \"ContextMenu\",\n Apps: \"ContextMenu\",\n Scroll: \"ScrollLock\",\n MozPrintableKey: \"Unidentified\"\n},\n Nd = {\n 8: \"Backspace\",\n 9: \"Tab\",\n 12: \"Clear\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Control\",\n 18: \"Alt\",\n 19: \"Pause\",\n 20: \"CapsLock\",\n 27: \"Escape\",\n 32: \" \",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"ArrowLeft\",\n 38: \"ArrowUp\",\n 39: \"ArrowRight\",\n 40: \"ArrowDown\",\n 45: \"Insert\",\n 46: \"Delete\",\n 112: \"F1\",\n 113: \"F2\",\n 114: \"F3\",\n 115: \"F4\",\n 116: \"F5\",\n 117: \"F6\",\n 118: \"F7\",\n 119: \"F8\",\n 120: \"F9\",\n 121: \"F10\",\n 122: \"F11\",\n 123: \"F12\",\n 144: \"NumLock\",\n 145: \"ScrollLock\",\n 224: \"Meta\"\n},\n Od = {\n Alt: \"altKey\",\n Control: \"ctrlKey\",\n Meta: \"metaKey\",\n Shift: \"shiftKey\"\n};\n\nfunction Pd(a) {\n var b = this.nativeEvent;\n return b.getModifierState ? b.getModifierState(a) : (a = Od[a]) ? !!b[a] : !1;\n}\n\nfunction zd() {\n return Pd;\n}\n\nvar Qd = m({}, ud, {\n key: function key(a) {\n if (a.key) {\n var b = Md[a.key] || a.key;\n if (\"Unidentified\" !== b) return b;\n }\n\n return \"keypress\" === a.type ? (a = od(a), 13 === a ? \"Enter\" : String.fromCharCode(a)) : \"keydown\" === a.type || \"keyup\" === a.type ? Nd[a.keyCode] || \"Unidentified\" : \"\";\n },\n code: 0,\n location: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n repeat: 0,\n locale: 0,\n getModifierState: zd,\n charCode: function charCode(a) {\n return \"keypress\" === a.type ? od(a) : 0;\n },\n keyCode: function keyCode(a) {\n return \"keydown\" === a.type || \"keyup\" === a.type ? a.keyCode : 0;\n },\n which: function which(a) {\n return \"keypress\" === a.type ? od(a) : \"keydown\" === a.type || \"keyup\" === a.type ? a.keyCode : 0;\n }\n}),\n Rd = rd(Qd),\n Sd = m({}, Ad, {\n pointerId: 0,\n width: 0,\n height: 0,\n pressure: 0,\n tangentialPressure: 0,\n tiltX: 0,\n tiltY: 0,\n twist: 0,\n pointerType: 0,\n isPrimary: 0\n}),\n Td = rd(Sd),\n Ud = m({}, ud, {\n touches: 0,\n targetTouches: 0,\n changedTouches: 0,\n altKey: 0,\n metaKey: 0,\n ctrlKey: 0,\n shiftKey: 0,\n getModifierState: zd\n}),\n Vd = rd(Ud),\n Wd = m({}, sd, {\n propertyName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n}),\n Xd = rd(Wd),\n Yd = m({}, Ad, {\n deltaX: function deltaX(a) {\n return \"deltaX\" in a ? a.deltaX : \"wheelDeltaX\" in a ? -a.wheelDeltaX : 0;\n },\n deltaY: function deltaY(a) {\n return \"deltaY\" in a ? a.deltaY : \"wheelDeltaY\" in a ? -a.wheelDeltaY : \"wheelDelta\" in a ? -a.wheelDelta : 0;\n },\n deltaZ: 0,\n deltaMode: 0\n}),\n Zd = rd(Yd),\n $d = [9, 13, 27, 32],\n ae = fa && \"CompositionEvent\" in window,\n be = null;\nfa && \"documentMode\" in document && (be = document.documentMode);\nvar ce = fa && \"TextEvent\" in window && !be,\n de = fa && (!ae || be && 8 < be && 11 >= be),\n ee = String.fromCharCode(32),\n fe = !1;\n\nfunction ge(a, b) {\n switch (a) {\n case \"keyup\":\n return -1 !== $d.indexOf(b.keyCode);\n\n case \"keydown\":\n return 229 !== b.keyCode;\n\n case \"keypress\":\n case \"mousedown\":\n case \"focusout\":\n return !0;\n\n default:\n return !1;\n }\n}\n\nfunction he(a) {\n a = a.detail;\n return \"object\" === _typeof(a) && \"data\" in a ? a.data : null;\n}\n\nvar ie = !1;\n\nfunction je(a, b) {\n switch (a) {\n case \"compositionend\":\n return he(b);\n\n case \"keypress\":\n if (32 !== b.which) return null;\n fe = !0;\n return ee;\n\n case \"textInput\":\n return a = b.data, a === ee && fe ? null : a;\n\n default:\n return null;\n }\n}\n\nfunction ke(a, b) {\n if (ie) return \"compositionend\" === a || !ae && ge(a, b) ? (a = nd(), md = ld = kd = null, ie = !1, a) : null;\n\n switch (a) {\n case \"paste\":\n return null;\n\n case \"keypress\":\n if (!(b.ctrlKey || b.altKey || b.metaKey) || b.ctrlKey && b.altKey) {\n if (b.char && 1 < b.char.length) return b.char;\n if (b.which) return String.fromCharCode(b.which);\n }\n\n return null;\n\n case \"compositionend\":\n return de && \"ko\" !== b.locale ? null : b.data;\n\n default:\n return null;\n }\n}\n\nvar le = {\n color: !0,\n date: !0,\n datetime: !0,\n \"datetime-local\": !0,\n email: !0,\n month: !0,\n number: !0,\n password: !0,\n range: !0,\n search: !0,\n tel: !0,\n text: !0,\n time: !0,\n url: !0,\n week: !0\n};\n\nfunction me(a) {\n var b = a && a.nodeName && a.nodeName.toLowerCase();\n return \"input\" === b ? !!le[a.type] : \"textarea\" === b ? !0 : !1;\n}\n\nfunction ne(a, b, c, d) {\n Eb(d);\n b = oe(b, \"onChange\");\n 0 < b.length && (c = new td(\"onChange\", \"change\", null, c, d), a.push({\n event: c,\n listeners: b\n }));\n}\n\nvar pe = null,\n qe = null;\n\nfunction re(a) {\n se(a, 0);\n}\n\nfunction te(a) {\n var b = ue(a);\n if (Wa(b)) return a;\n}\n\nfunction ve(a, b) {\n if (\"change\" === a) return b;\n}\n\nvar we = !1;\n\nif (fa) {\n var xe;\n\n if (fa) {\n var ye = (\"oninput\" in document);\n\n if (!ye) {\n var ze = document.createElement(\"div\");\n ze.setAttribute(\"oninput\", \"return;\");\n ye = \"function\" === typeof ze.oninput;\n }\n\n xe = ye;\n } else xe = !1;\n\n we = xe && (!document.documentMode || 9 < document.documentMode);\n}\n\nfunction Ae() {\n pe && (pe.detachEvent(\"onpropertychange\", Be), qe = pe = null);\n}\n\nfunction Be(a) {\n if (\"value\" === a.propertyName && te(qe)) {\n var b = [];\n ne(b, qe, a, xb(a));\n a = re;\n if (Kb) a(b);else {\n Kb = !0;\n\n try {\n Gb(a, b);\n } finally {\n Kb = !1, Mb();\n }\n }\n }\n}\n\nfunction Ce(a, b, c) {\n \"focusin\" === a ? (Ae(), pe = b, qe = c, pe.attachEvent(\"onpropertychange\", Be)) : \"focusout\" === a && Ae();\n}\n\nfunction De(a) {\n if (\"selectionchange\" === a || \"keyup\" === a || \"keydown\" === a) return te(qe);\n}\n\nfunction Ee(a, b) {\n if (\"click\" === a) return te(b);\n}\n\nfunction Fe(a, b) {\n if (\"input\" === a || \"change\" === a) return te(b);\n}\n\nfunction Ge(a, b) {\n return a === b && (0 !== a || 1 / a === 1 / b) || a !== a && b !== b;\n}\n\nvar He = \"function\" === typeof Object.is ? Object.is : Ge,\n Ie = Object.prototype.hasOwnProperty;\n\nfunction Je(a, b) {\n if (He(a, b)) return !0;\n if (\"object\" !== _typeof(a) || null === a || \"object\" !== _typeof(b) || null === b) return !1;\n var c = Object.keys(a),\n d = Object.keys(b);\n if (c.length !== d.length) return !1;\n\n for (d = 0; d < c.length; d++) {\n if (!Ie.call(b, c[d]) || !He(a[c[d]], b[c[d]])) return !1;\n }\n\n return !0;\n}\n\nfunction Ke(a) {\n for (; a && a.firstChild;) {\n a = a.firstChild;\n }\n\n return a;\n}\n\nfunction Le(a, b) {\n var c = Ke(a);\n a = 0;\n\n for (var d; c;) {\n if (3 === c.nodeType) {\n d = a + c.textContent.length;\n if (a <= b && d >= b) return {\n node: c,\n offset: b - a\n };\n a = d;\n }\n\n a: {\n for (; c;) {\n if (c.nextSibling) {\n c = c.nextSibling;\n break a;\n }\n\n c = c.parentNode;\n }\n\n c = void 0;\n }\n\n c = Ke(c);\n }\n}\n\nfunction Me(a, b) {\n return a && b ? a === b ? !0 : a && 3 === a.nodeType ? !1 : b && 3 === b.nodeType ? Me(a, b.parentNode) : \"contains\" in a ? a.contains(b) : a.compareDocumentPosition ? !!(a.compareDocumentPosition(b) & 16) : !1 : !1;\n}\n\nfunction Ne() {\n for (var a = window, b = Xa(); b instanceof a.HTMLIFrameElement;) {\n try {\n var c = \"string\" === typeof b.contentWindow.location.href;\n } catch (d) {\n c = !1;\n }\n\n if (c) a = b.contentWindow;else break;\n b = Xa(a.document);\n }\n\n return b;\n}\n\nfunction Oe(a) {\n var b = a && a.nodeName && a.nodeName.toLowerCase();\n return b && (\"input\" === b && (\"text\" === a.type || \"search\" === a.type || \"tel\" === a.type || \"url\" === a.type || \"password\" === a.type) || \"textarea\" === b || \"true\" === a.contentEditable);\n}\n\nvar Pe = fa && \"documentMode\" in document && 11 >= document.documentMode,\n Qe = null,\n Re = null,\n Se = null,\n Te = !1;\n\nfunction Ue(a, b, c) {\n var d = c.window === c ? c.document : 9 === c.nodeType ? c : c.ownerDocument;\n Te || null == Qe || Qe !== Xa(d) || (d = Qe, \"selectionStart\" in d && Oe(d) ? d = {\n start: d.selectionStart,\n end: d.selectionEnd\n } : (d = (d.ownerDocument && d.ownerDocument.defaultView || window).getSelection(), d = {\n anchorNode: d.anchorNode,\n anchorOffset: d.anchorOffset,\n focusNode: d.focusNode,\n focusOffset: d.focusOffset\n }), Se && Je(Se, d) || (Se = d, d = oe(Re, \"onSelect\"), 0 < d.length && (b = new td(\"onSelect\", \"select\", null, b, c), a.push({\n event: b,\n listeners: d\n }), b.target = Qe)));\n}\n\nPc(\"cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange\".split(\" \"), 0);\nPc(\"drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel\".split(\" \"), 1);\nPc(Oc, 2);\n\nfor (var Ve = \"change selectionchange textInput compositionstart compositionend compositionupdate\".split(\" \"), We = 0; We < Ve.length; We++) {\n Nc.set(Ve[We], 0);\n}\n\nea(\"onMouseEnter\", [\"mouseout\", \"mouseover\"]);\nea(\"onMouseLeave\", [\"mouseout\", \"mouseover\"]);\nea(\"onPointerEnter\", [\"pointerout\", \"pointerover\"]);\nea(\"onPointerLeave\", [\"pointerout\", \"pointerover\"]);\nda(\"onChange\", \"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));\nda(\"onSelect\", \"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));\nda(\"onBeforeInput\", [\"compositionend\", \"keypress\", \"textInput\", \"paste\"]);\nda(\"onCompositionEnd\", \"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));\nda(\"onCompositionStart\", \"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));\nda(\"onCompositionUpdate\", \"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));\nvar Xe = \"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),\n Ye = new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(Xe));\n\nfunction Ze(a, b, c) {\n var d = a.type || \"unknown-event\";\n a.currentTarget = c;\n Yb(d, b, void 0, a);\n a.currentTarget = null;\n}\n\nfunction se(a, b) {\n b = 0 !== (b & 4);\n\n for (var c = 0; c < a.length; c++) {\n var d = a[c],\n e = d.event;\n d = d.listeners;\n\n a: {\n var f = void 0;\n if (b) for (var g = d.length - 1; 0 <= g; g--) {\n var h = d[g],\n k = h.instance,\n l = h.currentTarget;\n h = h.listener;\n if (k !== f && e.isPropagationStopped()) break a;\n Ze(e, h, l);\n f = k;\n } else for (g = 0; g < d.length; g++) {\n h = d[g];\n k = h.instance;\n l = h.currentTarget;\n h = h.listener;\n if (k !== f && e.isPropagationStopped()) break a;\n Ze(e, h, l);\n f = k;\n }\n }\n }\n\n if (Ub) throw a = Vb, Ub = !1, Vb = null, a;\n}\n\nfunction G(a, b) {\n var c = $e(b),\n d = a + \"__bubble\";\n c.has(d) || (af(b, a, 2, !1), c.add(d));\n}\n\nvar bf = \"_reactListening\" + Math.random().toString(36).slice(2);\n\nfunction cf(a) {\n a[bf] || (a[bf] = !0, ba.forEach(function (b) {\n Ye.has(b) || df(b, !1, a, null);\n df(b, !0, a, null);\n }));\n}\n\nfunction df(a, b, c, d) {\n var e = 4 < arguments.length && void 0 !== arguments[4] ? arguments[4] : 0,\n f = c;\n \"selectionchange\" === a && 9 !== c.nodeType && (f = c.ownerDocument);\n\n if (null !== d && !b && Ye.has(a)) {\n if (\"scroll\" !== a) return;\n e |= 2;\n f = d;\n }\n\n var g = $e(f),\n h = a + \"__\" + (b ? \"capture\" : \"bubble\");\n g.has(h) || (b && (e |= 4), af(f, a, e, b), g.add(h));\n}\n\nfunction af(a, b, c, d) {\n var e = Nc.get(b);\n\n switch (void 0 === e ? 2 : e) {\n case 0:\n e = gd;\n break;\n\n case 1:\n e = id;\n break;\n\n default:\n e = hd;\n }\n\n c = e.bind(null, b, c, a);\n e = void 0;\n !Pb || \"touchstart\" !== b && \"touchmove\" !== b && \"wheel\" !== b || (e = !0);\n d ? void 0 !== e ? a.addEventListener(b, c, {\n capture: !0,\n passive: e\n }) : a.addEventListener(b, c, !0) : void 0 !== e ? a.addEventListener(b, c, {\n passive: e\n }) : a.addEventListener(b, c, !1);\n}\n\nfunction jd(a, b, c, d, e) {\n var f = d;\n if (0 === (b & 1) && 0 === (b & 2) && null !== d) a: for (;;) {\n if (null === d) return;\n var g = d.tag;\n\n if (3 === g || 4 === g) {\n var h = d.stateNode.containerInfo;\n if (h === e || 8 === h.nodeType && h.parentNode === e) break;\n if (4 === g) for (g = d.return; null !== g;) {\n var k = g.tag;\n if (3 === k || 4 === k) if (k = g.stateNode.containerInfo, k === e || 8 === k.nodeType && k.parentNode === e) return;\n g = g.return;\n }\n\n for (; null !== h;) {\n g = wc(h);\n if (null === g) return;\n k = g.tag;\n\n if (5 === k || 6 === k) {\n d = f = g;\n continue a;\n }\n\n h = h.parentNode;\n }\n }\n\n d = d.return;\n }\n Nb(function () {\n var d = f,\n e = xb(c),\n g = [];\n\n a: {\n var h = Mc.get(a);\n\n if (void 0 !== h) {\n var k = td,\n x = a;\n\n switch (a) {\n case \"keypress\":\n if (0 === od(c)) break a;\n\n case \"keydown\":\n case \"keyup\":\n k = Rd;\n break;\n\n case \"focusin\":\n x = \"focus\";\n k = Fd;\n break;\n\n case \"focusout\":\n x = \"blur\";\n k = Fd;\n break;\n\n case \"beforeblur\":\n case \"afterblur\":\n k = Fd;\n break;\n\n case \"click\":\n if (2 === c.button) break a;\n\n case \"auxclick\":\n case \"dblclick\":\n case \"mousedown\":\n case \"mousemove\":\n case \"mouseup\":\n case \"mouseout\":\n case \"mouseover\":\n case \"contextmenu\":\n k = Bd;\n break;\n\n case \"drag\":\n case \"dragend\":\n case \"dragenter\":\n case \"dragexit\":\n case \"dragleave\":\n case \"dragover\":\n case \"dragstart\":\n case \"drop\":\n k = Dd;\n break;\n\n case \"touchcancel\":\n case \"touchend\":\n case \"touchmove\":\n case \"touchstart\":\n k = Vd;\n break;\n\n case Ic:\n case Jc:\n case Kc:\n k = Hd;\n break;\n\n case Lc:\n k = Xd;\n break;\n\n case \"scroll\":\n k = vd;\n break;\n\n case \"wheel\":\n k = Zd;\n break;\n\n case \"copy\":\n case \"cut\":\n case \"paste\":\n k = Jd;\n break;\n\n case \"gotpointercapture\":\n case \"lostpointercapture\":\n case \"pointercancel\":\n case \"pointerdown\":\n case \"pointermove\":\n case \"pointerout\":\n case \"pointerover\":\n case \"pointerup\":\n k = Td;\n }\n\n var w = 0 !== (b & 4),\n z = !w && \"scroll\" === a,\n u = w ? null !== h ? h + \"Capture\" : null : h;\n w = [];\n\n for (var t = d, q; null !== t;) {\n q = t;\n var v = q.stateNode;\n 5 === q.tag && null !== v && (q = v, null !== u && (v = Ob(t, u), null != v && w.push(ef(t, v, q))));\n if (z) break;\n t = t.return;\n }\n\n 0 < w.length && (h = new k(h, x, null, c, e), g.push({\n event: h,\n listeners: w\n }));\n }\n }\n\n if (0 === (b & 7)) {\n a: {\n h = \"mouseover\" === a || \"pointerover\" === a;\n k = \"mouseout\" === a || \"pointerout\" === a;\n if (h && 0 === (b & 16) && (x = c.relatedTarget || c.fromElement) && (wc(x) || x[ff])) break a;\n\n if (k || h) {\n h = e.window === e ? e : (h = e.ownerDocument) ? h.defaultView || h.parentWindow : window;\n\n if (k) {\n if (x = c.relatedTarget || c.toElement, k = d, x = x ? wc(x) : null, null !== x && (z = Zb(x), x !== z || 5 !== x.tag && 6 !== x.tag)) x = null;\n } else k = null, x = d;\n\n if (k !== x) {\n w = Bd;\n v = \"onMouseLeave\";\n u = \"onMouseEnter\";\n t = \"mouse\";\n if (\"pointerout\" === a || \"pointerover\" === a) w = Td, v = \"onPointerLeave\", u = \"onPointerEnter\", t = \"pointer\";\n z = null == k ? h : ue(k);\n q = null == x ? h : ue(x);\n h = new w(v, t + \"leave\", k, c, e);\n h.target = z;\n h.relatedTarget = q;\n v = null;\n wc(e) === d && (w = new w(u, t + \"enter\", x, c, e), w.target = q, w.relatedTarget = z, v = w);\n z = v;\n if (k && x) b: {\n w = k;\n u = x;\n t = 0;\n\n for (q = w; q; q = gf(q)) {\n t++;\n }\n\n q = 0;\n\n for (v = u; v; v = gf(v)) {\n q++;\n }\n\n for (; 0 < t - q;) {\n w = gf(w), t--;\n }\n\n for (; 0 < q - t;) {\n u = gf(u), q--;\n }\n\n for (; t--;) {\n if (w === u || null !== u && w === u.alternate) break b;\n w = gf(w);\n u = gf(u);\n }\n\n w = null;\n } else w = null;\n null !== k && hf(g, h, k, w, !1);\n null !== x && null !== z && hf(g, z, x, w, !0);\n }\n }\n }\n\n a: {\n h = d ? ue(d) : window;\n k = h.nodeName && h.nodeName.toLowerCase();\n if (\"select\" === k || \"input\" === k && \"file\" === h.type) var J = ve;else if (me(h)) {\n if (we) J = Fe;else {\n J = De;\n var K = Ce;\n }\n } else (k = h.nodeName) && \"input\" === k.toLowerCase() && (\"checkbox\" === h.type || \"radio\" === h.type) && (J = Ee);\n\n if (J && (J = J(a, d))) {\n ne(g, J, c, e);\n break a;\n }\n\n K && K(a, h, d);\n \"focusout\" === a && (K = h._wrapperState) && K.controlled && \"number\" === h.type && bb(h, \"number\", h.value);\n }\n\n K = d ? ue(d) : window;\n\n switch (a) {\n case \"focusin\":\n if (me(K) || \"true\" === K.contentEditable) Qe = K, Re = d, Se = null;\n break;\n\n case \"focusout\":\n Se = Re = Qe = null;\n break;\n\n case \"mousedown\":\n Te = !0;\n break;\n\n case \"contextmenu\":\n case \"mouseup\":\n case \"dragend\":\n Te = !1;\n Ue(g, c, e);\n break;\n\n case \"selectionchange\":\n if (Pe) break;\n\n case \"keydown\":\n case \"keyup\":\n Ue(g, c, e);\n }\n\n var Q;\n if (ae) b: {\n switch (a) {\n case \"compositionstart\":\n var L = \"onCompositionStart\";\n break b;\n\n case \"compositionend\":\n L = \"onCompositionEnd\";\n break b;\n\n case \"compositionupdate\":\n L = \"onCompositionUpdate\";\n break b;\n }\n\n L = void 0;\n } else ie ? ge(a, c) && (L = \"onCompositionEnd\") : \"keydown\" === a && 229 === c.keyCode && (L = \"onCompositionStart\");\n L && (de && \"ko\" !== c.locale && (ie || \"onCompositionStart\" !== L ? \"onCompositionEnd\" === L && ie && (Q = nd()) : (kd = e, ld = \"value\" in kd ? kd.value : kd.textContent, ie = !0)), K = oe(d, L), 0 < K.length && (L = new Ld(L, a, null, c, e), g.push({\n event: L,\n listeners: K\n }), Q ? L.data = Q : (Q = he(c), null !== Q && (L.data = Q))));\n if (Q = ce ? je(a, c) : ke(a, c)) d = oe(d, \"onBeforeInput\"), 0 < d.length && (e = new Ld(\"onBeforeInput\", \"beforeinput\", null, c, e), g.push({\n event: e,\n listeners: d\n }), e.data = Q);\n }\n\n se(g, b);\n });\n}\n\nfunction ef(a, b, c) {\n return {\n instance: a,\n listener: b,\n currentTarget: c\n };\n}\n\nfunction oe(a, b) {\n for (var c = b + \"Capture\", d = []; null !== a;) {\n var e = a,\n f = e.stateNode;\n 5 === e.tag && null !== f && (e = f, f = Ob(a, c), null != f && d.unshift(ef(a, f, e)), f = Ob(a, b), null != f && d.push(ef(a, f, e)));\n a = a.return;\n }\n\n return d;\n}\n\nfunction gf(a) {\n if (null === a) return null;\n\n do {\n a = a.return;\n } while (a && 5 !== a.tag);\n\n return a ? a : null;\n}\n\nfunction hf(a, b, c, d, e) {\n for (var f = b._reactName, g = []; null !== c && c !== d;) {\n var h = c,\n k = h.alternate,\n l = h.stateNode;\n if (null !== k && k === d) break;\n 5 === h.tag && null !== l && (h = l, e ? (k = Ob(c, f), null != k && g.unshift(ef(c, k, h))) : e || (k = Ob(c, f), null != k && g.push(ef(c, k, h))));\n c = c.return;\n }\n\n 0 !== g.length && a.push({\n event: b,\n listeners: g\n });\n}\n\nfunction jf() {}\n\nvar kf = null,\n lf = null;\n\nfunction mf(a, b) {\n switch (a) {\n case \"button\":\n case \"input\":\n case \"select\":\n case \"textarea\":\n return !!b.autoFocus;\n }\n\n return !1;\n}\n\nfunction nf(a, b) {\n return \"textarea\" === a || \"option\" === a || \"noscript\" === a || \"string\" === typeof b.children || \"number\" === typeof b.children || \"object\" === _typeof(b.dangerouslySetInnerHTML) && null !== b.dangerouslySetInnerHTML && null != b.dangerouslySetInnerHTML.__html;\n}\n\nvar of = \"function\" === typeof setTimeout ? setTimeout : void 0,\n pf = \"function\" === typeof clearTimeout ? clearTimeout : void 0;\n\nfunction qf(a) {\n 1 === a.nodeType ? a.textContent = \"\" : 9 === a.nodeType && (a = a.body, null != a && (a.textContent = \"\"));\n}\n\nfunction rf(a) {\n for (; null != a; a = a.nextSibling) {\n var b = a.nodeType;\n if (1 === b || 3 === b) break;\n }\n\n return a;\n}\n\nfunction sf(a) {\n a = a.previousSibling;\n\n for (var b = 0; a;) {\n if (8 === a.nodeType) {\n var c = a.data;\n\n if (\"$\" === c || \"$!\" === c || \"$?\" === c) {\n if (0 === b) return a;\n b--;\n } else \"/$\" === c && b++;\n }\n\n a = a.previousSibling;\n }\n\n return null;\n}\n\nvar tf = 0;\n\nfunction uf(a) {\n return {\n $$typeof: Ga,\n toString: a,\n valueOf: a\n };\n}\n\nvar vf = Math.random().toString(36).slice(2),\n wf = \"__reactFiber$\" + vf,\n xf = \"__reactProps$\" + vf,\n ff = \"__reactContainer$\" + vf,\n yf = \"__reactEvents$\" + vf;\n\nfunction wc(a) {\n var b = a[wf];\n if (b) return b;\n\n for (var c = a.parentNode; c;) {\n if (b = c[ff] || c[wf]) {\n c = b.alternate;\n if (null !== b.child || null !== c && null !== c.child) for (a = sf(a); null !== a;) {\n if (c = a[wf]) return c;\n a = sf(a);\n }\n return b;\n }\n\n a = c;\n c = a.parentNode;\n }\n\n return null;\n}\n\nfunction Cb(a) {\n a = a[wf] || a[ff];\n return !a || 5 !== a.tag && 6 !== a.tag && 13 !== a.tag && 3 !== a.tag ? null : a;\n}\n\nfunction ue(a) {\n if (5 === a.tag || 6 === a.tag) return a.stateNode;\n throw Error(y(33));\n}\n\nfunction Db(a) {\n return a[xf] || null;\n}\n\nfunction $e(a) {\n var b = a[yf];\n void 0 === b && (b = a[yf] = new Set());\n return b;\n}\n\nvar zf = [],\n Af = -1;\n\nfunction Bf(a) {\n return {\n current: a\n };\n}\n\nfunction H(a) {\n 0 > Af || (a.current = zf[Af], zf[Af] = null, Af--);\n}\n\nfunction I(a, b) {\n Af++;\n zf[Af] = a.current;\n a.current = b;\n}\n\nvar Cf = {},\n M = Bf(Cf),\n N = Bf(!1),\n Df = Cf;\n\nfunction Ef(a, b) {\n var c = a.type.contextTypes;\n if (!c) return Cf;\n var d = a.stateNode;\n if (d && d.__reactInternalMemoizedUnmaskedChildContext === b) return d.__reactInternalMemoizedMaskedChildContext;\n var e = {},\n f;\n\n for (f in c) {\n e[f] = b[f];\n }\n\n d && (a = a.stateNode, a.__reactInternalMemoizedUnmaskedChildContext = b, a.__reactInternalMemoizedMaskedChildContext = e);\n return e;\n}\n\nfunction Ff(a) {\n a = a.childContextTypes;\n return null !== a && void 0 !== a;\n}\n\nfunction Gf() {\n H(N);\n H(M);\n}\n\nfunction Hf(a, b, c) {\n if (M.current !== Cf) throw Error(y(168));\n I(M, b);\n I(N, c);\n}\n\nfunction If(a, b, c) {\n var d = a.stateNode;\n a = b.childContextTypes;\n if (\"function\" !== typeof d.getChildContext) return c;\n d = d.getChildContext();\n\n for (var e in d) {\n if (!(e in a)) throw Error(y(108, Ra(b) || \"Unknown\", e));\n }\n\n return m({}, c, d);\n}\n\nfunction Jf(a) {\n a = (a = a.stateNode) && a.__reactInternalMemoizedMergedChildContext || Cf;\n Df = M.current;\n I(M, a);\n I(N, N.current);\n return !0;\n}\n\nfunction Kf(a, b, c) {\n var d = a.stateNode;\n if (!d) throw Error(y(169));\n c ? (a = If(a, b, Df), d.__reactInternalMemoizedMergedChildContext = a, H(N), H(M), I(M, a)) : H(N);\n I(N, c);\n}\n\nvar Lf = null,\n Mf = null,\n Nf = r.unstable_runWithPriority,\n Of = r.unstable_scheduleCallback,\n Pf = r.unstable_cancelCallback,\n Qf = r.unstable_shouldYield,\n Rf = r.unstable_requestPaint,\n Sf = r.unstable_now,\n Tf = r.unstable_getCurrentPriorityLevel,\n Uf = r.unstable_ImmediatePriority,\n Vf = r.unstable_UserBlockingPriority,\n Wf = r.unstable_NormalPriority,\n Xf = r.unstable_LowPriority,\n Yf = r.unstable_IdlePriority,\n Zf = {},\n $f = void 0 !== Rf ? Rf : function () {},\n ag = null,\n bg = null,\n cg = !1,\n dg = Sf(),\n O = 1E4 > dg ? Sf : function () {\n return Sf() - dg;\n};\n\nfunction eg() {\n switch (Tf()) {\n case Uf:\n return 99;\n\n case Vf:\n return 98;\n\n case Wf:\n return 97;\n\n case Xf:\n return 96;\n\n case Yf:\n return 95;\n\n default:\n throw Error(y(332));\n }\n}\n\nfunction fg(a) {\n switch (a) {\n case 99:\n return Uf;\n\n case 98:\n return Vf;\n\n case 97:\n return Wf;\n\n case 96:\n return Xf;\n\n case 95:\n return Yf;\n\n default:\n throw Error(y(332));\n }\n}\n\nfunction gg(a, b) {\n a = fg(a);\n return Nf(a, b);\n}\n\nfunction hg(a, b, c) {\n a = fg(a);\n return Of(a, b, c);\n}\n\nfunction ig() {\n if (null !== bg) {\n var a = bg;\n bg = null;\n Pf(a);\n }\n\n jg();\n}\n\nfunction jg() {\n if (!cg && null !== ag) {\n cg = !0;\n var a = 0;\n\n try {\n var b = ag;\n gg(99, function () {\n for (; a < b.length; a++) {\n var c = b[a];\n\n do {\n c = c(!0);\n } while (null !== c);\n }\n });\n ag = null;\n } catch (c) {\n throw null !== ag && (ag = ag.slice(a + 1)), Of(Uf, ig), c;\n } finally {\n cg = !1;\n }\n }\n}\n\nvar kg = ra.ReactCurrentBatchConfig;\n\nfunction lg(a, b) {\n if (a && a.defaultProps) {\n b = m({}, b);\n a = a.defaultProps;\n\n for (var c in a) {\n void 0 === b[c] && (b[c] = a[c]);\n }\n\n return b;\n }\n\n return b;\n}\n\nvar mg = Bf(null),\n ng = null,\n og = null,\n pg = null;\n\nfunction qg() {\n pg = og = ng = null;\n}\n\nfunction rg(a) {\n var b = mg.current;\n H(mg);\n a.type._context._currentValue = b;\n}\n\nfunction sg(a, b) {\n for (; null !== a;) {\n var c = a.alternate;\n if ((a.childLanes & b) === b) {\n if (null === c || (c.childLanes & b) === b) break;else c.childLanes |= b;\n } else a.childLanes |= b, null !== c && (c.childLanes |= b);\n a = a.return;\n }\n}\n\nfunction tg(a, b) {\n ng = a;\n pg = og = null;\n a = a.dependencies;\n null !== a && null !== a.firstContext && (0 !== (a.lanes & b) && (ug = !0), a.firstContext = null);\n}\n\nfunction vg(a, b) {\n if (pg !== a && !1 !== b && 0 !== b) {\n if (\"number\" !== typeof b || 1073741823 === b) pg = a, b = 1073741823;\n b = {\n context: a,\n observedBits: b,\n next: null\n };\n\n if (null === og) {\n if (null === ng) throw Error(y(308));\n og = b;\n ng.dependencies = {\n lanes: 0,\n firstContext: b,\n responders: null\n };\n } else og = og.next = b;\n }\n\n return a._currentValue;\n}\n\nvar wg = !1;\n\nfunction xg(a) {\n a.updateQueue = {\n baseState: a.memoizedState,\n firstBaseUpdate: null,\n lastBaseUpdate: null,\n shared: {\n pending: null\n },\n effects: null\n };\n}\n\nfunction yg(a, b) {\n a = a.updateQueue;\n b.updateQueue === a && (b.updateQueue = {\n baseState: a.baseState,\n firstBaseUpdate: a.firstBaseUpdate,\n lastBaseUpdate: a.lastBaseUpdate,\n shared: a.shared,\n effects: a.effects\n });\n}\n\nfunction zg(a, b) {\n return {\n eventTime: a,\n lane: b,\n tag: 0,\n payload: null,\n callback: null,\n next: null\n };\n}\n\nfunction Ag(a, b) {\n a = a.updateQueue;\n\n if (null !== a) {\n a = a.shared;\n var c = a.pending;\n null === c ? b.next = b : (b.next = c.next, c.next = b);\n a.pending = b;\n }\n}\n\nfunction Bg(a, b) {\n var c = a.updateQueue,\n d = a.alternate;\n\n if (null !== d && (d = d.updateQueue, c === d)) {\n var e = null,\n f = null;\n c = c.firstBaseUpdate;\n\n if (null !== c) {\n do {\n var g = {\n eventTime: c.eventTime,\n lane: c.lane,\n tag: c.tag,\n payload: c.payload,\n callback: c.callback,\n next: null\n };\n null === f ? e = f = g : f = f.next = g;\n c = c.next;\n } while (null !== c);\n\n null === f ? e = f = b : f = f.next = b;\n } else e = f = b;\n\n c = {\n baseState: d.baseState,\n firstBaseUpdate: e,\n lastBaseUpdate: f,\n shared: d.shared,\n effects: d.effects\n };\n a.updateQueue = c;\n return;\n }\n\n a = c.lastBaseUpdate;\n null === a ? c.firstBaseUpdate = b : a.next = b;\n c.lastBaseUpdate = b;\n}\n\nfunction Cg(a, b, c, d) {\n var e = a.updateQueue;\n wg = !1;\n var f = e.firstBaseUpdate,\n g = e.lastBaseUpdate,\n h = e.shared.pending;\n\n if (null !== h) {\n e.shared.pending = null;\n var k = h,\n l = k.next;\n k.next = null;\n null === g ? f = l : g.next = l;\n g = k;\n var n = a.alternate;\n\n if (null !== n) {\n n = n.updateQueue;\n var A = n.lastBaseUpdate;\n A !== g && (null === A ? n.firstBaseUpdate = l : A.next = l, n.lastBaseUpdate = k);\n }\n }\n\n if (null !== f) {\n A = e.baseState;\n g = 0;\n n = l = k = null;\n\n do {\n h = f.lane;\n var p = f.eventTime;\n\n if ((d & h) === h) {\n null !== n && (n = n.next = {\n eventTime: p,\n lane: 0,\n tag: f.tag,\n payload: f.payload,\n callback: f.callback,\n next: null\n });\n\n a: {\n var C = a,\n x = f;\n h = b;\n p = c;\n\n switch (x.tag) {\n case 1:\n C = x.payload;\n\n if (\"function\" === typeof C) {\n A = C.call(p, A, h);\n break a;\n }\n\n A = C;\n break a;\n\n case 3:\n C.flags = C.flags & -4097 | 64;\n\n case 0:\n C = x.payload;\n h = \"function\" === typeof C ? C.call(p, A, h) : C;\n if (null === h || void 0 === h) break a;\n A = m({}, A, h);\n break a;\n\n case 2:\n wg = !0;\n }\n }\n\n null !== f.callback && (a.flags |= 32, h = e.effects, null === h ? e.effects = [f] : h.push(f));\n } else p = {\n eventTime: p,\n lane: h,\n tag: f.tag,\n payload: f.payload,\n callback: f.callback,\n next: null\n }, null === n ? (l = n = p, k = A) : n = n.next = p, g |= h;\n\n f = f.next;\n if (null === f) if (h = e.shared.pending, null === h) break;else f = h.next, h.next = null, e.lastBaseUpdate = h, e.shared.pending = null;\n } while (1);\n\n null === n && (k = A);\n e.baseState = k;\n e.firstBaseUpdate = l;\n e.lastBaseUpdate = n;\n Dg |= g;\n a.lanes = g;\n a.memoizedState = A;\n }\n}\n\nfunction Eg(a, b, c) {\n a = b.effects;\n b.effects = null;\n if (null !== a) for (b = 0; b < a.length; b++) {\n var d = a[b],\n e = d.callback;\n\n if (null !== e) {\n d.callback = null;\n d = c;\n if (\"function\" !== typeof e) throw Error(y(191, e));\n e.call(d);\n }\n }\n}\n\nvar Fg = new aa.Component().refs;\n\nfunction Gg(a, b, c, d) {\n b = a.memoizedState;\n c = c(d, b);\n c = null === c || void 0 === c ? b : m({}, b, c);\n a.memoizedState = c;\n 0 === a.lanes && (a.updateQueue.baseState = c);\n}\n\nvar Kg = {\n isMounted: function isMounted(a) {\n return (a = a._reactInternals) ? Zb(a) === a : !1;\n },\n enqueueSetState: function enqueueSetState(a, b, c) {\n a = a._reactInternals;\n var d = Hg(),\n e = Ig(a),\n f = zg(d, e);\n f.payload = b;\n void 0 !== c && null !== c && (f.callback = c);\n Ag(a, f);\n Jg(a, e, d);\n },\n enqueueReplaceState: function enqueueReplaceState(a, b, c) {\n a = a._reactInternals;\n var d = Hg(),\n e = Ig(a),\n f = zg(d, e);\n f.tag = 1;\n f.payload = b;\n void 0 !== c && null !== c && (f.callback = c);\n Ag(a, f);\n Jg(a, e, d);\n },\n enqueueForceUpdate: function enqueueForceUpdate(a, b) {\n a = a._reactInternals;\n var c = Hg(),\n d = Ig(a),\n e = zg(c, d);\n e.tag = 2;\n void 0 !== b && null !== b && (e.callback = b);\n Ag(a, e);\n Jg(a, d, c);\n }\n};\n\nfunction Lg(a, b, c, d, e, f, g) {\n a = a.stateNode;\n return \"function\" === typeof a.shouldComponentUpdate ? a.shouldComponentUpdate(d, f, g) : b.prototype && b.prototype.isPureReactComponent ? !Je(c, d) || !Je(e, f) : !0;\n}\n\nfunction Mg(a, b, c) {\n var d = !1,\n e = Cf;\n var f = b.contextType;\n \"object\" === _typeof(f) && null !== f ? f = vg(f) : (e = Ff(b) ? Df : M.current, d = b.contextTypes, f = (d = null !== d && void 0 !== d) ? Ef(a, e) : Cf);\n b = new b(c, f);\n a.memoizedState = null !== b.state && void 0 !== b.state ? b.state : null;\n b.updater = Kg;\n a.stateNode = b;\n b._reactInternals = a;\n d && (a = a.stateNode, a.__reactInternalMemoizedUnmaskedChildContext = e, a.__reactInternalMemoizedMaskedChildContext = f);\n return b;\n}\n\nfunction Ng(a, b, c, d) {\n a = b.state;\n \"function\" === typeof b.componentWillReceiveProps && b.componentWillReceiveProps(c, d);\n \"function\" === typeof b.UNSAFE_componentWillReceiveProps && b.UNSAFE_componentWillReceiveProps(c, d);\n b.state !== a && Kg.enqueueReplaceState(b, b.state, null);\n}\n\nfunction Og(a, b, c, d) {\n var e = a.stateNode;\n e.props = c;\n e.state = a.memoizedState;\n e.refs = Fg;\n xg(a);\n var f = b.contextType;\n \"object\" === _typeof(f) && null !== f ? e.context = vg(f) : (f = Ff(b) ? Df : M.current, e.context = Ef(a, f));\n Cg(a, c, e, d);\n e.state = a.memoizedState;\n f = b.getDerivedStateFromProps;\n \"function\" === typeof f && (Gg(a, b, f, c), e.state = a.memoizedState);\n \"function\" === typeof b.getDerivedStateFromProps || \"function\" === typeof e.getSnapshotBeforeUpdate || \"function\" !== typeof e.UNSAFE_componentWillMount && \"function\" !== typeof e.componentWillMount || (b = e.state, \"function\" === typeof e.componentWillMount && e.componentWillMount(), \"function\" === typeof e.UNSAFE_componentWillMount && e.UNSAFE_componentWillMount(), b !== e.state && Kg.enqueueReplaceState(e, e.state, null), Cg(a, c, e, d), e.state = a.memoizedState);\n \"function\" === typeof e.componentDidMount && (a.flags |= 4);\n}\n\nvar Pg = Array.isArray;\n\nfunction Qg(a, b, c) {\n a = c.ref;\n\n if (null !== a && \"function\" !== typeof a && \"object\" !== _typeof(a)) {\n if (c._owner) {\n c = c._owner;\n\n if (c) {\n if (1 !== c.tag) throw Error(y(309));\n var d = c.stateNode;\n }\n\n if (!d) throw Error(y(147, a));\n var e = \"\" + a;\n if (null !== b && null !== b.ref && \"function\" === typeof b.ref && b.ref._stringRef === e) return b.ref;\n\n b = function b(a) {\n var b = d.refs;\n b === Fg && (b = d.refs = {});\n null === a ? delete b[e] : b[e] = a;\n };\n\n b._stringRef = e;\n return b;\n }\n\n if (\"string\" !== typeof a) throw Error(y(284));\n if (!c._owner) throw Error(y(290, a));\n }\n\n return a;\n}\n\nfunction Rg(a, b) {\n if (\"textarea\" !== a.type) throw Error(y(31, \"[object Object]\" === Object.prototype.toString.call(b) ? \"object with keys {\" + Object.keys(b).join(\", \") + \"}\" : b));\n}\n\nfunction Sg(a) {\n function b(b, c) {\n if (a) {\n var d = b.lastEffect;\n null !== d ? (d.nextEffect = c, b.lastEffect = c) : b.firstEffect = b.lastEffect = c;\n c.nextEffect = null;\n c.flags = 8;\n }\n }\n\n function c(c, d) {\n if (!a) return null;\n\n for (; null !== d;) {\n b(c, d), d = d.sibling;\n }\n\n return null;\n }\n\n function d(a, b) {\n for (a = new Map(); null !== b;) {\n null !== b.key ? a.set(b.key, b) : a.set(b.index, b), b = b.sibling;\n }\n\n return a;\n }\n\n function e(a, b) {\n a = Tg(a, b);\n a.index = 0;\n a.sibling = null;\n return a;\n }\n\n function f(b, c, d) {\n b.index = d;\n if (!a) return c;\n d = b.alternate;\n if (null !== d) return d = d.index, d < c ? (b.flags = 2, c) : d;\n b.flags = 2;\n return c;\n }\n\n function g(b) {\n a && null === b.alternate && (b.flags = 2);\n return b;\n }\n\n function h(a, b, c, d) {\n if (null === b || 6 !== b.tag) return b = Ug(c, a.mode, d), b.return = a, b;\n b = e(b, c);\n b.return = a;\n return b;\n }\n\n function k(a, b, c, d) {\n if (null !== b && b.elementType === c.type) return d = e(b, c.props), d.ref = Qg(a, b, c), d.return = a, d;\n d = Vg(c.type, c.key, c.props, null, a.mode, d);\n d.ref = Qg(a, b, c);\n d.return = a;\n return d;\n }\n\n function l(a, b, c, d) {\n if (null === b || 4 !== b.tag || b.stateNode.containerInfo !== c.containerInfo || b.stateNode.implementation !== c.implementation) return b = Wg(c, a.mode, d), b.return = a, b;\n b = e(b, c.children || []);\n b.return = a;\n return b;\n }\n\n function n(a, b, c, d, f) {\n if (null === b || 7 !== b.tag) return b = Xg(c, a.mode, d, f), b.return = a, b;\n b = e(b, c);\n b.return = a;\n return b;\n }\n\n function A(a, b, c) {\n if (\"string\" === typeof b || \"number\" === typeof b) return b = Ug(\"\" + b, a.mode, c), b.return = a, b;\n\n if (\"object\" === _typeof(b) && null !== b) {\n switch (b.$$typeof) {\n case sa:\n return c = Vg(b.type, b.key, b.props, null, a.mode, c), c.ref = Qg(a, null, b), c.return = a, c;\n\n case ta:\n return b = Wg(b, a.mode, c), b.return = a, b;\n }\n\n if (Pg(b) || La(b)) return b = Xg(b, a.mode, c, null), b.return = a, b;\n Rg(a, b);\n }\n\n return null;\n }\n\n function p(a, b, c, d) {\n var e = null !== b ? b.key : null;\n if (\"string\" === typeof c || \"number\" === typeof c) return null !== e ? null : h(a, b, \"\" + c, d);\n\n if (\"object\" === _typeof(c) && null !== c) {\n switch (c.$$typeof) {\n case sa:\n return c.key === e ? c.type === ua ? n(a, b, c.props.children, d, e) : k(a, b, c, d) : null;\n\n case ta:\n return c.key === e ? l(a, b, c, d) : null;\n }\n\n if (Pg(c) || La(c)) return null !== e ? null : n(a, b, c, d, null);\n Rg(a, c);\n }\n\n return null;\n }\n\n function C(a, b, c, d, e) {\n if (\"string\" === typeof d || \"number\" === typeof d) return a = a.get(c) || null, h(b, a, \"\" + d, e);\n\n if (\"object\" === _typeof(d) && null !== d) {\n switch (d.$$typeof) {\n case sa:\n return a = a.get(null === d.key ? c : d.key) || null, d.type === ua ? n(b, a, d.props.children, e, d.key) : k(b, a, d, e);\n\n case ta:\n return a = a.get(null === d.key ? c : d.key) || null, l(b, a, d, e);\n }\n\n if (Pg(d) || La(d)) return a = a.get(c) || null, n(b, a, d, e, null);\n Rg(b, d);\n }\n\n return null;\n }\n\n function x(e, g, h, k) {\n for (var l = null, t = null, u = g, z = g = 0, q = null; null !== u && z < h.length; z++) {\n u.index > z ? (q = u, u = null) : q = u.sibling;\n var n = p(e, u, h[z], k);\n\n if (null === n) {\n null === u && (u = q);\n break;\n }\n\n a && u && null === n.alternate && b(e, u);\n g = f(n, g, z);\n null === t ? l = n : t.sibling = n;\n t = n;\n u = q;\n }\n\n if (z === h.length) return c(e, u), l;\n\n if (null === u) {\n for (; z < h.length; z++) {\n u = A(e, h[z], k), null !== u && (g = f(u, g, z), null === t ? l = u : t.sibling = u, t = u);\n }\n\n return l;\n }\n\n for (u = d(e, u); z < h.length; z++) {\n q = C(u, e, z, h[z], k), null !== q && (a && null !== q.alternate && u.delete(null === q.key ? z : q.key), g = f(q, g, z), null === t ? l = q : t.sibling = q, t = q);\n }\n\n a && u.forEach(function (a) {\n return b(e, a);\n });\n return l;\n }\n\n function w(e, g, h, k) {\n var l = La(h);\n if (\"function\" !== typeof l) throw Error(y(150));\n h = l.call(h);\n if (null == h) throw Error(y(151));\n\n for (var t = l = null, u = g, z = g = 0, q = null, n = h.next(); null !== u && !n.done; z++, n = h.next()) {\n u.index > z ? (q = u, u = null) : q = u.sibling;\n var w = p(e, u, n.value, k);\n\n if (null === w) {\n null === u && (u = q);\n break;\n }\n\n a && u && null === w.alternate && b(e, u);\n g = f(w, g, z);\n null === t ? l = w : t.sibling = w;\n t = w;\n u = q;\n }\n\n if (n.done) return c(e, u), l;\n\n if (null === u) {\n for (; !n.done; z++, n = h.next()) {\n n = A(e, n.value, k), null !== n && (g = f(n, g, z), null === t ? l = n : t.sibling = n, t = n);\n }\n\n return l;\n }\n\n for (u = d(e, u); !n.done; z++, n = h.next()) {\n n = C(u, e, z, n.value, k), null !== n && (a && null !== n.alternate && u.delete(null === n.key ? z : n.key), g = f(n, g, z), null === t ? l = n : t.sibling = n, t = n);\n }\n\n a && u.forEach(function (a) {\n return b(e, a);\n });\n return l;\n }\n\n return function (a, d, f, h) {\n var k = \"object\" === _typeof(f) && null !== f && f.type === ua && null === f.key;\n k && (f = f.props.children);\n var l = \"object\" === _typeof(f) && null !== f;\n if (l) switch (f.$$typeof) {\n case sa:\n a: {\n l = f.key;\n\n for (k = d; null !== k;) {\n if (k.key === l) {\n switch (k.tag) {\n case 7:\n if (f.type === ua) {\n c(a, k.sibling);\n d = e(k, f.props.children);\n d.return = a;\n a = d;\n break a;\n }\n\n break;\n\n default:\n if (k.elementType === f.type) {\n c(a, k.sibling);\n d = e(k, f.props);\n d.ref = Qg(a, k, f);\n d.return = a;\n a = d;\n break a;\n }\n\n }\n\n c(a, k);\n break;\n } else b(a, k);\n\n k = k.sibling;\n }\n\n f.type === ua ? (d = Xg(f.props.children, a.mode, h, f.key), d.return = a, a = d) : (h = Vg(f.type, f.key, f.props, null, a.mode, h), h.ref = Qg(a, d, f), h.return = a, a = h);\n }\n\n return g(a);\n\n case ta:\n a: {\n for (k = f.key; null !== d;) {\n if (d.key === k) {\n if (4 === d.tag && d.stateNode.containerInfo === f.containerInfo && d.stateNode.implementation === f.implementation) {\n c(a, d.sibling);\n d = e(d, f.children || []);\n d.return = a;\n a = d;\n break a;\n } else {\n c(a, d);\n break;\n }\n } else b(a, d);\n d = d.sibling;\n }\n\n d = Wg(f, a.mode, h);\n d.return = a;\n a = d;\n }\n\n return g(a);\n }\n if (\"string\" === typeof f || \"number\" === typeof f) return f = \"\" + f, null !== d && 6 === d.tag ? (c(a, d.sibling), d = e(d, f), d.return = a, a = d) : (c(a, d), d = Ug(f, a.mode, h), d.return = a, a = d), g(a);\n if (Pg(f)) return x(a, d, f, h);\n if (La(f)) return w(a, d, f, h);\n l && Rg(a, f);\n if (\"undefined\" === typeof f && !k) switch (a.tag) {\n case 1:\n case 22:\n case 0:\n case 11:\n case 15:\n throw Error(y(152, Ra(a.type) || \"Component\"));\n }\n return c(a, d);\n };\n}\n\nvar Yg = Sg(!0),\n Zg = Sg(!1),\n $g = {},\n ah = Bf($g),\n bh = Bf($g),\n ch = Bf($g);\n\nfunction dh(a) {\n if (a === $g) throw Error(y(174));\n return a;\n}\n\nfunction eh(a, b) {\n I(ch, b);\n I(bh, a);\n I(ah, $g);\n a = b.nodeType;\n\n switch (a) {\n case 9:\n case 11:\n b = (b = b.documentElement) ? b.namespaceURI : mb(null, \"\");\n break;\n\n default:\n a = 8 === a ? b.parentNode : b, b = a.namespaceURI || null, a = a.tagName, b = mb(b, a);\n }\n\n H(ah);\n I(ah, b);\n}\n\nfunction fh() {\n H(ah);\n H(bh);\n H(ch);\n}\n\nfunction gh(a) {\n dh(ch.current);\n var b = dh(ah.current);\n var c = mb(b, a.type);\n b !== c && (I(bh, a), I(ah, c));\n}\n\nfunction hh(a) {\n bh.current === a && (H(ah), H(bh));\n}\n\nvar P = Bf(0);\n\nfunction ih(a) {\n for (var b = a; null !== b;) {\n if (13 === b.tag) {\n var c = b.memoizedState;\n if (null !== c && (c = c.dehydrated, null === c || \"$?\" === c.data || \"$!\" === c.data)) return b;\n } else if (19 === b.tag && void 0 !== b.memoizedProps.revealOrder) {\n if (0 !== (b.flags & 64)) return b;\n } else if (null !== b.child) {\n b.child.return = b;\n b = b.child;\n continue;\n }\n\n if (b === a) break;\n\n for (; null === b.sibling;) {\n if (null === b.return || b.return === a) return null;\n b = b.return;\n }\n\n b.sibling.return = b.return;\n b = b.sibling;\n }\n\n return null;\n}\n\nvar jh = null,\n kh = null,\n lh = !1;\n\nfunction mh(a, b) {\n var c = nh(5, null, null, 0);\n c.elementType = \"DELETED\";\n c.type = \"DELETED\";\n c.stateNode = b;\n c.return = a;\n c.flags = 8;\n null !== a.lastEffect ? (a.lastEffect.nextEffect = c, a.lastEffect = c) : a.firstEffect = a.lastEffect = c;\n}\n\nfunction oh(a, b) {\n switch (a.tag) {\n case 5:\n var c = a.type;\n b = 1 !== b.nodeType || c.toLowerCase() !== b.nodeName.toLowerCase() ? null : b;\n return null !== b ? (a.stateNode = b, !0) : !1;\n\n case 6:\n return b = \"\" === a.pendingProps || 3 !== b.nodeType ? null : b, null !== b ? (a.stateNode = b, !0) : !1;\n\n case 13:\n return !1;\n\n default:\n return !1;\n }\n}\n\nfunction ph(a) {\n if (lh) {\n var b = kh;\n\n if (b) {\n var c = b;\n\n if (!oh(a, b)) {\n b = rf(c.nextSibling);\n\n if (!b || !oh(a, b)) {\n a.flags = a.flags & -1025 | 2;\n lh = !1;\n jh = a;\n return;\n }\n\n mh(jh, c);\n }\n\n jh = a;\n kh = rf(b.firstChild);\n } else a.flags = a.flags & -1025 | 2, lh = !1, jh = a;\n }\n}\n\nfunction qh(a) {\n for (a = a.return; null !== a && 5 !== a.tag && 3 !== a.tag && 13 !== a.tag;) {\n a = a.return;\n }\n\n jh = a;\n}\n\nfunction rh(a) {\n if (a !== jh) return !1;\n if (!lh) return qh(a), lh = !0, !1;\n var b = a.type;\n if (5 !== a.tag || \"head\" !== b && \"body\" !== b && !nf(b, a.memoizedProps)) for (b = kh; b;) {\n mh(a, b), b = rf(b.nextSibling);\n }\n qh(a);\n\n if (13 === a.tag) {\n a = a.memoizedState;\n a = null !== a ? a.dehydrated : null;\n if (!a) throw Error(y(317));\n\n a: {\n a = a.nextSibling;\n\n for (b = 0; a;) {\n if (8 === a.nodeType) {\n var c = a.data;\n\n if (\"/$\" === c) {\n if (0 === b) {\n kh = rf(a.nextSibling);\n break a;\n }\n\n b--;\n } else \"$\" !== c && \"$!\" !== c && \"$?\" !== c || b++;\n }\n\n a = a.nextSibling;\n }\n\n kh = null;\n }\n } else kh = jh ? rf(a.stateNode.nextSibling) : null;\n\n return !0;\n}\n\nfunction sh() {\n kh = jh = null;\n lh = !1;\n}\n\nvar th = [];\n\nfunction uh() {\n for (var a = 0; a < th.length; a++) {\n th[a]._workInProgressVersionPrimary = null;\n }\n\n th.length = 0;\n}\n\nvar vh = ra.ReactCurrentDispatcher,\n wh = ra.ReactCurrentBatchConfig,\n xh = 0,\n R = null,\n S = null,\n T = null,\n yh = !1,\n zh = !1;\n\nfunction Ah() {\n throw Error(y(321));\n}\n\nfunction Bh(a, b) {\n if (null === b) return !1;\n\n for (var c = 0; c < b.length && c < a.length; c++) {\n if (!He(a[c], b[c])) return !1;\n }\n\n return !0;\n}\n\nfunction Ch(a, b, c, d, e, f) {\n xh = f;\n R = b;\n b.memoizedState = null;\n b.updateQueue = null;\n b.lanes = 0;\n vh.current = null === a || null === a.memoizedState ? Dh : Eh;\n a = c(d, e);\n\n if (zh) {\n f = 0;\n\n do {\n zh = !1;\n if (!(25 > f)) throw Error(y(301));\n f += 1;\n T = S = null;\n b.updateQueue = null;\n vh.current = Fh;\n a = c(d, e);\n } while (zh);\n }\n\n vh.current = Gh;\n b = null !== S && null !== S.next;\n xh = 0;\n T = S = R = null;\n yh = !1;\n if (b) throw Error(y(300));\n return a;\n}\n\nfunction Hh() {\n var a = {\n memoizedState: null,\n baseState: null,\n baseQueue: null,\n queue: null,\n next: null\n };\n null === T ? R.memoizedState = T = a : T = T.next = a;\n return T;\n}\n\nfunction Ih() {\n if (null === S) {\n var a = R.alternate;\n a = null !== a ? a.memoizedState : null;\n } else a = S.next;\n\n var b = null === T ? R.memoizedState : T.next;\n if (null !== b) T = b, S = a;else {\n if (null === a) throw Error(y(310));\n S = a;\n a = {\n memoizedState: S.memoizedState,\n baseState: S.baseState,\n baseQueue: S.baseQueue,\n queue: S.queue,\n next: null\n };\n null === T ? R.memoizedState = T = a : T = T.next = a;\n }\n return T;\n}\n\nfunction Jh(a, b) {\n return \"function\" === typeof b ? b(a) : b;\n}\n\nfunction Kh(a) {\n var b = Ih(),\n c = b.queue;\n if (null === c) throw Error(y(311));\n c.lastRenderedReducer = a;\n var d = S,\n e = d.baseQueue,\n f = c.pending;\n\n if (null !== f) {\n if (null !== e) {\n var g = e.next;\n e.next = f.next;\n f.next = g;\n }\n\n d.baseQueue = e = f;\n c.pending = null;\n }\n\n if (null !== e) {\n e = e.next;\n d = d.baseState;\n var h = g = f = null,\n k = e;\n\n do {\n var l = k.lane;\n if ((xh & l) === l) null !== h && (h = h.next = {\n lane: 0,\n action: k.action,\n eagerReducer: k.eagerReducer,\n eagerState: k.eagerState,\n next: null\n }), d = k.eagerReducer === a ? k.eagerState : a(d, k.action);else {\n var n = {\n lane: l,\n action: k.action,\n eagerReducer: k.eagerReducer,\n eagerState: k.eagerState,\n next: null\n };\n null === h ? (g = h = n, f = d) : h = h.next = n;\n R.lanes |= l;\n Dg |= l;\n }\n k = k.next;\n } while (null !== k && k !== e);\n\n null === h ? f = d : h.next = g;\n He(d, b.memoizedState) || (ug = !0);\n b.memoizedState = d;\n b.baseState = f;\n b.baseQueue = h;\n c.lastRenderedState = d;\n }\n\n return [b.memoizedState, c.dispatch];\n}\n\nfunction Lh(a) {\n var b = Ih(),\n c = b.queue;\n if (null === c) throw Error(y(311));\n c.lastRenderedReducer = a;\n var d = c.dispatch,\n e = c.pending,\n f = b.memoizedState;\n\n if (null !== e) {\n c.pending = null;\n var g = e = e.next;\n\n do {\n f = a(f, g.action), g = g.next;\n } while (g !== e);\n\n He(f, b.memoizedState) || (ug = !0);\n b.memoizedState = f;\n null === b.baseQueue && (b.baseState = f);\n c.lastRenderedState = f;\n }\n\n return [f, d];\n}\n\nfunction Mh(a, b, c) {\n var d = b._getVersion;\n d = d(b._source);\n var e = b._workInProgressVersionPrimary;\n if (null !== e) a = e === d;else if (a = a.mutableReadLanes, a = (xh & a) === a) b._workInProgressVersionPrimary = d, th.push(b);\n if (a) return c(b._source);\n th.push(b);\n throw Error(y(350));\n}\n\nfunction Nh(a, b, c, d) {\n var e = U;\n if (null === e) throw Error(y(349));\n var f = b._getVersion,\n g = f(b._source),\n h = vh.current,\n k = h.useState(function () {\n return Mh(e, b, c);\n }),\n l = k[1],\n n = k[0];\n k = T;\n var A = a.memoizedState,\n p = A.refs,\n C = p.getSnapshot,\n x = A.source;\n A = A.subscribe;\n var w = R;\n a.memoizedState = {\n refs: p,\n source: b,\n subscribe: d\n };\n h.useEffect(function () {\n p.getSnapshot = c;\n p.setSnapshot = l;\n var a = f(b._source);\n\n if (!He(g, a)) {\n a = c(b._source);\n He(n, a) || (l(a), a = Ig(w), e.mutableReadLanes |= a & e.pendingLanes);\n a = e.mutableReadLanes;\n e.entangledLanes |= a;\n\n for (var d = e.entanglements, h = a; 0 < h;) {\n var k = 31 - Vc(h),\n v = 1 << k;\n d[k] |= a;\n h &= ~v;\n }\n }\n }, [c, b, d]);\n h.useEffect(function () {\n return d(b._source, function () {\n var a = p.getSnapshot,\n c = p.setSnapshot;\n\n try {\n c(a(b._source));\n var d = Ig(w);\n e.mutableReadLanes |= d & e.pendingLanes;\n } catch (q) {\n c(function () {\n throw q;\n });\n }\n });\n }, [b, d]);\n He(C, c) && He(x, b) && He(A, d) || (a = {\n pending: null,\n dispatch: null,\n lastRenderedReducer: Jh,\n lastRenderedState: n\n }, a.dispatch = l = Oh.bind(null, R, a), k.queue = a, k.baseQueue = null, n = Mh(e, b, c), k.memoizedState = k.baseState = n);\n return n;\n}\n\nfunction Ph(a, b, c) {\n var d = Ih();\n return Nh(d, a, b, c);\n}\n\nfunction Qh(a) {\n var b = Hh();\n \"function\" === typeof a && (a = a());\n b.memoizedState = b.baseState = a;\n a = b.queue = {\n pending: null,\n dispatch: null,\n lastRenderedReducer: Jh,\n lastRenderedState: a\n };\n a = a.dispatch = Oh.bind(null, R, a);\n return [b.memoizedState, a];\n}\n\nfunction Rh(a, b, c, d) {\n a = {\n tag: a,\n create: b,\n destroy: c,\n deps: d,\n next: null\n };\n b = R.updateQueue;\n null === b ? (b = {\n lastEffect: null\n }, R.updateQueue = b, b.lastEffect = a.next = a) : (c = b.lastEffect, null === c ? b.lastEffect = a.next = a : (d = c.next, c.next = a, a.next = d, b.lastEffect = a));\n return a;\n}\n\nfunction Sh(a) {\n var b = Hh();\n a = {\n current: a\n };\n return b.memoizedState = a;\n}\n\nfunction Th() {\n return Ih().memoizedState;\n}\n\nfunction Uh(a, b, c, d) {\n var e = Hh();\n R.flags |= a;\n e.memoizedState = Rh(1 | b, c, void 0, void 0 === d ? null : d);\n}\n\nfunction Vh(a, b, c, d) {\n var e = Ih();\n d = void 0 === d ? null : d;\n var f = void 0;\n\n if (null !== S) {\n var g = S.memoizedState;\n f = g.destroy;\n\n if (null !== d && Bh(d, g.deps)) {\n Rh(b, c, f, d);\n return;\n }\n }\n\n R.flags |= a;\n e.memoizedState = Rh(1 | b, c, f, d);\n}\n\nfunction Wh(a, b) {\n return Uh(516, 4, a, b);\n}\n\nfunction Xh(a, b) {\n return Vh(516, 4, a, b);\n}\n\nfunction Yh(a, b) {\n return Vh(4, 2, a, b);\n}\n\nfunction Zh(a, b) {\n if (\"function\" === typeof b) return a = a(), b(a), function () {\n b(null);\n };\n if (null !== b && void 0 !== b) return a = a(), b.current = a, function () {\n b.current = null;\n };\n}\n\nfunction $h(a, b, c) {\n c = null !== c && void 0 !== c ? c.concat([a]) : null;\n return Vh(4, 2, Zh.bind(null, b, a), c);\n}\n\nfunction ai() {}\n\nfunction bi(a, b) {\n var c = Ih();\n b = void 0 === b ? null : b;\n var d = c.memoizedState;\n if (null !== d && null !== b && Bh(b, d[1])) return d[0];\n c.memoizedState = [a, b];\n return a;\n}\n\nfunction ci(a, b) {\n var c = Ih();\n b = void 0 === b ? null : b;\n var d = c.memoizedState;\n if (null !== d && null !== b && Bh(b, d[1])) return d[0];\n a = a();\n c.memoizedState = [a, b];\n return a;\n}\n\nfunction di(a, b) {\n var c = eg();\n gg(98 > c ? 98 : c, function () {\n a(!0);\n });\n gg(97 < c ? 97 : c, function () {\n var c = wh.transition;\n wh.transition = 1;\n\n try {\n a(!1), b();\n } finally {\n wh.transition = c;\n }\n });\n}\n\nfunction Oh(a, b, c) {\n var d = Hg(),\n e = Ig(a),\n f = {\n lane: e,\n action: c,\n eagerReducer: null,\n eagerState: null,\n next: null\n },\n g = b.pending;\n null === g ? f.next = f : (f.next = g.next, g.next = f);\n b.pending = f;\n g = a.alternate;\n if (a === R || null !== g && g === R) zh = yh = !0;else {\n if (0 === a.lanes && (null === g || 0 === g.lanes) && (g = b.lastRenderedReducer, null !== g)) try {\n var h = b.lastRenderedState,\n k = g(h, c);\n f.eagerReducer = g;\n f.eagerState = k;\n if (He(k, h)) return;\n } catch (l) {} finally {}\n Jg(a, e, d);\n }\n}\n\nvar Gh = {\n readContext: vg,\n useCallback: Ah,\n useContext: Ah,\n useEffect: Ah,\n useImperativeHandle: Ah,\n useLayoutEffect: Ah,\n useMemo: Ah,\n useReducer: Ah,\n useRef: Ah,\n useState: Ah,\n useDebugValue: Ah,\n useDeferredValue: Ah,\n useTransition: Ah,\n useMutableSource: Ah,\n useOpaqueIdentifier: Ah,\n unstable_isNewReconciler: !1\n},\n Dh = {\n readContext: vg,\n useCallback: function useCallback(a, b) {\n Hh().memoizedState = [a, void 0 === b ? null : b];\n return a;\n },\n useContext: vg,\n useEffect: Wh,\n useImperativeHandle: function useImperativeHandle(a, b, c) {\n c = null !== c && void 0 !== c ? c.concat([a]) : null;\n return Uh(4, 2, Zh.bind(null, b, a), c);\n },\n useLayoutEffect: function useLayoutEffect(a, b) {\n return Uh(4, 2, a, b);\n },\n useMemo: function useMemo(a, b) {\n var c = Hh();\n b = void 0 === b ? null : b;\n a = a();\n c.memoizedState = [a, b];\n return a;\n },\n useReducer: function useReducer(a, b, c) {\n var d = Hh();\n b = void 0 !== c ? c(b) : b;\n d.memoizedState = d.baseState = b;\n a = d.queue = {\n pending: null,\n dispatch: null,\n lastRenderedReducer: a,\n lastRenderedState: b\n };\n a = a.dispatch = Oh.bind(null, R, a);\n return [d.memoizedState, a];\n },\n useRef: Sh,\n useState: Qh,\n useDebugValue: ai,\n useDeferredValue: function useDeferredValue(a) {\n var b = Qh(a),\n c = b[0],\n d = b[1];\n Wh(function () {\n var b = wh.transition;\n wh.transition = 1;\n\n try {\n d(a);\n } finally {\n wh.transition = b;\n }\n }, [a]);\n return c;\n },\n useTransition: function useTransition() {\n var a = Qh(!1),\n b = a[0];\n a = di.bind(null, a[1]);\n Sh(a);\n return [a, b];\n },\n useMutableSource: function useMutableSource(a, b, c) {\n var d = Hh();\n d.memoizedState = {\n refs: {\n getSnapshot: b,\n setSnapshot: null\n },\n source: a,\n subscribe: c\n };\n return Nh(d, a, b, c);\n },\n useOpaqueIdentifier: function useOpaqueIdentifier() {\n if (lh) {\n var a = !1,\n b = uf(function () {\n a || (a = !0, c(\"r:\" + (tf++).toString(36)));\n throw Error(y(355));\n }),\n c = Qh(b)[1];\n 0 === (R.mode & 2) && (R.flags |= 516, Rh(5, function () {\n c(\"r:\" + (tf++).toString(36));\n }, void 0, null));\n return b;\n }\n\n b = \"r:\" + (tf++).toString(36);\n Qh(b);\n return b;\n },\n unstable_isNewReconciler: !1\n},\n Eh = {\n readContext: vg,\n useCallback: bi,\n useContext: vg,\n useEffect: Xh,\n useImperativeHandle: $h,\n useLayoutEffect: Yh,\n useMemo: ci,\n useReducer: Kh,\n useRef: Th,\n useState: function useState() {\n return Kh(Jh);\n },\n useDebugValue: ai,\n useDeferredValue: function useDeferredValue(a) {\n var b = Kh(Jh),\n c = b[0],\n d = b[1];\n Xh(function () {\n var b = wh.transition;\n wh.transition = 1;\n\n try {\n d(a);\n } finally {\n wh.transition = b;\n }\n }, [a]);\n return c;\n },\n useTransition: function useTransition() {\n var a = Kh(Jh)[0];\n return [Th().current, a];\n },\n useMutableSource: Ph,\n useOpaqueIdentifier: function useOpaqueIdentifier() {\n return Kh(Jh)[0];\n },\n unstable_isNewReconciler: !1\n},\n Fh = {\n readContext: vg,\n useCallback: bi,\n useContext: vg,\n useEffect: Xh,\n useImperativeHandle: $h,\n useLayoutEffect: Yh,\n useMemo: ci,\n useReducer: Lh,\n useRef: Th,\n useState: function useState() {\n return Lh(Jh);\n },\n useDebugValue: ai,\n useDeferredValue: function useDeferredValue(a) {\n var b = Lh(Jh),\n c = b[0],\n d = b[1];\n Xh(function () {\n var b = wh.transition;\n wh.transition = 1;\n\n try {\n d(a);\n } finally {\n wh.transition = b;\n }\n }, [a]);\n return c;\n },\n useTransition: function useTransition() {\n var a = Lh(Jh)[0];\n return [Th().current, a];\n },\n useMutableSource: Ph,\n useOpaqueIdentifier: function useOpaqueIdentifier() {\n return Lh(Jh)[0];\n },\n unstable_isNewReconciler: !1\n},\n ei = ra.ReactCurrentOwner,\n ug = !1;\n\nfunction fi(a, b, c, d) {\n b.child = null === a ? Zg(b, null, c, d) : Yg(b, a.child, c, d);\n}\n\nfunction gi(a, b, c, d, e) {\n c = c.render;\n var f = b.ref;\n tg(b, e);\n d = Ch(a, b, c, d, f, e);\n if (null !== a && !ug) return b.updateQueue = a.updateQueue, b.flags &= -517, a.lanes &= ~e, hi(a, b, e);\n b.flags |= 1;\n fi(a, b, d, e);\n return b.child;\n}\n\nfunction ii(a, b, c, d, e, f) {\n if (null === a) {\n var g = c.type;\n if (\"function\" === typeof g && !ji(g) && void 0 === g.defaultProps && null === c.compare && void 0 === c.defaultProps) return b.tag = 15, b.type = g, ki(a, b, g, d, e, f);\n a = Vg(c.type, null, d, b, b.mode, f);\n a.ref = b.ref;\n a.return = b;\n return b.child = a;\n }\n\n g = a.child;\n if (0 === (e & f) && (e = g.memoizedProps, c = c.compare, c = null !== c ? c : Je, c(e, d) && a.ref === b.ref)) return hi(a, b, f);\n b.flags |= 1;\n a = Tg(g, d);\n a.ref = b.ref;\n a.return = b;\n return b.child = a;\n}\n\nfunction ki(a, b, c, d, e, f) {\n if (null !== a && Je(a.memoizedProps, d) && a.ref === b.ref) if (ug = !1, 0 !== (f & e)) 0 !== (a.flags & 16384) && (ug = !0);else return b.lanes = a.lanes, hi(a, b, f);\n return li(a, b, c, d, f);\n}\n\nfunction mi(a, b, c) {\n var d = b.pendingProps,\n e = d.children,\n f = null !== a ? a.memoizedState : null;\n if (\"hidden\" === d.mode || \"unstable-defer-without-hiding\" === d.mode) {\n if (0 === (b.mode & 4)) b.memoizedState = {\n baseLanes: 0\n }, ni(b, c);else if (0 !== (c & 1073741824)) b.memoizedState = {\n baseLanes: 0\n }, ni(b, null !== f ? f.baseLanes : c);else return a = null !== f ? f.baseLanes | c : c, b.lanes = b.childLanes = 1073741824, b.memoizedState = {\n baseLanes: a\n }, ni(b, a), null;\n } else null !== f ? (d = f.baseLanes | c, b.memoizedState = null) : d = c, ni(b, d);\n fi(a, b, e, c);\n return b.child;\n}\n\nfunction oi(a, b) {\n var c = b.ref;\n if (null === a && null !== c || null !== a && a.ref !== c) b.flags |= 128;\n}\n\nfunction li(a, b, c, d, e) {\n var f = Ff(c) ? Df : M.current;\n f = Ef(b, f);\n tg(b, e);\n c = Ch(a, b, c, d, f, e);\n if (null !== a && !ug) return b.updateQueue = a.updateQueue, b.flags &= -517, a.lanes &= ~e, hi(a, b, e);\n b.flags |= 1;\n fi(a, b, c, e);\n return b.child;\n}\n\nfunction pi(a, b, c, d, e) {\n if (Ff(c)) {\n var f = !0;\n Jf(b);\n } else f = !1;\n\n tg(b, e);\n if (null === b.stateNode) null !== a && (a.alternate = null, b.alternate = null, b.flags |= 2), Mg(b, c, d), Og(b, c, d, e), d = !0;else if (null === a) {\n var g = b.stateNode,\n h = b.memoizedProps;\n g.props = h;\n var k = g.context,\n l = c.contextType;\n \"object\" === _typeof(l) && null !== l ? l = vg(l) : (l = Ff(c) ? Df : M.current, l = Ef(b, l));\n var n = c.getDerivedStateFromProps,\n A = \"function\" === typeof n || \"function\" === typeof g.getSnapshotBeforeUpdate;\n A || \"function\" !== typeof g.UNSAFE_componentWillReceiveProps && \"function\" !== typeof g.componentWillReceiveProps || (h !== d || k !== l) && Ng(b, g, d, l);\n wg = !1;\n var p = b.memoizedState;\n g.state = p;\n Cg(b, d, g, e);\n k = b.memoizedState;\n h !== d || p !== k || N.current || wg ? (\"function\" === typeof n && (Gg(b, c, n, d), k = b.memoizedState), (h = wg || Lg(b, c, h, d, p, k, l)) ? (A || \"function\" !== typeof g.UNSAFE_componentWillMount && \"function\" !== typeof g.componentWillMount || (\"function\" === typeof g.componentWillMount && g.componentWillMount(), \"function\" === typeof g.UNSAFE_componentWillMount && g.UNSAFE_componentWillMount()), \"function\" === typeof g.componentDidMount && (b.flags |= 4)) : (\"function\" === typeof g.componentDidMount && (b.flags |= 4), b.memoizedProps = d, b.memoizedState = k), g.props = d, g.state = k, g.context = l, d = h) : (\"function\" === typeof g.componentDidMount && (b.flags |= 4), d = !1);\n } else {\n g = b.stateNode;\n yg(a, b);\n h = b.memoizedProps;\n l = b.type === b.elementType ? h : lg(b.type, h);\n g.props = l;\n A = b.pendingProps;\n p = g.context;\n k = c.contextType;\n \"object\" === _typeof(k) && null !== k ? k = vg(k) : (k = Ff(c) ? Df : M.current, k = Ef(b, k));\n var C = c.getDerivedStateFromProps;\n (n = \"function\" === typeof C || \"function\" === typeof g.getSnapshotBeforeUpdate) || \"function\" !== typeof g.UNSAFE_componentWillReceiveProps && \"function\" !== typeof g.componentWillReceiveProps || (h !== A || p !== k) && Ng(b, g, d, k);\n wg = !1;\n p = b.memoizedState;\n g.state = p;\n Cg(b, d, g, e);\n var x = b.memoizedState;\n h !== A || p !== x || N.current || wg ? (\"function\" === typeof C && (Gg(b, c, C, d), x = b.memoizedState), (l = wg || Lg(b, c, l, d, p, x, k)) ? (n || \"function\" !== typeof g.UNSAFE_componentWillUpdate && \"function\" !== typeof g.componentWillUpdate || (\"function\" === typeof g.componentWillUpdate && g.componentWillUpdate(d, x, k), \"function\" === typeof g.UNSAFE_componentWillUpdate && g.UNSAFE_componentWillUpdate(d, x, k)), \"function\" === typeof g.componentDidUpdate && (b.flags |= 4), \"function\" === typeof g.getSnapshotBeforeUpdate && (b.flags |= 256)) : (\"function\" !== typeof g.componentDidUpdate || h === a.memoizedProps && p === a.memoizedState || (b.flags |= 4), \"function\" !== typeof g.getSnapshotBeforeUpdate || h === a.memoizedProps && p === a.memoizedState || (b.flags |= 256), b.memoizedProps = d, b.memoizedState = x), g.props = d, g.state = x, g.context = k, d = l) : (\"function\" !== typeof g.componentDidUpdate || h === a.memoizedProps && p === a.memoizedState || (b.flags |= 4), \"function\" !== typeof g.getSnapshotBeforeUpdate || h === a.memoizedProps && p === a.memoizedState || (b.flags |= 256), d = !1);\n }\n return qi(a, b, c, d, f, e);\n}\n\nfunction qi(a, b, c, d, e, f) {\n oi(a, b);\n var g = 0 !== (b.flags & 64);\n if (!d && !g) return e && Kf(b, c, !1), hi(a, b, f);\n d = b.stateNode;\n ei.current = b;\n var h = g && \"function\" !== typeof c.getDerivedStateFromError ? null : d.render();\n b.flags |= 1;\n null !== a && g ? (b.child = Yg(b, a.child, null, f), b.child = Yg(b, null, h, f)) : fi(a, b, h, f);\n b.memoizedState = d.state;\n e && Kf(b, c, !0);\n return b.child;\n}\n\nfunction ri(a) {\n var b = a.stateNode;\n b.pendingContext ? Hf(a, b.pendingContext, b.pendingContext !== b.context) : b.context && Hf(a, b.context, !1);\n eh(a, b.containerInfo);\n}\n\nvar si = {\n dehydrated: null,\n retryLane: 0\n};\n\nfunction ti(a, b, c) {\n var d = b.pendingProps,\n e = P.current,\n f = !1,\n g;\n (g = 0 !== (b.flags & 64)) || (g = null !== a && null === a.memoizedState ? !1 : 0 !== (e & 2));\n g ? (f = !0, b.flags &= -65) : null !== a && null === a.memoizedState || void 0 === d.fallback || !0 === d.unstable_avoidThisFallback || (e |= 1);\n I(P, e & 1);\n\n if (null === a) {\n void 0 !== d.fallback && ph(b);\n a = d.children;\n e = d.fallback;\n if (f) return a = ui(b, a, e, c), b.child.memoizedState = {\n baseLanes: c\n }, b.memoizedState = si, a;\n if (\"number\" === typeof d.unstable_expectedLoadTime) return a = ui(b, a, e, c), b.child.memoizedState = {\n baseLanes: c\n }, b.memoizedState = si, b.lanes = 33554432, a;\n c = vi({\n mode: \"visible\",\n children: a\n }, b.mode, c, null);\n c.return = b;\n return b.child = c;\n }\n\n if (null !== a.memoizedState) {\n if (f) return d = wi(a, b, d.children, d.fallback, c), f = b.child, e = a.child.memoizedState, f.memoizedState = null === e ? {\n baseLanes: c\n } : {\n baseLanes: e.baseLanes | c\n }, f.childLanes = a.childLanes & ~c, b.memoizedState = si, d;\n c = xi(a, b, d.children, c);\n b.memoizedState = null;\n return c;\n }\n\n if (f) return d = wi(a, b, d.children, d.fallback, c), f = b.child, e = a.child.memoizedState, f.memoizedState = null === e ? {\n baseLanes: c\n } : {\n baseLanes: e.baseLanes | c\n }, f.childLanes = a.childLanes & ~c, b.memoizedState = si, d;\n c = xi(a, b, d.children, c);\n b.memoizedState = null;\n return c;\n}\n\nfunction ui(a, b, c, d) {\n var e = a.mode,\n f = a.child;\n b = {\n mode: \"hidden\",\n children: b\n };\n 0 === (e & 2) && null !== f ? (f.childLanes = 0, f.pendingProps = b) : f = vi(b, e, 0, null);\n c = Xg(c, e, d, null);\n f.return = a;\n c.return = a;\n f.sibling = c;\n a.child = f;\n return c;\n}\n\nfunction xi(a, b, c, d) {\n var e = a.child;\n a = e.sibling;\n c = Tg(e, {\n mode: \"visible\",\n children: c\n });\n 0 === (b.mode & 2) && (c.lanes = d);\n c.return = b;\n c.sibling = null;\n null !== a && (a.nextEffect = null, a.flags = 8, b.firstEffect = b.lastEffect = a);\n return b.child = c;\n}\n\nfunction wi(a, b, c, d, e) {\n var f = b.mode,\n g = a.child;\n a = g.sibling;\n var h = {\n mode: \"hidden\",\n children: c\n };\n 0 === (f & 2) && b.child !== g ? (c = b.child, c.childLanes = 0, c.pendingProps = h, g = c.lastEffect, null !== g ? (b.firstEffect = c.firstEffect, b.lastEffect = g, g.nextEffect = null) : b.firstEffect = b.lastEffect = null) : c = Tg(g, h);\n null !== a ? d = Tg(a, d) : (d = Xg(d, f, e, null), d.flags |= 2);\n d.return = b;\n c.return = b;\n c.sibling = d;\n b.child = c;\n return d;\n}\n\nfunction yi(a, b) {\n a.lanes |= b;\n var c = a.alternate;\n null !== c && (c.lanes |= b);\n sg(a.return, b);\n}\n\nfunction zi(a, b, c, d, e, f) {\n var g = a.memoizedState;\n null === g ? a.memoizedState = {\n isBackwards: b,\n rendering: null,\n renderingStartTime: 0,\n last: d,\n tail: c,\n tailMode: e,\n lastEffect: f\n } : (g.isBackwards = b, g.rendering = null, g.renderingStartTime = 0, g.last = d, g.tail = c, g.tailMode = e, g.lastEffect = f);\n}\n\nfunction Ai(a, b, c) {\n var d = b.pendingProps,\n e = d.revealOrder,\n f = d.tail;\n fi(a, b, d.children, c);\n d = P.current;\n if (0 !== (d & 2)) d = d & 1 | 2, b.flags |= 64;else {\n if (null !== a && 0 !== (a.flags & 64)) a: for (a = b.child; null !== a;) {\n if (13 === a.tag) null !== a.memoizedState && yi(a, c);else if (19 === a.tag) yi(a, c);else if (null !== a.child) {\n a.child.return = a;\n a = a.child;\n continue;\n }\n if (a === b) break a;\n\n for (; null === a.sibling;) {\n if (null === a.return || a.return === b) break a;\n a = a.return;\n }\n\n a.sibling.return = a.return;\n a = a.sibling;\n }\n d &= 1;\n }\n I(P, d);\n if (0 === (b.mode & 2)) b.memoizedState = null;else switch (e) {\n case \"forwards\":\n c = b.child;\n\n for (e = null; null !== c;) {\n a = c.alternate, null !== a && null === ih(a) && (e = c), c = c.sibling;\n }\n\n c = e;\n null === c ? (e = b.child, b.child = null) : (e = c.sibling, c.sibling = null);\n zi(b, !1, e, c, f, b.lastEffect);\n break;\n\n case \"backwards\":\n c = null;\n e = b.child;\n\n for (b.child = null; null !== e;) {\n a = e.alternate;\n\n if (null !== a && null === ih(a)) {\n b.child = e;\n break;\n }\n\n a = e.sibling;\n e.sibling = c;\n c = e;\n e = a;\n }\n\n zi(b, !0, c, null, f, b.lastEffect);\n break;\n\n case \"together\":\n zi(b, !1, null, null, void 0, b.lastEffect);\n break;\n\n default:\n b.memoizedState = null;\n }\n return b.child;\n}\n\nfunction hi(a, b, c) {\n null !== a && (b.dependencies = a.dependencies);\n Dg |= b.lanes;\n\n if (0 !== (c & b.childLanes)) {\n if (null !== a && b.child !== a.child) throw Error(y(153));\n\n if (null !== b.child) {\n a = b.child;\n c = Tg(a, a.pendingProps);\n b.child = c;\n\n for (c.return = b; null !== a.sibling;) {\n a = a.sibling, c = c.sibling = Tg(a, a.pendingProps), c.return = b;\n }\n\n c.sibling = null;\n }\n\n return b.child;\n }\n\n return null;\n}\n\nvar Bi, Ci, Di, Ei;\n\nBi = function Bi(a, b) {\n for (var c = b.child; null !== c;) {\n if (5 === c.tag || 6 === c.tag) a.appendChild(c.stateNode);else if (4 !== c.tag && null !== c.child) {\n c.child.return = c;\n c = c.child;\n continue;\n }\n if (c === b) break;\n\n for (; null === c.sibling;) {\n if (null === c.return || c.return === b) return;\n c = c.return;\n }\n\n c.sibling.return = c.return;\n c = c.sibling;\n }\n};\n\nCi = function Ci() {};\n\nDi = function Di(a, b, c, d) {\n var e = a.memoizedProps;\n\n if (e !== d) {\n a = b.stateNode;\n dh(ah.current);\n var f = null;\n\n switch (c) {\n case \"input\":\n e = Ya(a, e);\n d = Ya(a, d);\n f = [];\n break;\n\n case \"option\":\n e = eb(a, e);\n d = eb(a, d);\n f = [];\n break;\n\n case \"select\":\n e = m({}, e, {\n value: void 0\n });\n d = m({}, d, {\n value: void 0\n });\n f = [];\n break;\n\n case \"textarea\":\n e = gb(a, e);\n d = gb(a, d);\n f = [];\n break;\n\n default:\n \"function\" !== typeof e.onClick && \"function\" === typeof d.onClick && (a.onclick = jf);\n }\n\n vb(c, d);\n var g;\n c = null;\n\n for (l in e) {\n if (!d.hasOwnProperty(l) && e.hasOwnProperty(l) && null != e[l]) if (\"style\" === l) {\n var h = e[l];\n\n for (g in h) {\n h.hasOwnProperty(g) && (c || (c = {}), c[g] = \"\");\n }\n } else \"dangerouslySetInnerHTML\" !== l && \"children\" !== l && \"suppressContentEditableWarning\" !== l && \"suppressHydrationWarning\" !== l && \"autoFocus\" !== l && (ca.hasOwnProperty(l) ? f || (f = []) : (f = f || []).push(l, null));\n }\n\n for (l in d) {\n var k = d[l];\n h = null != e ? e[l] : void 0;\n if (d.hasOwnProperty(l) && k !== h && (null != k || null != h)) if (\"style\" === l) {\n if (h) {\n for (g in h) {\n !h.hasOwnProperty(g) || k && k.hasOwnProperty(g) || (c || (c = {}), c[g] = \"\");\n }\n\n for (g in k) {\n k.hasOwnProperty(g) && h[g] !== k[g] && (c || (c = {}), c[g] = k[g]);\n }\n } else c || (f || (f = []), f.push(l, c)), c = k;\n } else \"dangerouslySetInnerHTML\" === l ? (k = k ? k.__html : void 0, h = h ? h.__html : void 0, null != k && h !== k && (f = f || []).push(l, k)) : \"children\" === l ? \"string\" !== typeof k && \"number\" !== typeof k || (f = f || []).push(l, \"\" + k) : \"suppressContentEditableWarning\" !== l && \"suppressHydrationWarning\" !== l && (ca.hasOwnProperty(l) ? (null != k && \"onScroll\" === l && G(\"scroll\", a), f || h === k || (f = [])) : \"object\" === _typeof(k) && null !== k && k.$$typeof === Ga ? k.toString() : (f = f || []).push(l, k));\n }\n\n c && (f = f || []).push(\"style\", c);\n var l = f;\n if (b.updateQueue = l) b.flags |= 4;\n }\n};\n\nEi = function Ei(a, b, c, d) {\n c !== d && (b.flags |= 4);\n};\n\nfunction Fi(a, b) {\n if (!lh) switch (a.tailMode) {\n case \"hidden\":\n b = a.tail;\n\n for (var c = null; null !== b;) {\n null !== b.alternate && (c = b), b = b.sibling;\n }\n\n null === c ? a.tail = null : c.sibling = null;\n break;\n\n case \"collapsed\":\n c = a.tail;\n\n for (var d = null; null !== c;) {\n null !== c.alternate && (d = c), c = c.sibling;\n }\n\n null === d ? b || null === a.tail ? a.tail = null : a.tail.sibling = null : d.sibling = null;\n }\n}\n\nfunction Gi(a, b, c) {\n var d = b.pendingProps;\n\n switch (b.tag) {\n case 2:\n case 16:\n case 15:\n case 0:\n case 11:\n case 7:\n case 8:\n case 12:\n case 9:\n case 14:\n return null;\n\n case 1:\n return Ff(b.type) && Gf(), null;\n\n case 3:\n fh();\n H(N);\n H(M);\n uh();\n d = b.stateNode;\n d.pendingContext && (d.context = d.pendingContext, d.pendingContext = null);\n if (null === a || null === a.child) rh(b) ? b.flags |= 4 : d.hydrate || (b.flags |= 256);\n Ci(b);\n return null;\n\n case 5:\n hh(b);\n var e = dh(ch.current);\n c = b.type;\n if (null !== a && null != b.stateNode) Di(a, b, c, d, e), a.ref !== b.ref && (b.flags |= 128);else {\n if (!d) {\n if (null === b.stateNode) throw Error(y(166));\n return null;\n }\n\n a = dh(ah.current);\n\n if (rh(b)) {\n d = b.stateNode;\n c = b.type;\n var f = b.memoizedProps;\n d[wf] = b;\n d[xf] = f;\n\n switch (c) {\n case \"dialog\":\n G(\"cancel\", d);\n G(\"close\", d);\n break;\n\n case \"iframe\":\n case \"object\":\n case \"embed\":\n G(\"load\", d);\n break;\n\n case \"video\":\n case \"audio\":\n for (a = 0; a < Xe.length; a++) {\n G(Xe[a], d);\n }\n\n break;\n\n case \"source\":\n G(\"error\", d);\n break;\n\n case \"img\":\n case \"image\":\n case \"link\":\n G(\"error\", d);\n G(\"load\", d);\n break;\n\n case \"details\":\n G(\"toggle\", d);\n break;\n\n case \"input\":\n Za(d, f);\n G(\"invalid\", d);\n break;\n\n case \"select\":\n d._wrapperState = {\n wasMultiple: !!f.multiple\n };\n G(\"invalid\", d);\n break;\n\n case \"textarea\":\n hb(d, f), G(\"invalid\", d);\n }\n\n vb(c, f);\n a = null;\n\n for (var g in f) {\n f.hasOwnProperty(g) && (e = f[g], \"children\" === g ? \"string\" === typeof e ? d.textContent !== e && (a = [\"children\", e]) : \"number\" === typeof e && d.textContent !== \"\" + e && (a = [\"children\", \"\" + e]) : ca.hasOwnProperty(g) && null != e && \"onScroll\" === g && G(\"scroll\", d));\n }\n\n switch (c) {\n case \"input\":\n Va(d);\n cb(d, f, !0);\n break;\n\n case \"textarea\":\n Va(d);\n jb(d);\n break;\n\n case \"select\":\n case \"option\":\n break;\n\n default:\n \"function\" === typeof f.onClick && (d.onclick = jf);\n }\n\n d = a;\n b.updateQueue = d;\n null !== d && (b.flags |= 4);\n } else {\n g = 9 === e.nodeType ? e : e.ownerDocument;\n a === kb.html && (a = lb(c));\n a === kb.html ? \"script\" === c ? (a = g.createElement(\"div\"), a.innerHTML = \"