{"mappings":"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,S,S,C,E,C,E;wB,E,S,G;oB,K,S,C,E,C,E;wB,I,I,K,E,I,E,c,C,I,C,C,E,G,C,C,E;oB;oB,O,c,G;gB;gB,O,S,C,E,C,E;oB,c,G;oB,S,K;wB,I,C,W,G;oB;oB,E,S,G,M,I,G,O,M,C,K,C,G,S,G,E,S,E,I,I,A,C;gB;Y;Y,I,Y,S,O,E,U,E,C,E,S,E;gB,S,M,K,E;oB,O,iB,I,Q,I,E,S,O,E;wB,Q;oB,E;gB;gB,O,I,C,K,C,I,O,C,E,S,O,E,M,E;oB,S,U,K,E;wB,I;4B,K,U,I,C;wB,E,O,G;4B,O;wB;oB;oB,S,S,K,E;wB,I;4B,K,S,C,Q,C;wB,E,O,G;4B,O;wB;oB;oB,S,K,M,E;wB,O,I,G,Q,O,K,I,M,O,K,E,I,C,W,S;oB;oB,K,A,C,Y,U,K,C,S,c,E,C,E,I;gB;Y;Y,I,c,S,O,E,I,E;gB,I,I;oB,O;oB,M,W;wB,I,C,C,E,G,G,M,C,C,E,C;wB,O,C,C,E;oB;oB,M,E;oB,K,E;gB,G,G,G,G;gB,O,I;oB,M,K;oB,S,K;oB,U,K;gB,G,O,W,c,C,C,C,O,Q,C,G,W;oB,O,I;gB,C,G,C;gB,S,K,C,E;oB,O,S,C,E;wB,O,K;4B;4B;yB;oB;gB;gB,S,K,E,E;oB,I,G,M,I,U,mC;oB,M,E,I;wB,I,I,G,K,C,I,E,C,E,G,I,C,C,S,G,E,C,E,G,C,C,Q,I,C,A,C,I,C,C,S,A,K,E,I,C,I,C,A,I,E,I,A,K,C,A,C,I,E,I,C,G,E,C,E,C,E,I,E,O;wB,I,I,G,C,E,K;4B,E,C,E,G;4B,E,K;yB;wB,O,E,C,E;4B,K;4B,K;gC,I;gC,K;4B,K;gC,E,K;gC,O;oC,O,E,C,E;oC,M,K;gC;4B,K;gC,E,K;gC,I,E,C,E;gC,K;oC;iC;gC,Q;4B,K;gC,K,E,G,C,G;gC,E,I,C,G;gC,Q;4B;gC,I,C,C,I,E,I,E,I,E,M,G,K,C,C,E,M,G,E,A,K,C,E,C,E,K,K,E,C,E,K,C,G;oC,I;oC,Q;gC,C;gC,I,E,C,E,K,K,C,C,K,E,C,E,G,C,C,E,I,E,C,E,G,C,C,E,G;oC,E,K,G,E,C,E;oC,K;gC,C;gC,I,E,C,E,K,K,E,K,G,C,C,E,E;o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","sources":["src/lib/render-extension-view.js","node_modules/query-string/index.js","node_modules/strict-uri-encode/index.js","node_modules/decode-uri-component/index.js","node_modules/split-on-first/index.js","node_modules/filter-obj/index.js","src/components/ExtensionWrapper/ExtensionWrapper.js","node_modules/i18next/dist/esm/i18next.js","node_modules/@babel/runtime/helpers/esm/typeof.js","node_modules/@babel/runtime/helpers/esm/classCallCheck.js","node_modules/@babel/runtime/helpers/esm/createClass.js","node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","node_modules/@babel/runtime/helpers/esm/toPrimitive.js","node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","node_modules/@babel/runtime/helpers/esm/inherits.js","node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","node_modules/@babel/runtime/helpers/esm/defineProperty.js","node_modules/@babel/runtime/helpers/esm/toArray.js","node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","node_modules/@babel/runtime/helpers/esm/iterableToArray.js","node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","node_modules/react-i18next/dist/es/context.js","node_modules/@babel/runtime/helpers/classCallCheck.js","node_modules/@babel/runtime/helpers/createClass.js","node_modules/@babel/runtime/helpers/toPropertyKey.js","node_modules/@babel/runtime/helpers/typeof.js","node_modules/@babel/runtime/helpers/toPrimitive.js","node_modules/@babel/runtime/helpers/defineProperty.js","node_modules/react-i18next/dist/es/unescape.js","src/translations/en.json","src/translations/de.json","src/translations/es.json","src/translations/fr.json","src/translations/ja.json","src/translations/ko.json","src/translations/pt-BR.json","src/translations/ru.json","src/translations/zh-CN.json","src/translations/zh-TW.json","src/hooks/useEbsApiClient.js","src/hooks/useTwitch.js","src/contexts/index.js","src/components/TwitchHelper/TwitchHelper.js","node_modules/prop-types/index.js","node_modules/prop-types/factoryWithThrowingShims.js","node_modules/prop-types/lib/ReactPropTypesSecret.js","node_modules/lodash/sortBy.js","node_modules/lodash/_baseFlatten.js","node_modules/lodash/_arrayPush.js","node_modules/lodash/_isFlattenable.js","node_modules/lodash/_Symbol.js","node_modules/lodash/_root.js","node_modules/lodash/_freeGlobal.js","node_modules/lodash/isArguments.js","node_modules/lodash/_baseIsArguments.js","node_modules/lodash/_baseGetTag.js","node_modules/lodash/_getRawTag.js","node_modules/lodash/_objectToString.js","node_modules/lodash/isObjectLike.js","node_modules/lodash/isArray.js","node_modules/lodash/_baseOrderBy.js","node_modules/lodash/_arrayMap.js","node_modules/lodash/_baseGet.js","node_modules/lodash/_castPath.js","node_modules/lodash/_isKey.js","node_modules/lodash/isSymbol.js","node_modules/lodash/_stringToPath.js","node_modules/lodash/_memoizeCapped.js","node_modules/lodash/memoize.js","node_modules/lodash/_MapCache.js","node_modules/lodash/_mapCacheClear.js","node_modules/lodash/_Hash.js","node_modules/lodash/_hashClear.js","node_modules/lodash/_nativeCreate.js","node_modules/lodash/_getNative.js","node_modules/lodash/_baseIsNative.js","node_modules/lodash/isFunction.js","node_modules/lodash/isObject.js","node_modules/lodash/_isMasked.js","node_modules/lodash/_coreJsData.js","node_modules/lodash/_toSource.js","node_modules/lodash/_getValue.js","node_modules/lodash/_hashDelete.js","node_modules/lodash/_hashGet.js","node_modules/lodash/_hashHas.js","node_modules/lodash/_hashSet.js","node_modules/lodash/_ListCache.js","node_modules/lodash/_listCacheClear.js","node_modules/lodash/_listCacheDelete.js","node_modules/lodash/_assocIndexOf.js","node_modules/lodash/eq.js","node_modules/lodash/_listCacheGet.js","node_modules/lodash/_listCacheHas.js","node_modules/lodash/_listCacheSet.js","node_modules/lodash/_Map.js","node_modules/lodash/_mapCacheDelete.js","node_modules/lodash/_getMapData.js","node_modules/lodash/_isKeyable.js","node_modules/lodash/_mapCacheGet.js","node_modules/lodash/_mapCacheHas.js","node_modules/lodash/_mapCacheSet.js","node_modules/lodash/toString.js","node_modules/lodash/_baseToString.js","node_modules/lodash/_toKey.js","node_modules/lodash/_baseIteratee.js","node_modules/lodash/_baseMatches.js","node_modules/lodash/_baseIsMatch.js","node_modules/lodash/_Stack.js","node_modules/lodash/_stackClear.js","node_modules/lodash/_stackDelete.js","node_modules/lodash/_stackGet.js","node_modules/lodash/_stackHas.js","node_modules/lodash/_stackSet.js","node_modules/lodash/_baseIsEqual.js","node_modules/lodash/_baseIsEqualDeep.js","node_modules/lodash/_equalArrays.js","node_modules/lodash/_SetCache.js","node_modules/lodash/_setCacheAdd.js","node_modules/lodash/_setCacheHas.js","node_modules/lodash/_arraySome.js","node_modules/lodash/_cacheHas.js","node_modules/lodash/_equalByTag.js","node_modules/lodash/_Uint8Array.js","node_modules/lodash/_mapToArray.js","node_modules/lodash/_setToArray.js","node_modules/lodash/_equalObjects.js","node_modules/lodash/_getAllKeys.js","node_modules/lodash/_baseGetAllKeys.js","node_modules/lodash/_getSymbols.js","node_modules/lodash/_arrayFilter.js","node_modules/lodash/stubArray.js","node_modules/lodash/keys.js","node_modules/lodash/_arrayLikeKeys.js","node_modules/lodash/_baseTimes.js","node_modules/lodash/isBuffer.js","node_modules/lodash/stubFalse.js","node_modules/lodash/_isIndex.js","node_modules/lodash/isTypedArray.js","node_modules/lodash/_baseIsTypedArray.js","node_modules/lodash/isLength.js","node_modules/lodash/_baseUnary.js","node_modules/lodash/_nodeUtil.js","node_modules/lodash/_baseKeys.js","node_modules/lodash/_isPrototype.js","node_modules/lodash/_nativeKeys.js","node_modules/lodash/_overArg.js","node_modules/lodash/isArrayLike.js","node_modules/lodash/_getTag.js","node_modules/lodash/_DataView.js","node_modules/lodash/_Promise.js","node_modules/lodash/_Set.js","node_modules/lodash/_WeakMap.js","node_modules/lodash/_getMatchData.js","node_modules/lodash/_isStrictComparable.js","node_modules/lodash/_matchesStrictComparable.js","node_modules/lodash/_baseMatchesProperty.js","node_modules/lodash/get.js","node_modules/lodash/hasIn.js","node_modules/lodash/_baseHasIn.js","node_modules/lodash/_hasPath.js","node_modules/lodash/identity.js","node_modules/lodash/property.js","node_modules/lodash/_baseProperty.js","node_modules/lodash/_basePropertyDeep.js","node_modules/lodash/_baseMap.js","node_modules/lodash/_baseEach.js","node_modules/lodash/_baseForOwn.js","node_modules/lodash/_baseFor.js","node_modules/lodash/_createBaseFor.js","node_modules/lodash/_createBaseEach.js","node_modules/lodash/_baseSortBy.js","node_modules/lodash/_compareMultiple.js","node_modules/lodash/_compareAscending.js","node_modules/lodash/_baseRest.js","node_modules/lodash/_overRest.js","node_modules/lodash/_apply.js","node_modules/lodash/_setToString.js","node_modules/lodash/_baseSetToString.js","node_modules/lodash/constant.js","node_modules/lodash/_defineProperty.js","node_modules/lodash/_shortOut.js","node_modules/lodash/_isIterateeCall.js","src/lib/create-fake-twitch-helper.js","node_modules/pusher-js/dist/web/pusher.js","node_modules/pusher-js/dist/web/webpack:/Pusher/webpack/universalModuleDefinition","node_modules/pusher-js/dist/web/webpack:/Pusher/webpack/bootstrap","node_modules/pusher-js/dist/web/webpack:/Pusher/node_modules/@stablelib/base64/base64.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/node_modules/@stablelib/utf8/utf8.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/pusher.js","node_modules/pusher-js/dist/web/webpack:/Pusher/src/runtimes/web/dom/script_receiver_factory.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/defaults.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/runtimes/web/dom/dependency_loader.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/runtimes/web/dom/dependencies.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/utils/url_store.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/auth/options.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/errors.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/runtimes/isomorphic/auth/xhr_auth.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/base64.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/utils/timers/abstract_timer.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/utils/timers/index.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/util.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/utils/collections.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/logger.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/runtimes/web/auth/jsonp_auth.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/runtimes/web/dom/script_request.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/runtimes/web/dom/jsonp_request.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/runtimes/web/timeline/jsonp_timeline.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/transports/url_schemes.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/events/callback_registry.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/events/dispatcher.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/transports/transport_connection.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/transports/transport.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/runtimes/isomorphic/transports/transports.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/runtimes/web/transports/transports.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/runtimes/web/net_info.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/transports/assistant_to_the_transport_manager.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/connection/protocol/protocol.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/connection/connection.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/connection/handshake/index.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/timeline/timeline_sender.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/channels/channel.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/channels/private_channel.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/channels/members.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/channels/presence_channel.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/channels/encrypted_channel.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/connection/connection_manager.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/channels/channels.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/utils/factory.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/transports/transport_manager.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/strategies/sequential_strategy.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/strategies/best_connected_ever_strategy.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/strategies/cached_strategy.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/strategies/delayed_strategy.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/strategies/if_strategy.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/strategies/first_connected_strategy.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/runtimes/web/default_strategy.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/runtimes/web/transports/transport_connection_initializer.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/runtimes/web/http/http_xdomain_request.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/http/http_request.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/http/state.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/http/http_socket.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/http/http_streaming_socket.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/http/http_polling_socket.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/runtimes/isomorphic/http/http_xhr_request.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/runtimes/isomorphic/http/http.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/runtimes/web/http/http.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/runtimes/web/runtime.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/timeline/level.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/timeline/timeline.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/strategies/transport_strategy.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/strategies/strategy_builder.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/auth/user_authenticator.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/auth/channel_authorizer.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/auth/deprecated_channel_authorizer.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/config.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/watchlist.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/utils/flat_promise.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/user.ts","node_modules/pusher-js/dist/web/webpack:/Pusher/src/core/pusher.ts","src/components/FakeHelperOptionsModal/FakeHelperOptionsModal.js","src/components/DebugJSON/DebugJSON.js","node_modules/react-i18next/dist/es/useTranslation.js","node_modules/@babel/runtime/helpers/slicedToArray.js","node_modules/@babel/runtime/helpers/arrayWithHoles.js","node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","node_modules/@babel/runtime/helpers/arrayLikeToArray.js","node_modules/@babel/runtime/helpers/nonIterableRest.js","node_modules/react-i18next/dist/es/utils.js","node_modules/classnames/index.js","src/components/EmbellishedHeading/EmbellishedHeading.js","src/components/Stack/Stack.js","src/components/Stack/Stack.module.scss"],"sourcesContent":["import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport queryString from \"query-string\";\nimport \"tippy.js/dist/tippy.css\";\n\nimport ExtensionWrapper from \"../components/ExtensionWrapper/ExtensionWrapper.js\";\nimport TwitchHelper from \"../components/TwitchHelper/TwitchHelper\";\n\n//Sentry.init({\n// dsn: process.env.SENTRY_DSN,\n// integrations: [new Integrations.BrowserTracing()],\n//\n// // We recommend adjusting this value in production, or using tracesSampler\n// // for finer control\n// tracesSampleRate: 1.0,\n//});\n\nconst queryParams = queryString.parse(window.location.search);\n\nexport default function renderExtensionView(\n children,\n addFakeBackgroundIfNecessary = true\n) {\n const isHostedOnTwitch = Boolean(queryParams.state);\n\n if (!isHostedOnTwitch && addFakeBackgroundIfNecessary) {\n document.body.classList.add(\"fake-background\");\n }\n\n ReactDOM.render(\n \n {children}\n ,\n document.getElementById(\"root\")\n );\n}\n","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), ':list='].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), ':list=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator' ?\n\t\t\t\t'[]=' :\n\t\t\t\t'=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tcase 'bracket-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[\\])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null ?\n\t\t\t\t\t[] :\n\t\t\t\t\tvalue.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], arrayValue);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher) || [];\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n","import React, { useEffect, useState } from \"react\";\nimport axios from \"axios\";\nimport { chunk } from \"lodash\";\nimport i18n from \"i18next\";\nimport { initReactI18next } from \"react-i18next\";\n\nimport enTranslations from \"../../translations/en\";\nimport deTranslations from \"../../translations/de\";\nimport esTranslations from \"../../translations/es\";\nimport frTranslations from \"../../translations/fr\";\nimport jaTranslations from \"../../translations/ja\";\nimport koTranslations from \"../../translations/ko\";\nimport ptBRTranslations from \"../../translations/pt-BR\";\nimport ruTranslations from \"../../translations/ru\";\nimport zhCNTranslations from \"../../translations/zh-CN\";\nimport zhTWTranslations from \"../../translations/zh-TW\";\nimport useEbsApiClient from \"../../hooks/useEbsApiClient.js\";\nimport { loadFollowerAssets } from \"../../lib/follower-loader.js\";\nimport { getVariationImagesMap } from \"../../lib/follower-variations-renderer.js\";\n\ni18n\n .use(initReactI18next) // passes i18n down to react-i18next\n .init({\n // the translations\n // (tip move them in a JSON file and import them,\n // or even better, manage them via a UI: https://react.i18next.com/guides/multiple-translation-files#manage-your-translations-with-a-management-gui)\n resources: {\n en: {\n translation: enTranslations,\n },\n de: {\n translation: deTranslations,\n },\n es: {\n translation: esTranslations,\n },\n fr: {\n translation: frTranslations,\n },\n ja: {\n translation: jaTranslations,\n },\n ko: {\n translation: koTranslations,\n },\n \"pt-BR\": {\n translation: ptBRTranslations,\n },\n ru: {\n translation: ruTranslations,\n },\n \"zh-CN\": {\n translation: zhCNTranslations,\n },\n \"zh-TW\": {\n translation: zhTWTranslations,\n },\n },\n lng: \"en\", // if you're using a language detector, do not define the lng option\n fallbackLng: \"en\",\n\n interpolation: {\n escapeValue: false, // react already safes from xss => https://www.i18next.com/translation-function/interpolation#unescape\n },\n });\n\nconst ExtensionWrapper = ({ children }) => {\n const [isInitialised, setIsInitialised] = useState(false);\n const ebsApiClient = useEbsApiClient();\n\n const generateVariationPreviews = async () => {\n const { getVariationImagesMap } = await import(\n \"../../lib/follower-variations-renderer.js\"\n );\n\n const variationsResponse = await ebsApiClient.get(\n \"/followers/variations?all=true\"\n );\n\n console.time(\"getVariationImagesMap\");\n window.variationImages = getVariationImagesMap(\n variationsResponse.data.variations\n );\n console.timeEnd(\"getVariationImagesMap\");\n\n console.time(\"render variation images\");\n const chunks = chunk(Object.entries(window.variationImages), 50);\n for await (const chunk of chunks) {\n await axios.post(\n \"http://localhost:1337/render\",\n Object.fromEntries(chunk)\n );\n }\n console.timeEnd(\"render variation images\");\n };\n\n useEffect(() => {\n (async () => {\n await loadFollowerAssets();\n //generateVariationPreviews();\n setIsInitialised(true);\n })();\n }, []);\n\n if (!isInitialised) {\n return null;\n }\n\n return children;\n};\n\nexport default ExtensionWrapper;\n","import _typeof from '@babel/runtime/helpers/esm/typeof';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _toArray from '@babel/runtime/helpers/esm/toArray';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar consoleLogger = {\n type: 'logger',\n log: function log(args) {\n this.output('log', args);\n },\n warn: function warn(args) {\n this.output('warn', args);\n },\n error: function error(args) {\n this.output('error', args);\n },\n output: function output(type, args) {\n if (console && console[type]) console[type].apply(console, args);\n }\n};\n\nvar Logger = function () {\n function Logger(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Logger);\n\n this.init(concreteLogger, options);\n }\n\n _createClass(Logger, [{\n key: \"init\",\n value: function init(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n }, {\n key: \"setDebug\",\n value: function setDebug(bool) {\n this.debug = bool;\n }\n }, {\n key: \"log\",\n value: function log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return this.forward(args, 'log', '', true);\n }\n }, {\n key: \"warn\",\n value: function warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return this.forward(args, 'warn', '', true);\n }\n }, {\n key: \"error\",\n value: function error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return this.forward(args, 'error', '');\n }\n }, {\n key: \"deprecate\",\n value: function deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n }, {\n key: \"forward\",\n value: function forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (typeof args[0] === 'string') args[0] = \"\".concat(prefix).concat(this.prefix, \" \").concat(args[0]);\n return this.logger[lvl](args);\n }\n }, {\n key: \"create\",\n value: function create(moduleName) {\n return new Logger(this.logger, _objectSpread(_objectSpread({}, {\n prefix: \"\".concat(this.prefix, \":\").concat(moduleName, \":\")\n }), this.options));\n }\n }, {\n key: \"clone\",\n value: function clone(options) {\n options = options || this.options;\n options.prefix = options.prefix || this.prefix;\n return new Logger(this.logger, options);\n }\n }]);\n\n return Logger;\n}();\n\nvar baseLogger = new Logger();\n\nvar EventEmitter = function () {\n function EventEmitter() {\n _classCallCheck(this, EventEmitter);\n\n this.observers = {};\n }\n\n _createClass(EventEmitter, [{\n key: \"on\",\n value: function on(events, listener) {\n var _this = this;\n\n events.split(' ').forEach(function (event) {\n _this.observers[event] = _this.observers[event] || [];\n\n _this.observers[event].push(listener);\n });\n return this;\n }\n }, {\n key: \"off\",\n value: function off(event, listener) {\n if (!this.observers[event]) return;\n\n if (!listener) {\n delete this.observers[event];\n return;\n }\n\n this.observers[event] = this.observers[event].filter(function (l) {\n return l !== listener;\n });\n }\n }, {\n key: \"emit\",\n value: function emit(event) {\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 (this.observers[event]) {\n var cloned = [].concat(this.observers[event]);\n cloned.forEach(function (observer) {\n observer.apply(void 0, args);\n });\n }\n\n if (this.observers['*']) {\n var _cloned = [].concat(this.observers['*']);\n\n _cloned.forEach(function (observer) {\n observer.apply(observer, [event].concat(args));\n });\n }\n }\n }]);\n\n return EventEmitter;\n}();\n\nfunction defer() {\n var res;\n var rej;\n var promise = new Promise(function (resolve, reject) {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n}\nfunction makeString(object) {\n if (object == null) return '';\n return '' + object;\n}\nfunction copy(a, s, t) {\n a.forEach(function (m) {\n if (s[m]) t[m] = s[m];\n });\n}\n\nfunction getLastOfPath(object, path, Empty) {\n function cleanKey(key) {\n return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n }\n\n function canNotTraverseDeeper() {\n return !object || typeof object === 'string';\n }\n\n var stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n\n while (stack.length > 1) {\n if (canNotTraverseDeeper()) return {};\n var key = cleanKey(stack.shift());\n if (!object[key] && Empty) object[key] = new Empty();\n\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n }\n\n if (canNotTraverseDeeper()) return {};\n return {\n obj: object,\n k: cleanKey(stack.shift())\n };\n}\n\nfunction setPath(object, path, newValue) {\n var _getLastOfPath = getLastOfPath(object, path, Object),\n obj = _getLastOfPath.obj,\n k = _getLastOfPath.k;\n\n obj[k] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n var _getLastOfPath2 = getLastOfPath(object, path, Object),\n obj = _getLastOfPath2.obj,\n k = _getLastOfPath2.k;\n\n obj[k] = obj[k] || [];\n if (concat) obj[k] = obj[k].concat(newValue);\n if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n var _getLastOfPath3 = getLastOfPath(object, path),\n obj = _getLastOfPath3.obj,\n k = _getLastOfPath3.k;\n\n if (!obj) return undefined;\n return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n var value = getPath(data, key);\n\n if (value !== undefined) {\n return value;\n }\n\n return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n for (var prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n\n return target;\n}\nfunction regexEscape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nfunction escape(data) {\n if (typeof data === 'string') {\n return data.replace(/[&<>\"'\\/]/g, function (s) {\n return _entityMap[s];\n });\n }\n\n return data;\n}\nvar isIE10 = typeof window !== 'undefined' && window.navigator && typeof window.navigator.userAgentData === 'undefined' && window.navigator.userAgent && window.navigator.userAgent.indexOf('MSIE') > -1;\nvar chars = [' ', ',', '?', '!', ';'];\nfunction looksLikeObjectPath(key, nsSeparator, keySeparator) {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n var possibleChars = chars.filter(function (c) {\n return nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0;\n });\n if (possibleChars.length === 0) return true;\n var r = new RegExp(\"(\".concat(possibleChars.map(function (c) {\n return c === '?' ? '\\\\?' : c;\n }).join('|'), \")\"));\n var matched = !r.test(key);\n\n if (!matched) {\n var ki = key.indexOf(keySeparator);\n\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n\n return matched;\n}\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction deepFind(obj, path) {\n var keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n if (!obj) return undefined;\n if (obj[path]) return obj[path];\n var paths = path.split(keySeparator);\n var current = obj;\n\n for (var i = 0; i < paths.length; ++i) {\n if (!current) return undefined;\n\n if (typeof current[paths[i]] === 'string' && i + 1 < paths.length) {\n return undefined;\n }\n\n if (current[paths[i]] === undefined) {\n var j = 2;\n var p = paths.slice(i, i + j).join(keySeparator);\n var mix = current[p];\n\n while (mix === undefined && paths.length > i + j) {\n j++;\n p = paths.slice(i, i + j).join(keySeparator);\n mix = current[p];\n }\n\n if (mix === undefined) return undefined;\n if (mix === null) return null;\n\n if (path.endsWith(p)) {\n if (typeof mix === 'string') return mix;\n if (p && typeof mix[p] === 'string') return mix[p];\n }\n\n var joinedPath = paths.slice(i + j).join(keySeparator);\n if (joinedPath) return deepFind(mix, joinedPath, keySeparator);\n return undefined;\n }\n\n current = current[paths[i]];\n }\n\n return current;\n}\n\nvar ResourceStore = function (_EventEmitter) {\n _inherits(ResourceStore, _EventEmitter);\n\n var _super = _createSuper(ResourceStore);\n\n function ResourceStore(data) {\n var _this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n\n _classCallCheck(this, ResourceStore);\n\n _this = _super.call(this);\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.data = data || {};\n _this.options = options;\n\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n\n if (_this.options.ignoreJSONStructure === undefined) {\n _this.options.ignoreJSONStructure = true;\n }\n\n return _this;\n }\n\n _createClass(ResourceStore, [{\n key: \"addNamespaces\",\n value: function addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n }, {\n key: \"removeNamespaces\",\n value: function removeNamespaces(ns) {\n var index = this.options.ns.indexOf(ns);\n\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n }, {\n key: \"getResource\",\n value: function getResource(lng, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n var path = [lng, ns];\n if (key && typeof key !== 'string') path = path.concat(key);\n if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n }\n\n var result = getPath(this.data, path);\n if (result || !ignoreJSONStructure || typeof key !== 'string') return result;\n return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n }\n }, {\n key: \"addResource\",\n value: function addResource(lng, ns, key, value) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n var keySeparator = this.options.keySeparator;\n if (keySeparator === undefined) keySeparator = '.';\n var path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n }, {\n key: \"addResources\",\n value: function addResources(lng, ns, resources) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n\n for (var m in resources) {\n if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"addResourceBundle\",\n value: function addResourceBundle(lng, ns, resources, deep, overwrite) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false\n };\n var path = [lng, ns];\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n\n this.addNamespaces(ns);\n var pack = getPath(this.data, path) || {};\n\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = _objectSpread$1(_objectSpread$1({}, pack), resources);\n }\n\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"removeResourceBundle\",\n value: function removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n }, {\n key: \"hasResourceBundle\",\n value: function hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n }, {\n key: \"getResourceBundle\",\n value: function getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n if (this.options.compatibilityAPI === 'v1') return _objectSpread$1(_objectSpread$1({}, {}), this.getResource(lng, ns));\n return this.getResource(lng, ns);\n }\n }, {\n key: \"getDataByLanguage\",\n value: function getDataByLanguage(lng) {\n return this.data[lng];\n }\n }, {\n key: \"hasLanguageSomeTranslations\",\n value: function hasLanguageSomeTranslations(lng) {\n var data = this.getDataByLanguage(lng);\n var n = data && Object.keys(data) || [];\n return !!n.find(function (v) {\n return data[v] && Object.keys(data[v]).length > 0;\n });\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.data;\n }\n }]);\n\n return ResourceStore;\n}(EventEmitter);\n\nvar postProcessor = {\n processors: {},\n addPostProcessor: function addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle: function handle(processors, value, key, options, translator) {\n var _this = this;\n\n processors.forEach(function (processor) {\n if (_this.processors[processor]) value = _this.processors[processor].process(value, key, options, translator);\n });\n return value;\n }\n};\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper$1(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$1(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$1() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar checkedLoadedFor = {};\n\nvar Translator = function (_EventEmitter) {\n _inherits(Translator, _EventEmitter);\n\n var _super = _createSuper$1(Translator);\n\n function Translator(services) {\n var _this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Translator);\n\n _this = _super.call(this);\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, _assertThisInitialized(_this));\n _this.options = options;\n\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n\n _this.logger = baseLogger.create('translator');\n return _this;\n }\n\n _createClass(Translator, [{\n key: \"changeLanguage\",\n value: function changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n }, {\n key: \"exists\",\n value: function exists(key) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n\n if (key === undefined || key === null) {\n return false;\n }\n\n var resolved = this.resolve(key, options);\n return resolved && resolved.res !== undefined;\n }\n }, {\n key: \"extractFromKey\",\n value: function extractFromKey(key, options) {\n var nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var namespaces = options.ns || this.options.defaultNS || [];\n var wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n var seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n var m = key.match(this.interpolator.nestingRegexp);\n\n if (m && m.length > 0) {\n return {\n key: key,\n namespaces: namespaces\n };\n }\n\n var parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n\n if (typeof namespaces === 'string') namespaces = [namespaces];\n return {\n key: key,\n namespaces: namespaces\n };\n }\n }, {\n key: \"translate\",\n value: function translate(keys, options, lastKey) {\n var _this2 = this;\n\n if (_typeof(options) !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n\n if (!options) options = {};\n if (keys === undefined || keys === null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n var returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n\n var _this$extractFromKey = this.extractFromKey(keys[keys.length - 1], options),\n key = _this$extractFromKey.key,\n namespaces = _this$extractFromKey.namespaces;\n\n var namespace = namespaces[namespaces.length - 1];\n var lng = options.lng || this.language;\n var appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n\n if (lng && lng.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n\n if (returnDetails) {\n resolved.res = \"\".concat(namespace).concat(nsSeparator).concat(key);\n return resolved;\n }\n\n return \"\".concat(namespace).concat(nsSeparator).concat(key);\n }\n\n if (returnDetails) {\n resolved.res = key;\n return resolved;\n }\n\n return key;\n }\n\n var resolved = this.resolve(keys, options);\n var res = resolved && resolved.res;\n var resUsedKey = resolved && resolved.usedKey || key;\n var resExactUsedKey = resolved && resolved.exactUsedKey || key;\n var resType = Object.prototype.toString.apply(res);\n var noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n var joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n var handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n var handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n\n if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n if (!options.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n\n var r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, _objectSpread$2(_objectSpread$2({}, options), {}, {\n ns: namespaces\n })) : \"key '\".concat(key, \" (\").concat(this.language, \")' returned an object instead of string.\");\n\n if (returnDetails) {\n resolved.res = r;\n return resolved;\n }\n\n return r;\n }\n\n if (keySeparator) {\n var resTypeIsArray = resType === '[object Array]';\n var copy = resTypeIsArray ? [] : {};\n var newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n\n for (var m in res) {\n if (Object.prototype.hasOwnProperty.call(res, m)) {\n var deepKey = \"\".concat(newKeyToUse).concat(keySeparator).concat(m);\n copy[m] = this.translate(deepKey, _objectSpread$2(_objectSpread$2({}, options), {\n joinArrays: false,\n ns: namespaces\n }));\n if (copy[m] === deepKey) copy[m] = res[m];\n }\n }\n\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options, lastKey);\n } else {\n var usedDefault = false;\n var usedKey = false;\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var hasDefaultValue = Translator.hasDefaultValue(options);\n var defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : '';\n var defaultValue = options[\"defaultValue\".concat(defaultValueSuffix)] || options.defaultValue;\n\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n\n var missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n var resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n var updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n\n if (keySeparator) {\n var fk = this.resolve(key, _objectSpread$2(_objectSpread$2({}, options), {}, {\n keySeparator: false\n }));\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n\n var lngs = [];\n var fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (var i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n\n var send = function send(l, k, specificDefaultValue) {\n var defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n\n if (_this2.options.missingKeyHandler) {\n _this2.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n } else if (_this2.backendConnector && _this2.backendConnector.saveMissing) {\n _this2.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n }\n\n _this2.emit('missingKey', l, namespace, k, res);\n };\n\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(function (language) {\n _this2.pluralResolver.getSuffixes(language, options).forEach(function (suffix) {\n send([language], key + suffix, options[\"defaultValue\".concat(suffix)] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n\n res = this.extendTranslation(res, keys, options, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = \"\".concat(namespace, \":\").concat(key);\n\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n if (this.options.compatibilityAPI !== 'v1') {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? \"\".concat(namespace, \":\").concat(key) : key, usedDefault ? res : undefined);\n } else {\n res = this.options.parseMissingKeyHandler(res);\n }\n }\n }\n\n if (returnDetails) {\n resolved.res = res;\n return resolved;\n }\n\n return res;\n }\n }, {\n key: \"extendTranslation\",\n value: function extendTranslation(res, key, options, resolved, lastKey) {\n var _this3 = this;\n\n if (this.i18nFormat && this.i18nFormat.parse) {\n res = this.i18nFormat.parse(res, _objectSpread$2(_objectSpread$2({}, this.options.interpolation.defaultVariables), options), resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved: resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init(_objectSpread$2(_objectSpread$2({}, options), {\n interpolation: _objectSpread$2(_objectSpread$2({}, this.options.interpolation), options.interpolation)\n }));\n var skipOnVariables = typeof res === 'string' && (options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n var nestBef;\n\n if (skipOnVariables) {\n var nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n\n var data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = _objectSpread$2(_objectSpread$2({}, this.options.interpolation.defaultVariables), data);\n res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n\n if (skipOnVariables) {\n var na = res.match(this.interpolator.nestingRegexp);\n var nestAft = na && na.length;\n if (nestBef < nestAft) options.nest = false;\n }\n\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (lastKey && lastKey[0] === args[0] && !options.context) {\n _this3.logger.warn(\"It seems you are nesting recursively key: \".concat(args[0], \" in key: \").concat(key[0]));\n\n return null;\n }\n\n return _this3.translate.apply(_this3, args.concat([key]));\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n\n var postProcess = options.postProcess || this.options.postProcess;\n var postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n\n if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? _objectSpread$2({\n i18nResolved: resolved\n }, options) : options, this);\n }\n\n return res;\n }\n }, {\n key: \"resolve\",\n value: function resolve(keys) {\n var _this4 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var found;\n var usedKey;\n var exactUsedKey;\n var usedLng;\n var usedNS;\n if (typeof keys === 'string') keys = [keys];\n keys.forEach(function (k) {\n if (_this4.isValidLookup(found)) return;\n\n var extracted = _this4.extractFromKey(k, options);\n\n var key = extracted.key;\n usedKey = key;\n var namespaces = extracted.namespaces;\n if (_this4.options.fallbackNS) namespaces = namespaces.concat(_this4.options.fallbackNS);\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n\n var needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && _this4.pluralResolver.shouldUseIntlApi();\n\n var needsContextHandling = options.context !== undefined && (typeof options.context === 'string' || typeof options.context === 'number') && options.context !== '';\n var codes = options.lngs ? options.lngs : _this4.languageUtils.toResolveHierarchy(options.lng || _this4.language, options.fallbackLng);\n namespaces.forEach(function (ns) {\n if (_this4.isValidLookup(found)) return;\n usedNS = ns;\n\n if (!checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] && _this4.utils && _this4.utils.hasLoadedNamespace && !_this4.utils.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] = true;\n\n _this4.logger.warn(\"key \\\"\".concat(usedKey, \"\\\" for languages \\\"\").concat(codes.join(', '), \"\\\" won't get resolved as namespace \\\"\").concat(usedNS, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n\n codes.forEach(function (code) {\n if (_this4.isValidLookup(found)) return;\n usedLng = code;\n var finalKeys = [key];\n\n if (_this4.i18nFormat && _this4.i18nFormat.addLookupKeys) {\n _this4.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n var pluralSuffix;\n if (needsPluralHandling) pluralSuffix = _this4.pluralResolver.getSuffix(code, options.count, options);\n var zeroSuffix = \"\".concat(_this4.options.pluralSeparator, \"zero\");\n\n if (needsPluralHandling) {\n finalKeys.push(key + pluralSuffix);\n\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n\n if (needsContextHandling) {\n var contextKey = \"\".concat(key).concat(_this4.options.contextSeparator).concat(options.context);\n finalKeys.push(contextKey);\n\n if (needsPluralHandling) {\n finalKeys.push(contextKey + pluralSuffix);\n\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n\n var possibleKey;\n\n while (possibleKey = finalKeys.pop()) {\n if (!_this4.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = _this4.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey: usedKey,\n exactUsedKey: exactUsedKey,\n usedLng: usedLng,\n usedNS: usedNS\n };\n }\n }, {\n key: \"isValidLookup\",\n value: function isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n }, {\n key: \"getResource\",\n value: function getResource(code, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n }], [{\n key: \"hasDefaultValue\",\n value: function hasDefaultValue(options) {\n var prefix = 'defaultValue';\n\n for (var option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n\n return false;\n }\n }]);\n\n return Translator;\n}(EventEmitter);\n\nfunction capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nvar LanguageUtil = function () {\n function LanguageUtil(options) {\n _classCallCheck(this, LanguageUtil);\n\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n\n _createClass(LanguageUtil, [{\n key: \"getScriptPartFromCode\",\n value: function getScriptPartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return null;\n var p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n }, {\n key: \"getLanguagePartFromCode\",\n value: function getLanguagePartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return code;\n var p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n }, {\n key: \"formatLanguageCode\",\n value: function formatLanguageCode(code) {\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n var specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n var p = code.split('-');\n\n if (this.options.lowerCaseLng) {\n p = p.map(function (part) {\n return part.toLowerCase();\n });\n } else if (p.length === 2) {\n p[0] = p[0].toLowerCase();\n p[1] = p[1].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n } else if (p.length === 3) {\n p[0] = p[0].toLowerCase();\n if (p[1].length === 2) p[1] = p[1].toUpperCase();\n if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n }\n\n return p.join('-');\n }\n\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n }, {\n key: \"isSupportedCode\",\n value: function isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n }, {\n key: \"getBestMatchFromCodes\",\n value: function getBestMatchFromCodes(codes) {\n var _this = this;\n\n if (!codes) return null;\n var found;\n codes.forEach(function (code) {\n if (found) return;\n\n var cleanedLng = _this.formatLanguageCode(code);\n\n if (!_this.options.supportedLngs || _this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n\n if (!found && this.options.supportedLngs) {\n codes.forEach(function (code) {\n if (found) return;\n\n var lngOnly = _this.getLanguagePartFromCode(code);\n\n if (_this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = _this.options.supportedLngs.find(function (supportedLng) {\n if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n });\n });\n }\n\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n }, {\n key: \"getFallbackCodes\",\n value: function getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n if (!code) return fallbacks[\"default\"] || [];\n var found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks[\"default\"];\n return found || [];\n }\n }, {\n key: \"toResolveHierarchy\",\n value: function toResolveHierarchy(code, fallbackCode) {\n var _this2 = this;\n\n var fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n var codes = [];\n\n var addCode = function addCode(c) {\n if (!c) return;\n\n if (_this2.isSupportedCode(c)) {\n codes.push(c);\n } else {\n _this2.logger.warn(\"rejecting language code not found in supportedLngs: \".concat(c));\n }\n };\n\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (typeof code === 'string') {\n addCode(this.formatLanguageCode(code));\n }\n\n fallbackCodes.forEach(function (fc) {\n if (codes.indexOf(fc) < 0) addCode(_this2.formatLanguageCode(fc));\n });\n return codes;\n }\n }]);\n\n return LanguageUtil;\n}();\n\nvar sets = [{\n lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n nr: [1, 2],\n fc: 1\n}, {\n lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n nr: [1, 2],\n fc: 2\n}, {\n lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n nr: [1],\n fc: 3\n}, {\n lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n nr: [1, 2, 5],\n fc: 4\n}, {\n lngs: ['ar'],\n nr: [0, 1, 2, 3, 11, 100],\n fc: 5\n}, {\n lngs: ['cs', 'sk'],\n nr: [1, 2, 5],\n fc: 6\n}, {\n lngs: ['csb', 'pl'],\n nr: [1, 2, 5],\n fc: 7\n}, {\n lngs: ['cy'],\n nr: [1, 2, 3, 8],\n fc: 8\n}, {\n lngs: ['fr'],\n nr: [1, 2],\n fc: 9\n}, {\n lngs: ['ga'],\n nr: [1, 2, 3, 7, 11],\n fc: 10\n}, {\n lngs: ['gd'],\n nr: [1, 2, 3, 20],\n fc: 11\n}, {\n lngs: ['is'],\n nr: [1, 2],\n fc: 12\n}, {\n lngs: ['jv'],\n nr: [0, 1],\n fc: 13\n}, {\n lngs: ['kw'],\n nr: [1, 2, 3, 4],\n fc: 14\n}, {\n lngs: ['lt'],\n nr: [1, 2, 10],\n fc: 15\n}, {\n lngs: ['lv'],\n nr: [1, 2, 0],\n fc: 16\n}, {\n lngs: ['mk'],\n nr: [1, 2],\n fc: 17\n}, {\n lngs: ['mnk'],\n nr: [0, 1, 2],\n fc: 18\n}, {\n lngs: ['mt'],\n nr: [1, 2, 11, 20],\n fc: 19\n}, {\n lngs: ['or'],\n nr: [2, 1],\n fc: 2\n}, {\n lngs: ['ro'],\n nr: [1, 2, 20],\n fc: 20\n}, {\n lngs: ['sl'],\n nr: [5, 1, 2, 3],\n fc: 21\n}, {\n lngs: ['he', 'iw'],\n nr: [1, 2, 20, 21],\n fc: 22\n}];\nvar _rulesPluralsTypes = {\n 1: function _(n) {\n return Number(n > 1);\n },\n 2: function _(n) {\n return Number(n != 1);\n },\n 3: function _(n) {\n return 0;\n },\n 4: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 5: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n },\n 6: function _(n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function _(n) {\n return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 8: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function _(n) {\n return Number(n >= 2);\n },\n 10: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function _(n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function _(n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function _(n) {\n return Number(n !== 0);\n },\n 14: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 16: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function _(n) {\n return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n },\n 18: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n },\n 20: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n },\n 21: function _(n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n }\n};\nvar deprecatedJsonVersions = ['v1', 'v2', 'v3'];\nvar suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\n\nfunction createRules() {\n var rules = {};\n sets.forEach(function (set) {\n set.lngs.forEach(function (l) {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc]\n };\n });\n });\n return rules;\n}\n\nvar PluralResolver = function () {\n function PluralResolver(languageUtils) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, PluralResolver);\n\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n\n if ((!this.options.compatibilityJSON || this.options.compatibilityJSON === 'v4') && (typeof Intl === 'undefined' || !Intl.PluralRules)) {\n this.options.compatibilityJSON = 'v3';\n this.logger.error('Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.');\n }\n\n this.rules = createRules();\n }\n\n _createClass(PluralResolver, [{\n key: \"addRule\",\n value: function addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n }, {\n key: \"getRule\",\n value: function getRule(code) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (this.shouldUseIntlApi()) {\n try {\n return new Intl.PluralRules(code, {\n type: options.ordinal ? 'ordinal' : 'cardinal'\n });\n } catch (_unused) {\n return;\n }\n }\n\n return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n }\n }, {\n key: \"needsPlural\",\n value: function needsPlural(code) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var rule = this.getRule(code, options);\n\n if (this.shouldUseIntlApi()) {\n return rule && rule.resolvedOptions().pluralCategories.length > 1;\n }\n\n return rule && rule.numbers.length > 1;\n }\n }, {\n key: \"getPluralFormsOfKey\",\n value: function getPluralFormsOfKey(code, key) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return this.getSuffixes(code, options).map(function (suffix) {\n return \"\".concat(key).concat(suffix);\n });\n }\n }, {\n key: \"getSuffixes\",\n value: function getSuffixes(code) {\n var _this = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var rule = this.getRule(code, options);\n\n if (!rule) {\n return [];\n }\n\n if (this.shouldUseIntlApi()) {\n return rule.resolvedOptions().pluralCategories.sort(function (pluralCategory1, pluralCategory2) {\n return suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2];\n }).map(function (pluralCategory) {\n return \"\".concat(_this.options.prepend).concat(pluralCategory);\n });\n }\n\n return rule.numbers.map(function (number) {\n return _this.getSuffix(code, number, options);\n });\n }\n }, {\n key: \"getSuffix\",\n value: function getSuffix(code, count) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var rule = this.getRule(code, options);\n\n if (rule) {\n if (this.shouldUseIntlApi()) {\n return \"\".concat(this.options.prepend).concat(rule.select(count));\n }\n\n return this.getSuffixRetroCompatible(rule, count);\n }\n\n this.logger.warn(\"no plural rule found for: \".concat(code));\n return '';\n }\n }, {\n key: \"getSuffixRetroCompatible\",\n value: function getSuffixRetroCompatible(rule, count) {\n var _this2 = this;\n\n var idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n var suffix = rule.numbers[idx];\n\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n\n var returnSuffix = function returnSuffix() {\n return _this2.options.prepend && suffix.toString() ? _this2.options.prepend + suffix.toString() : suffix.toString();\n };\n\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) return '';\n if (typeof suffix === 'number') return \"_plural_\".concat(suffix.toString());\n return returnSuffix();\n } else if (this.options.compatibilityJSON === 'v2') {\n return returnSuffix();\n } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n }\n\n return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n }\n }, {\n key: \"shouldUseIntlApi\",\n value: function shouldUseIntlApi() {\n return !deprecatedJsonVersions.includes(this.options.compatibilityJSON);\n }\n }]);\n\n return PluralResolver;\n}();\n\nfunction ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$3(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar Interpolator = function () {\n function Interpolator() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Interpolator);\n\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n\n this.format = options.interpolation && options.interpolation.format || function (value) {\n return value;\n };\n\n this.init(options);\n }\n\n _createClass(Interpolator, [{\n key: \"init\",\n value: function init() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n var iOpts = options.interpolation;\n this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n this.resetRegExp();\n }\n }, {\n key: \"reset\",\n value: function reset() {\n if (this.options) this.init(this.options);\n }\n }, {\n key: \"resetRegExp\",\n value: function resetRegExp() {\n var regexpStr = \"\".concat(this.prefix, \"(.+?)\").concat(this.suffix);\n this.regexp = new RegExp(regexpStr, 'g');\n var regexpUnescapeStr = \"\".concat(this.prefix).concat(this.unescapePrefix, \"(.+?)\").concat(this.unescapeSuffix).concat(this.suffix);\n this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n var nestingRegexpStr = \"\".concat(this.nestingPrefix, \"(.+?)\").concat(this.nestingSuffix);\n this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n }\n }, {\n key: \"interpolate\",\n value: function interpolate(str, data, lng, options) {\n var _this = this;\n\n var match;\n var value;\n var replaces;\n var defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n\n function regexSafe(val) {\n return val.replace(/\\$/g, '$$$$');\n }\n\n var handleFormat = function handleFormat(key) {\n if (key.indexOf(_this.formatSeparator) < 0) {\n var path = getPathWithDefaults(data, defaultData, key);\n return _this.alwaysFormat ? _this.format(path, undefined, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n interpolationkey: key\n })) : path;\n }\n\n var p = key.split(_this.formatSeparator);\n var k = p.shift().trim();\n var f = p.join(_this.formatSeparator).trim();\n return _this.format(getPathWithDefaults(data, defaultData, k), f, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n interpolationkey: k\n }));\n };\n\n this.resetRegExp();\n var missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n var skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n var todos = [{\n regex: this.regexpUnescape,\n safeValue: function safeValue(val) {\n return regexSafe(val);\n }\n }, {\n regex: this.regexp,\n safeValue: function safeValue(val) {\n return _this.escapeValue ? regexSafe(_this.escape(val)) : regexSafe(val);\n }\n }];\n todos.forEach(function (todo) {\n replaces = 0;\n\n while (match = todo.regex.exec(str)) {\n var matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n var temp = missingInterpolationHandler(str, match, options);\n value = typeof temp === 'string' ? temp : '';\n } else if (options && options.hasOwnProperty(matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n _this.logger.warn(\"missed to pass in variable \".concat(matchedVar, \" for interpolating \").concat(str));\n\n value = '';\n }\n } else if (typeof value !== 'string' && !_this.useRawValueToEscape) {\n value = makeString(value);\n }\n\n var safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n\n replaces++;\n\n if (replaces >= _this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n }, {\n key: \"nest\",\n value: function nest(str, fc) {\n var _this2 = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var match;\n var value;\n\n var clonedOptions = _objectSpread$3({}, options);\n\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n\n function handleHasOptions(key, inheritedOptions) {\n var sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n var c = key.split(new RegExp(\"\".concat(sep, \"[ ]*{\")));\n var optionsString = \"{\".concat(c[1]);\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n var matchedSingleQuotes = optionsString.match(/'/g);\n var matchedDoubleQuotes = optionsString.match(/\"/g);\n\n if (matchedSingleQuotes && matchedSingleQuotes.length % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {\n optionsString = optionsString.replace(/'/g, '\"');\n }\n\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = _objectSpread$3(_objectSpread$3({}, inheritedOptions), clonedOptions);\n } catch (e) {\n this.logger.warn(\"failed parsing options string in nesting for key \".concat(key), e);\n return \"\".concat(key).concat(sep).concat(optionsString);\n }\n\n delete clonedOptions.defaultValue;\n return key;\n }\n\n while (match = this.nestingRegexp.exec(str)) {\n var formatters = [];\n var doReduce = false;\n\n if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n var r = match[1].split(this.formatSeparator).map(function (elem) {\n return elem.trim();\n });\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && typeof value !== 'string') return value;\n if (typeof value !== 'string') value = makeString(value);\n\n if (!value) {\n this.logger.warn(\"missed to resolve \".concat(match[1], \" for nesting \").concat(str));\n value = '';\n }\n\n if (doReduce) {\n value = formatters.reduce(function (v, f) {\n return _this2.format(v, f, options.lng, _objectSpread$3(_objectSpread$3({}, options), {}, {\n interpolationkey: match[1].trim()\n }));\n }, value.trim());\n }\n\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n\n return str;\n }\n }]);\n\n return Interpolator;\n}();\n\nfunction ownKeys$4(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$4(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$4(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction parseFormatStr(formatStr) {\n var formatName = formatStr.toLowerCase().trim();\n var formatOptions = {};\n\n if (formatStr.indexOf('(') > -1) {\n var p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n var optStr = p[1].substring(0, p[1].length - 1);\n\n if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n var opts = optStr.split(';');\n opts.forEach(function (opt) {\n if (!opt) return;\n\n var _opt$split = opt.split(':'),\n _opt$split2 = _toArray(_opt$split),\n key = _opt$split2[0],\n rest = _opt$split2.slice(1);\n\n var val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n if (!formatOptions[key.trim()]) formatOptions[key.trim()] = val;\n if (val === 'false') formatOptions[key.trim()] = false;\n if (val === 'true') formatOptions[key.trim()] = true;\n if (!isNaN(val)) formatOptions[key.trim()] = parseInt(val, 10);\n });\n }\n }\n\n return {\n formatName: formatName,\n formatOptions: formatOptions\n };\n}\n\nfunction createCachedFormatter(fn) {\n var cache = {};\n return function invokeFormatter(val, lng, options) {\n var key = lng + JSON.stringify(options);\n var formatter = cache[key];\n\n if (!formatter) {\n formatter = fn(lng, options);\n cache[key] = formatter;\n }\n\n return formatter(val);\n };\n}\n\nvar Formatter = function () {\n function Formatter() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Formatter);\n\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.formats = {\n number: createCachedFormatter(function (lng, options) {\n var formatter = new Intl.NumberFormat(lng, options);\n return function (val) {\n return formatter.format(val);\n };\n }),\n currency: createCachedFormatter(function (lng, options) {\n var formatter = new Intl.NumberFormat(lng, _objectSpread$4(_objectSpread$4({}, options), {}, {\n style: 'currency'\n }));\n return function (val) {\n return formatter.format(val);\n };\n }),\n datetime: createCachedFormatter(function (lng, options) {\n var formatter = new Intl.DateTimeFormat(lng, _objectSpread$4({}, options));\n return function (val) {\n return formatter.format(val);\n };\n }),\n relativetime: createCachedFormatter(function (lng, options) {\n var formatter = new Intl.RelativeTimeFormat(lng, _objectSpread$4({}, options));\n return function (val) {\n return formatter.format(val, options.range || 'day');\n };\n }),\n list: createCachedFormatter(function (lng, options) {\n var formatter = new Intl.ListFormat(lng, _objectSpread$4({}, options));\n return function (val) {\n return formatter.format(val);\n };\n })\n };\n this.init(options);\n }\n\n _createClass(Formatter, [{\n key: \"init\",\n value: function init(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n var iOpts = options.interpolation;\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n }\n }, {\n key: \"add\",\n value: function add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n }, {\n key: \"addCached\",\n value: function addCached(name, fc) {\n this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n }\n }, {\n key: \"format\",\n value: function format(value, _format, lng, options) {\n var _this = this;\n\n var formats = _format.split(this.formatSeparator);\n\n var result = formats.reduce(function (mem, f) {\n var _parseFormatStr = parseFormatStr(f),\n formatName = _parseFormatStr.formatName,\n formatOptions = _parseFormatStr.formatOptions;\n\n if (_this.formats[formatName]) {\n var formatted = mem;\n\n try {\n var valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};\n var l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = _this.formats[formatName](mem, l, _objectSpread$4(_objectSpread$4(_objectSpread$4({}, formatOptions), options), valOptions));\n } catch (error) {\n _this.logger.warn(error);\n }\n\n return formatted;\n } else {\n _this.logger.warn(\"there was no format function for \".concat(formatName));\n }\n\n return mem;\n }, value);\n return result;\n }\n }]);\n\n return Formatter;\n}();\n\nfunction ownKeys$5(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$5(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$5(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper$2(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$2(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$2() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction removePending(q, name) {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n}\n\nvar Connector = function (_EventEmitter) {\n _inherits(Connector, _EventEmitter);\n\n var _super = _createSuper$2(Connector);\n\n function Connector(backend, store, services) {\n var _this;\n\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n _classCallCheck(this, Connector);\n\n _this = _super.call(this);\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.backend = backend;\n _this.store = store;\n _this.services = services;\n _this.languageUtils = services.languageUtils;\n _this.options = options;\n _this.logger = baseLogger.create('backendConnector');\n _this.waitingReads = [];\n _this.maxParallelReads = options.maxParallelReads || 10;\n _this.readingCalls = 0;\n _this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n _this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n _this.state = {};\n _this.queue = [];\n\n if (_this.backend && _this.backend.init) {\n _this.backend.init(services, options.backend, options);\n }\n\n return _this;\n }\n\n _createClass(Connector, [{\n key: \"queueLoad\",\n value: function queueLoad(languages, namespaces, options, callback) {\n var _this2 = this;\n\n var toLoad = {};\n var pending = {};\n var toLoadLanguages = {};\n var toLoadNamespaces = {};\n languages.forEach(function (lng) {\n var hasAllNamespaces = true;\n namespaces.forEach(function (ns) {\n var name = \"\".concat(lng, \"|\").concat(ns);\n\n if (!options.reload && _this2.store.hasResourceBundle(lng, ns)) {\n _this2.state[name] = 2;\n } else if (_this2.state[name] < 0) ; else if (_this2.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n _this2.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending: pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback: callback\n });\n }\n\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n }, {\n key: \"loaded\",\n value: function loaded(name, err, data) {\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n\n if (data) {\n this.store.addResourceBundle(lng, ns, data);\n }\n\n this.state[name] = err ? -1 : 2;\n var loaded = {};\n this.queue.forEach(function (q) {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(function (l) {\n if (!loaded[l]) loaded[l] = {};\n var loadedKeys = q.loaded[l];\n\n if (loadedKeys.length) {\n loadedKeys.forEach(function (ns) {\n if (loaded[l][ns] === undefined) loaded[l][ns] = true;\n });\n }\n });\n q.done = true;\n\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(function (q) {\n return !q.done;\n });\n }\n }, {\n key: \"read\",\n value: function read(lng, ns, fcName) {\n var _this3 = this;\n\n var tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : this.retryTimeout;\n var callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng: lng,\n ns: ns,\n fcName: fcName,\n tried: tried,\n wait: wait,\n callback: callback\n });\n return;\n }\n\n this.readingCalls++;\n return this.backend[fcName](lng, ns, function (err, data) {\n _this3.readingCalls--;\n\n if (_this3.waitingReads.length > 0) {\n var next = _this3.waitingReads.shift();\n\n _this3.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n\n if (err && data && tried < _this3.maxRetries) {\n setTimeout(function () {\n _this3.read.call(_this3, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n\n callback(err, data);\n });\n }\n }, {\n key: \"prepareLoading\",\n value: function prepareLoading(languages, namespaces) {\n var _this4 = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = arguments.length > 3 ? arguments[3] : undefined;\n\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n\n if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n if (typeof namespaces === 'string') namespaces = [namespaces];\n var toLoad = this.queueLoad(languages, namespaces, options, callback);\n\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n\n toLoad.toLoad.forEach(function (name) {\n _this4.loadOne(name);\n });\n }\n }, {\n key: \"load\",\n value: function load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n }, {\n key: \"reload\",\n value: function reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n }, {\n key: \"loadOne\",\n value: function loadOne(name) {\n var _this5 = this;\n\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, function (err, data) {\n if (err) _this5.logger.warn(\"\".concat(prefix, \"loading namespace \").concat(ns, \" for language \").concat(lng, \" failed\"), err);\n if (!err && data) _this5.logger.log(\"\".concat(prefix, \"loaded namespace \").concat(ns, \" for language \").concat(lng), data);\n\n _this5.loaded(name, err, data);\n });\n }\n }, {\n key: \"saveMissing\",\n value: function saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n\n if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n this.logger.warn(\"did not save key \\\"\".concat(key, \"\\\" as the namespace \\\"\").concat(namespace, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n\n if (key === undefined || key === null || key === '') return;\n\n if (this.backend && this.backend.create) {\n this.backend.create(languages, namespace, key, fallbackValue, null, _objectSpread$5(_objectSpread$5({}, options), {}, {\n isUpdate: isUpdate\n }));\n }\n\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n }]);\n\n return Connector;\n}(EventEmitter);\n\nfunction get() {\n return {\n debug: false,\n initImmediate: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: true,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: function handle(args) {\n var ret = {};\n if (_typeof(args[1]) === 'object') ret = args[1];\n if (typeof args[1] === 'string') ret.defaultValue = args[1];\n if (typeof args[2] === 'string') ret.tDescription = args[2];\n\n if (_typeof(args[2]) === 'object' || _typeof(args[3]) === 'object') {\n var options = args[3] || args[2];\n Object.keys(options).forEach(function (key) {\n ret[key] = options[key];\n });\n }\n\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: function format(value, _format, lng, options) {\n return value;\n },\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n }\n };\n}\nfunction transformOptions(options) {\n if (typeof options.ns === 'string') options.ns = [options.ns];\n if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n\n if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n\n return options;\n}\n\nfunction ownKeys$6(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$6(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$6(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper$3(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$3(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$3() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction noop() {}\n\nfunction bindMemberFunctions(inst) {\n var mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(function (mem) {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n}\n\nvar I18n = function (_EventEmitter) {\n _inherits(I18n, _EventEmitter);\n\n var _super = _createSuper$3(I18n);\n\n function I18n() {\n var _this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n _classCallCheck(this, I18n);\n\n _this = _super.call(this);\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.options = transformOptions(options);\n _this.services = {};\n _this.logger = baseLogger;\n _this.modules = {\n external: []\n };\n bindMemberFunctions(_assertThisInitialized(_this));\n\n if (callback && !_this.isInitialized && !options.isClone) {\n if (!_this.options.initImmediate) {\n _this.init(options, callback);\n\n return _possibleConstructorReturn(_this, _assertThisInitialized(_this));\n }\n\n setTimeout(function () {\n _this.init(options, callback);\n }, 0);\n }\n\n return _this;\n }\n\n _createClass(I18n, [{\n key: \"init\",\n value: function init() {\n var _this2 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n if (!options.defaultNS && options.defaultNS !== false && options.ns) {\n if (typeof options.ns === 'string') {\n options.defaultNS = options.ns;\n } else if (options.ns.indexOf('translation') < 0) {\n options.defaultNS = options.ns[0];\n }\n }\n\n var defOpts = get();\n this.options = _objectSpread$6(_objectSpread$6(_objectSpread$6({}, defOpts), this.options), transformOptions(options));\n\n if (this.options.compatibilityAPI !== 'v1') {\n this.options.interpolation = _objectSpread$6(_objectSpread$6({}, defOpts.interpolation), this.options.interpolation);\n }\n\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n\n function createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n }\n\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n\n var formatter;\n\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else if (typeof Intl !== 'undefined') {\n formatter = Formatter;\n }\n\n var lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n var s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n compatibilityJSON: this.options.compatibilityJSON,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n\n if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n s.formatter = createClassOnDemand(formatter);\n s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\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 _this2.emit.apply(_this2, [event].concat(args));\n });\n\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n s.languageDetector.init(s, this.options.detection, this.options);\n }\n\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n _this2.emit.apply(_this2, [event].concat(args));\n });\n this.modules.external.forEach(function (m) {\n if (m.init) m.init(_this2);\n });\n }\n\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n var codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n\n var storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store;\n\n return (_this2$store = _this2.store)[fcName].apply(_this2$store, arguments);\n };\n });\n var storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store2;\n\n (_this2$store2 = _this2.store)[fcName].apply(_this2$store2, arguments);\n\n return _this2;\n };\n });\n var deferred = defer();\n\n var load = function load() {\n var finish = function finish(err, t) {\n if (_this2.isInitialized && !_this2.initializedStoreOnce) _this2.logger.warn('init: i18next is already initialized. You should call init just once!');\n _this2.isInitialized = true;\n if (!_this2.options.isClone) _this2.logger.log('initialized', _this2.options);\n\n _this2.emit('initialized', _this2.options);\n\n deferred.resolve(t);\n callback(err, t);\n };\n\n if (_this2.languages && _this2.options.compatibilityAPI !== 'v1' && !_this2.isInitialized) return finish(null, _this2.t.bind(_this2));\n\n _this2.changeLanguage(_this2.options.lng, finish);\n };\n\n if (this.options.resources || !this.options.initImmediate) {\n load();\n } else {\n setTimeout(load, 0);\n }\n\n return deferred;\n }\n }, {\n key: \"loadResources\",\n value: function loadResources(language) {\n var _this3 = this;\n\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var usedCallback = callback;\n var usedLng = typeof language === 'string' ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng && usedLng.toLowerCase() === 'cimode') return usedCallback();\n var toLoad = [];\n\n var append = function append(lng) {\n if (!lng) return;\n\n var lngs = _this3.services.languageUtils.toResolveHierarchy(lng);\n\n lngs.forEach(function (l) {\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n\n if (!usedLng) {\n var fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(function (l) {\n return append(l);\n });\n } else {\n append(usedLng);\n }\n\n if (this.options.preload) {\n this.options.preload.forEach(function (l) {\n return append(l);\n });\n }\n\n this.services.backendConnector.load(toLoad, this.options.ns, function (e) {\n if (!e && !_this3.resolvedLanguage && _this3.language) _this3.setResolvedLanguage(_this3.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n }, {\n key: \"reloadResources\",\n value: function reloadResources(lngs, ns, callback) {\n var deferred = defer();\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, function (err) {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n }, {\n key: \"use\",\n value: function use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n\n return this;\n }\n }, {\n key: \"setResolvedLanguage\",\n value: function setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].indexOf(l) > -1) return;\n\n for (var li = 0; li < this.languages.length; li++) {\n var lngInLngs = this.languages[li];\n if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n }\n }, {\n key: \"changeLanguage\",\n value: function changeLanguage(lng, callback) {\n var _this4 = this;\n\n this.isLanguageChangingTo = lng;\n var deferred = defer();\n this.emit('languageChanging', lng);\n\n var setLngProps = function setLngProps(l) {\n _this4.language = l;\n _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n _this4.resolvedLanguage = undefined;\n\n _this4.setResolvedLanguage(l);\n };\n\n var done = function done(err, l) {\n if (l) {\n setLngProps(l);\n\n _this4.translator.changeLanguage(l);\n\n _this4.isLanguageChangingTo = undefined;\n\n _this4.emit('languageChanged', l);\n\n _this4.logger.log('languageChanged', l);\n } else {\n _this4.isLanguageChangingTo = undefined;\n }\n\n deferred.resolve(function () {\n return _this4.t.apply(_this4, arguments);\n });\n if (callback) callback(err, function () {\n return _this4.t.apply(_this4, arguments);\n });\n };\n\n var setLng = function setLng(lngs) {\n if (!lng && !lngs && _this4.services.languageDetector) lngs = [];\n var l = typeof lngs === 'string' ? lngs : _this4.services.languageUtils.getBestMatchFromCodes(lngs);\n\n if (l) {\n if (!_this4.language) {\n setLngProps(l);\n }\n\n if (!_this4.translator.language) _this4.translator.changeLanguage(l);\n if (_this4.services.languageDetector) _this4.services.languageDetector.cacheUserLanguage(l);\n }\n\n _this4.loadResources(l, function (err) {\n done(err, l);\n });\n };\n\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n this.services.languageDetector.detect(setLng);\n } else {\n setLng(lng);\n }\n\n return deferred;\n }\n }, {\n key: \"getFixedT\",\n value: function getFixedT(lng, ns, keyPrefix) {\n var _this5 = this;\n\n var fixedT = function fixedT(key, opts) {\n var options;\n\n if (_typeof(opts) !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n\n options = _this5.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = _objectSpread$6({}, opts);\n }\n\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n options.keyPrefix = options.keyPrefix || keyPrefix || fixedT.keyPrefix;\n var keySeparator = _this5.options.keySeparator || '.';\n var resultKey = options.keyPrefix ? \"\".concat(options.keyPrefix).concat(keySeparator).concat(key) : key;\n return _this5.t(resultKey, options);\n };\n\n if (typeof lng === 'string') {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n }, {\n key: \"t\",\n value: function t() {\n var _this$translator;\n\n return this.translator && (_this$translator = this.translator).translate.apply(_this$translator, arguments);\n }\n }, {\n key: \"exists\",\n value: function exists() {\n var _this$translator2;\n\n return this.translator && (_this$translator2 = this.translator).exists.apply(_this$translator2, arguments);\n }\n }, {\n key: \"setDefaultNamespace\",\n value: function setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n }, {\n key: \"hasLoadedNamespace\",\n value: function hasLoadedNamespace(ns) {\n var _this6 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n\n var lng = this.resolvedLanguage || this.languages[0];\n var fallbackLng = this.options ? this.options.fallbackLng : false;\n var lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = _this6.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n\n return loadState === -1 || loadState === 2;\n };\n\n if (options.precheck) {\n var preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n }, {\n key: \"loadNamespaces\",\n value: function loadNamespaces(ns, callback) {\n var _this7 = this;\n\n var deferred = defer();\n\n if (!this.options.ns) {\n callback && callback();\n return Promise.resolve();\n }\n\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(function (n) {\n if (_this7.options.ns.indexOf(n) < 0) _this7.options.ns.push(n);\n });\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"loadLanguages\",\n value: function loadLanguages(lngs, callback) {\n var deferred = defer();\n if (typeof lngs === 'string') lngs = [lngs];\n var preloaded = this.options.preload || [];\n var newLngs = lngs.filter(function (lng) {\n return preloaded.indexOf(lng) < 0;\n });\n\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"dir\",\n value: function dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n var rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n return rtlLngs.indexOf(this.services.languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n }, {\n key: \"cloneInstance\",\n value: function cloneInstance() {\n var _this8 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n\n var mergedOptions = _objectSpread$6(_objectSpread$6(_objectSpread$6({}, this.options), options), {\n isClone: true\n });\n\n var clone = new I18n(mergedOptions);\n\n if (options.debug !== undefined || options.prefix !== undefined) {\n clone.logger = clone.logger.clone(options);\n }\n\n var membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(function (m) {\n clone[m] = _this8[m];\n });\n clone.services = _objectSpread$6({}, this.services);\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n clone.translator = new Translator(clone.services, clone.options);\n clone.translator.on('*', function (event) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n clone.emit.apply(clone, [event].concat(args));\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = clone.options;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n }]);\n\n return I18n;\n}(EventEmitter);\n\n_defineProperty(I18n, \"createInstance\", function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n});\n\nvar instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nvar createInstance = instance.createInstance;\nvar init = instance.init;\nvar loadResources = instance.loadResources;\nvar reloadResources = instance.reloadResources;\nvar use = instance.use;\nvar changeLanguage = instance.changeLanguage;\nvar getFixedT = instance.getFixedT;\nvar t = instance.t;\nvar exists = instance.exists;\nvar setDefaultNamespace = instance.setDefaultNamespace;\nvar hasLoadedNamespace = instance.hasLoadedNamespace;\nvar loadNamespaces = instance.loadNamespaces;\nvar loadLanguages = instance.loadLanguages;\n\nexport default instance;\nexport { changeLanguage, createInstance, exists, getFixedT, hasLoadedNamespace, init, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","export default 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}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import toPropertyKey from \"./toPropertyKey.js\";\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, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _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}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","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 return self;\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _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 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}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _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 return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\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 return obj;\n}","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}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default 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}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\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 _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport { createContext } from 'react';\nimport { unescape } from './unescape';\nvar defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transWrapTextNodes: '',\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true,\n unescape: unescape\n};\nvar i18nInstance;\nexport var I18nContext = createContext();\nexport function setDefaults() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n defaultOptions = _objectSpread(_objectSpread({}, defaultOptions), options);\n}\nexport function getDefaults() {\n return defaultOptions;\n}\nexport var ReportNamespaces = function () {\n function ReportNamespaces() {\n _classCallCheck(this, ReportNamespaces);\n\n this.usedNamespaces = {};\n }\n\n _createClass(ReportNamespaces, [{\n key: \"addUsedNamespaces\",\n value: function addUsedNamespaces(namespaces) {\n var _this = this;\n\n namespaces.forEach(function (ns) {\n if (!_this.usedNamespaces[ns]) _this.usedNamespaces[ns] = true;\n });\n }\n }, {\n key: \"getUsedNamespaces\",\n value: function getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n }]);\n\n return ReportNamespaces;\n}();\nexport function setI18n(instance) {\n i18nInstance = instance;\n}\nexport function getI18n() {\n return i18nInstance;\n}\nexport var initReactI18next = {\n type: '3rdParty',\n init: function init(instance) {\n setDefaults(instance.options.react);\n setI18n(instance);\n }\n};\nexport function composeInitialProps(ForComponent) {\n return function (ctx) {\n return new Promise(function (resolve) {\n var i18nInitialProps = getInitialProps();\n\n if (ForComponent.getInitialProps) {\n ForComponent.getInitialProps(ctx).then(function (componentsInitialProps) {\n resolve(_objectSpread(_objectSpread({}, componentsInitialProps), i18nInitialProps));\n });\n } else {\n resolve(i18nInitialProps);\n }\n });\n };\n}\nexport function getInitialProps() {\n var i18n = getI18n();\n var namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : [];\n var ret = {};\n var initialI18nStore = {};\n i18n.languages.forEach(function (l) {\n initialI18nStore[l] = {};\n namespaces.forEach(function (ns) {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n}","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\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, toPropertyKey(descriptor.key), descriptor);\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}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\nmodule.exports = _toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _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 }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nmodule.exports = _toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\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 return obj;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;\nvar htmlEntities = {\n '&': '&',\n '&': '&',\n '<': '<',\n '<': '<',\n '>': '>',\n '>': '>',\n ''': \"'\",\n ''': \"'\",\n '"': '\"',\n '"': '\"',\n ' ': ' ',\n ' ': ' ',\n '©': '©',\n '©': '©',\n '®': '®',\n '®': '®',\n '…': '…',\n '…': '…',\n '/': '/',\n '/': '/'\n};\n\nvar unescapeHtmlEntity = function unescapeHtmlEntity(m) {\n return htmlEntities[m];\n};\n\nexport var unescape = function unescape(text) {\n return text.replace(matchHtmlEntity, unescapeHtmlEntity);\n};","{\n \"features\": {\n \"config\": {\n \"title\": \"Companion of the Lamb\",\n \"subtitle\": \"Twitch integration configuration\",\n \"no-affiliate-or-partner-error\": \"This feature is only available for Twitch affiliates and partners.\",\n \"sections\": {\n \"info\": {\n \"moreInfo\": \"For a quick setup guide and overview of the features of this integration, see\"\n },\n \"channelPointRewards\": {\n \"title\": \"Channel Points rewards\",\n \"setupPrompt\": \"You will need to grant the Extension permission to create the Channel Points rewards necessary for the Twitch integration.\",\n \"setupSuccess\": \"Your Channel Points rewards are set up correctly. To manage the reward cost, go to\",\n \"channelPointsSettingsLink\": \"your Channel Points settings page.\",\n \"reconnectPrompt\": \"If you are experiencing issues with Channel Points rewards not working properly, try\",\n \"reconnectLink\": \"setting them up again.\",\n \"actions\": {\n \"setUpRewards\": \"Set up Channel Points rewards\"\n }\n },\n \"followerMessageModeration\": {\n \"title\": \"Follower message moderation\",\n \"description\": \"Viewers will be able to redeem a Channel Points reward to show a speech bubble with a message above their in-game follower. You can choose to manually moderate these messages before they show up in the game.\",\n \"autoApprovalOption\": \"Automatically approve all follower messages\",\n \"manualModerationOption\": \"Manually approve follower messages\",\n \"manualModerationHelpText\": \"To access the follower message moderation, go to the Cult of the Lamb tile in your Stream Manager.\"\n },\n \"totem\": {\n \"title\": \"Totem reward\",\n \"totemSetupPrompt\": \"You will need to grant the Extension permission to create the Channel Points reward for the in-game Twitch Totem to work.\",\n \"totemSetupSuccess\": \"Your totem is set up correctly. To manage the reward cost, go to\",\n \"channelPointsSettingsLink\": \"your Channel Points settings page.\",\n \"totemReconnectPrompt\": \"If you are experiencing issues with Totem contributions not working properly, try\",\n \"totemReconnectLink\": \"reconnecting your totem.\",\n \"actions\": {\n \"setUpTotem\": \"Set up Totem\"\n }\n },\n \"premiumSkins\": {\n \"title\": \"Premium follower skins\",\n \"description\": \"Using this extension, your viewers will be able to appear in-game as followers. They will be able to customise their followers, including the use of Bits for premium skins. Select the amount of Bits for a premium skin, or you can choose to keep them free to allow anyone to use these skins.\",\n \"noBitsOption\": \"No Bits, I want free premium skins for my viewers\",\n \"bitsFeatureNotAvailable\": \"Your channel cannot use Bits. Your viewers will be able to select any skin they like without using Bits.\"\n }\n },\n \"actions\": {\n \"save\": \"Save changes\"\n }\n },\n \"liveConfig\": {\n \"sections\": {\n \"followerMessageModeration\": {\n \"title\": \"Follower Messages\",\n \"introTextNoModerationRequired\": \"The integration is configured to automatically allow all follower messages to appear in the game automatically. If you would like to moderate them manually before they show up, enable the moderation setting in the Extension configuration.\",\n \"introText\": \"Any follower messages redeemed through Channel Points that require moderation will appear here.\",\n \"emptyQueueText\": \"No messages require moderation at this time.\",\n \"actions\": {\n \"approveMessage\": \"Approve\",\n \"denyMessage\": \"Deny\"\n }\n }\n }\n },\n \"followers\": {\n \"rafflePopup\": {\n \"title\": \"Join {{channelName}}'s Cult!\",\n \"subtitle\": \"You won the raffle!\",\n \"timeRemaining\": \"Time remaining: {{time}}\",\n \"message\": \"Joining our cult has plenty of advantages: the chance to grow extra demonic appendages, the honor of dedicating every living second to the Cult of the Lamb, and the glory of possibly being sacrificed!\",\n \"viewerLinkCta\": \"To enter, please {share your identity}.\",\n \"existingFollowerMessage\": \"You have already joined {{channelName}}'s Cult and cannot create a new follower.\",\n \"actions\": {\n \"joinRaffle\": \"I want to join the Cult\",\n \"joinRaffleViewerHasAlreadyJoined\": \"You have joined the raffle\",\n \"dismissRaffle\": \"No thanks, I'm out\",\n \"dismissRaffleViewerHasAlreadyJoined\": \"Close\",\n \"permanentlyDismissRaffle\": \"Close and don't show again\"\n },\n \"raffleJoinedMessage\": \"Your willingness is appreciated. If you are chosen to join the Cult, you will be informed soon. You may close this window.\"\n },\n \"followerBuilder\": {\n \"title\": \"Create your follower\",\n \"steps\": {\n \"intro\": {\n \"message\": \"You've joined the Cult! The follower you create here will appear in-game. Keep in mind that your follower will eventually die, but at least it was for a greater cause.\",\n \"actions\": {\n \"goToNextStep\": \"Create your follower\"\n }\n },\n \"skinSelection\": {\n \"actions\": {\n \"goToNextStep\": \"Continue\"\n }\n },\n \"colorSelection\": {\n \"actions\": {\n \"goToPreviousStep\": \"Back to skins\",\n \"goToNextStep\": {\n \"variationsForSkin\": \"Continue\",\n \"noVariationsForSkin\": \"Create my follower\"\n }\n }\n },\n \"variationSelection\": {\n \"actions\": {\n \"goToPreviousStep\": \"Back to colors\",\n \"goToNextStep\": \"Create my follower\"\n }\n }\n }\n }\n },\n \"followerGallery\": {\n \"title\": \"Cult Followers\",\n \"noFollowersText\": \"This Cult has no followers yet.\",\n \"selection_event_prompt_by_reason\": {\n \"SACRIFICE\": \"Vote on a follower to sacrifice!\",\n \"DEMON\": \"Vote on a follower to convert to a Demon!\",\n \"PRISON\": \"Vote on a follower to imprison!\",\n \"MISSIONARY\": \"Vote on a follower to send on a missionary mission!\",\n \"CONFESSION\": \"Vote on a follower to take confession!\",\n \"FOLLOWER_TO_GAIN_XP\": \"Vote on a follower to gain experience!\",\n \"HEALING_BAY\": \"Vote on a follower to heal!\",\n \"SACRIFICE_TO_NIGHT_FOX\": \"Vote on a follower to sacrifice to Night Fox!\",\n \"SACRIFICE_TO_MIDAS\": \"Vote on a follower to sacrifice to Midas!\",\n \"RITUAL_SACRIFICE\": \"Vote on a follower to sacrifice!\",\n \"RITUAL_ASCEND\": \"Vote on a follower to ascend!\",\n \"RITUAL_ENFORCER\": \"Vote on a follower to become an enforcer!\",\n \"RITUAL_FIGHT_PIT\": \"Vote on a follower to send to the fight pit!\",\n \"RITUAL_FUNERAL\": \"Vote on a follower to hold a funeral!\",\n \"RITUAL_RESURRECT\": \"Vote on a follower to resurrect!\",\n \"RITUAL_MARRY\": \"Vote on a follower to marry!\",\n \"BED\": \"Vote on a follower to go to sleep!\"\n },\n \"selection_event_prompt_fallback\": \"Select a follower!\"\n },\n \"helpOrHinder\": {\n \"help\": \"help\",\n \"hinder\": \"hinder\",\n \"hhVotingFlyout\": {\n \"title\": \"Help or Hinder\",\n \"message\": \"Cast your vote\",\n \"timeRemaining\": \"Time remaining: {{time}}\",\n \"voteCount\": \"{{amount}} votes\"\n },\n \"outcomeVotingFlyout\": {\n \"title\": \"Cast your vote to {{helpOrHinder}} {{channelName}}\",\n \"timeRemaining\": \"Time remaining: {{time}}\"\n }\n }\n }\n}\n","{\n \"features\": {\n \"config\": {\n \"title\": \"Begleiter des Lamms\",\n \"subtitle\": \"Twitch-Einbindung-Konfiguration\",\n \"sections\": {\n \"premiumSkins\": {\n \"title\": \"Premium-Skins\",\n \"description\": \"Mit dieser Erweiterung können Zuschauer im Spiel als Anhänger erscheinen. Sie können ihre Anhänger anpassen, einschließlich der Nutzung von Bits für Premium-Skins. Du kannst entscheiden, wie viele Bits sie kosten sollen, oder sie zur freien Nutzung für alle kostenlos anbieten.\",\n \"noBitsOption\": \"Keine Bits für Premium-Skins verlangen\",\n \"bitsFeatureNotAvailable\": \"Dein Kanal kann keine Bits verwenden. Deine Zuschauer können jede Skin verwenden, ohne dafür Bits zu zahlen.\"\n }\n },\n \"actions\": {\n \"save\": \"Änderungen speichern\"\n }\n },\n \"followers\": {\n \"rafflePopup\": {\n \"title\": \"Tritt dem Kult von {{channelName}} bei!\",\n \"subtitle\": \"Du hast die Ziehung gewonnen!\",\n \"timeRemaining\": \"Verbleibende Zeit: {{time}}\",\n \"message\": \"Unserem Kult beizutreten, hat eine Menge Vorteile: die Chance auf zusätzliche dämonische Gliedmaßen, die Ehre, jede Sekunde seines Lebens dem Kult des Lamms zu widmen, und der Ruhm, womöglich als Opfer zu dienen!\",\n \"viewerLinkCta\": \"Um beizutreten: {Identität mitteilen}\",\n \"actions\": {\n \"joinRaffle\": \"Ich möchte dem Kult beitreten.\",\n \"joinRaffleViewerHasAlreadyJoined\": \"Du bist der Ziehung beigetreten.\",\n \"dismissRaffle\": \"Nein danke, ist nichts für mich.\",\n \"dismissRaffleViewerHasAlreadyJoined\": \"Schließen\"\n },\n \"raffleJoinedMessage\": \"Deine Bereitwilligkeit ist löblich. Solltest du auserwählt werden, dem Kult beizutreten, wirst du in Kürze informiert. Du kannst dieses Fenster schließen.\"\n },\n \"followerBuilder\": {\n \"title\": \"Deinen Anhänger erstellen\",\n \"steps\": {\n \"intro\": {\n \"message\": \"Du bist dem Kult beigetreten! Der Anhänger, den du hier erstellst, wird im Spiel erscheinen. Denk daran, dass er irgendwann sterben wird – aber wenigstens im Dienste einer großen Sache.\",\n \"actions\": {\n \"goToNextStep\": \"Deinen Anhänger erstellen\"\n }\n },\n \"skinSelection\": {\n \"actions\": {\n \"goToNextStep\": \"Weiter\"\n }\n },\n \"colorSelection\": {\n \"actions\": {\n \"goToPreviousStep\": \"Zurück zu den Skins\",\n \"goToNextStep\": {\n \"variationsForSkin\": \"Weiter\",\n \"noVariationsForSkin\": \"Meinen Anhänger erstellen\"\n }\n }\n },\n \"variationSelection\": {\n \"actions\": {\n \"goToPreviousStep\": \"Zurück zu den Farben\",\n \"goToNextStep\": \"Meinen Anhänger erstellen\"\n }\n }\n }\n }\n },\n \"helpOrHinder\": {\n \"help\": \"helfen\",\n \"hinder\": \"hindern\",\n \"hhVotingFlyout\": {\n \"title\": \"Helfen oder Hindern\",\n \"message\": \"Stimme abgeben\",\n \"timeRemaining\": \"Verbleibende Zeit: {{time}}\",\n \"voteCount\": \"Stimmen: {{amount}}\"\n },\n \"outcomeVotingFlyout\": {\n \"title\": \"Gib deine Stimme ab, um {{channelName}} zu {{helpOrHinder}}.\",\n \"timeRemaining\": \"Verbleibende Zeit: {{time}}\"\n }\n }\n }\n}\n","{\n \"features\": {\n \"config\": {\n \"title\": \"Acompañante del Cordero\",\n \"subtitle\": \"Configuración de la integración en Twitch\",\n \"sections\": {\n \"premiumSkins\": {\n \"title\": \"Atuendos prémium\",\n \"description\": \"Con esta extensión, tus espectadores aparecerán en el juego como adeptos. Podrán personalizar a sus adeptos, incluso usar bits para obtener atuendos prémium. Selecciona la cantidad de bits que quieres cobrar por estos atuendos prémium. También puedes dejarlos gratis para que cualquiera los use.\",\n \"noBitsOption\": \"No se necesitan bits para atuendos prémium\",\n \"bitsFeatureNotAvailable\": \"Tu canal no emplea bits. Tus espectadores podrán seleccionar cualquier atuendo sin gastar bits.\"\n }\n },\n \"actions\": {\n \"save\": \"Guardar los cambios\"\n }\n },\n \"followers\": {\n \"rafflePopup\": {\n \"title\": \"¡Unirse a la secta de {{channelName}}\",\n \"subtitle\": \"¡Has ganado el sorteo!\",\n \"timeRemaining\": \"Tiempo restante: {{time}}\",\n \"message\": \"Nuestra secta tiene muchas ventajas: puedes conseguir apéndices demoníacos extra, dedicar cada segundo de vida a la Secta del Cordero... ¡incluso el honor de ser sacrificado!\",\n \"viewerLinkCta\": \"Para acceder, {comparte tu identidad}.\",\n \"actions\": {\n \"joinRaffle\": \"Quiero unirme a la secta\",\n \"joinRaffleViewerHasAlreadyJoined\": \"¡Has entrado en el sorteo!\",\n \"dismissRaffle\": \"No gracias, paso\",\n \"dismissRaffleViewerHasAlreadyJoined\": \"Cerrar\"\n },\n \"raffleJoinedMessage\": \"Agradecemos tu buena disposición. Si te eligen para unirte a la secta, pronto te enterarás. Puedes cerrar esta ventana.\"\n },\n \"followerBuilder\": {\n \"title\": \"Crea a tu adepto\",\n \"steps\": {\n \"intro\": {\n \"message\": \"¡Te has unido a la secta! El adepto que crees aquí aparecerá en el juego. Ten en cuenta que acabará muriendo, pero será por una buena causa.\",\n \"actions\": {\n \"goToNextStep\": \"Crea a tu adepto\"\n }\n },\n \"skinSelection\": {\n \"actions\": {\n \"goToNextStep\": \"Continuar\"\n }\n },\n \"colorSelection\": {\n \"actions\": {\n \"goToPreviousStep\": \"Volver a atuendos\",\n \"goToNextStep\": {\n \"variationsForSkin\": \"Continuar\",\n \"noVariationsForSkin\": \"Crear a mi adepto\"\n }\n }\n },\n \"variationSelection\": {\n \"actions\": {\n \"goToPreviousStep\": \"Volver a colores\",\n \"goToNextStep\": \"Crear a mi adepto\"\n }\n }\n }\n }\n },\n \"helpOrHinder\": {\n \"help\": \"ayudar\",\n \"hinder\": \"entorpecer\",\n \"hhVotingFlyout\": {\n \"title\": \"Ayudar o entorpecer\",\n \"message\": \"Emite tu voto\",\n \"timeRemaining\": \"Tiempo restante: {{time}}\",\n \"voteCount\": \"{{amount}} votos\"\n },\n \"outcomeVotingFlyout\": {\n \"title\": \"Emite tu voto por {{helpOrHinder}} a {{channelName}}\",\n \"timeRemaining\": \"Tiempo restante: {{time}}\"\n }\n }\n }\n}\n","{\n \"features\": {\n \"config\": {\n \"title\": \"Partenaire de l'Agneau\",\n \"subtitle\": \"Configuration de l'intégration Twitch\",\n \"sections\": {\n \"premiumSkins\": {\n \"title\": \"Apparences premium\",\n \"description\": \"Grâce à cette extension, les spectateurs auront la possibilité d'apparaître dans le jeu sous la forme d'adeptes. Ils pourront personnaliser leurs personnages en utilisant des Bits contre des apparences premium. À vous de déterminer le prix de ces apparences. Vous pouvez également choisir de les rendre gratuites pour permettre à tout le monde de les utiliser librement.\",\n \"noBitsOption\": \"Rendre les apparences premium gratuites\",\n \"bitsFeatureNotAvailable\": \"Votre chaîne ne peut pas utiliser de Bits. Vos spectateurs pourront utiliser les apparences librement.\"\n }\n },\n \"actions\": {\n \"save\": \"Enregistrer modifications\"\n }\n },\n \"followers\": {\n \"rafflePopup\": {\n \"title\": \"Rejoignez le culte de : {{channelName}} !\",\n \"subtitle\": \"Vous avez gagné le tirage !\",\n \"timeRemaining\": \"Temps restant : {{time}}\",\n \"message\": \"Rejoindre notre culte présente de nombreux avantages : la chance de vivre l'expérience unique d'une transformation démoniaque, l'honneur de dédier chaque seconde de votre vie au culte de l'Agneau tout-puissant, et, un jour peut-être, la gloire apportée par votre sacrifice !\",\n \"viewerLinkCta\": \"Veuillez d'abord {partager votre identité}.\",\n \"actions\": {\n \"joinRaffle\": \"Je veux rejoindre le culte\",\n \"joinRaffleViewerHasAlreadyJoined\": \"Vous participez au tirage\",\n \"dismissRaffle\": \"Non merci\",\n \"dismissRaffleViewerHasAlreadyJoined\": \"Fermer\"\n },\n \"raffleJoinedMessage\": \"Vos intentions sont louables. Vous saurez bientôt si vous rejoindrez le culte. Vous pouvez fermer cette fenêtre.\"\n },\n \"followerBuilder\": {\n \"title\": \"Créer votre adepte\",\n \"steps\": {\n \"intro\": {\n \"message\": \"Vous avez rejoint le culte ! L'adepte que vous allez créer apparaîtra dans le jeu. Bien sûr, votre adepte mourra un jour, mais il aura servi une grande cause !\",\n \"actions\": {\n \"goToNextStep\": \"Créer votre adepte\"\n }\n },\n \"skinSelection\": {\n \"actions\": {\n \"goToNextStep\": \"Continuer\"\n }\n },\n \"colorSelection\": {\n \"actions\": {\n \"goToPreviousStep\": \"Retour aux apparences\",\n \"goToNextStep\": {\n \"variationsForSkin\": \"Continuer\",\n \"noVariationsForSkin\": \"Créer mon adepte\"\n }\n }\n },\n \"variationSelection\": {\n \"actions\": {\n \"goToPreviousStep\": \"Retour aux couleurs\",\n \"goToNextStep\": \"Créer mon adepte\"\n }\n }\n }\n }\n },\n \"helpOrHinder\": {\n \"help\": \"aider\",\n \"hinder\": \"entraver\",\n \"hhVotingFlyout\": {\n \"title\": \"Aider ou entraver\",\n \"message\": \"Votez\",\n \"timeRemaining\": \"Temps restant : {{time}}\",\n \"voteCount\": \"{{amount}} votes\"\n },\n \"outcomeVotingFlyout\": {\n \"title\": \"Votez pour {{helpOrHinder}} {{channelName}}\",\n \"timeRemaining\": \"Temps restant : {{time}}\"\n }\n }\n }\n}\n","{\n \"features\": {\n \"config\": {\n \"title\": \"Companion of the Lamb\",\n \"subtitle\": \"Twitch連携の設定\",\n \"sections\": {\n \"premiumSkins\": {\n \"title\": \"プレミアムスキン\",\n \"description\": \"この拡張機能を使用すると、視聴者が信者としてゲーム内に登場できるようになります。視聴者は信者をカスタマイズでき、ビッツを消費することでプレミアムスキンを使用することもできます。プレミアムスキンの使用に必要なビッツの量はあなたが設定できるほか、無料でスキンを使えるよう設定することも可能です。\",\n \"noBitsOption\": \"プレミアムスキン使用時にビッツを消費しない\",\n \"bitsFeatureNotAvailable\": \"あなたのチャンネルではビッツを使用できないため、視聴者はビッツを消費せず好きなスキンを選択できます。\"\n }\n },\n \"actions\": {\n \"save\": \"変更点を保存する\"\n }\n },\n \"followers\": {\n \"rafflePopup\": {\n \"title\": \"{{channelName}}の教団の一員になろう!\",\n \"subtitle\": \"抽選に選ばれた!\",\n \"timeRemaining\": \"残り時間: {{time}}\",\n \"message\": \"教団に加入すると、悪魔として聖戦に参加したり、子羊の教団の成長に貢献できたり、栄えある生贄に選ばれたりと、様々な栄光を享受できます!\",\n \"viewerLinkCta\": \"参加するには{あなたの情報を共有}してください。\",\n \"actions\": {\n \"joinRaffle\": \"教団への加入を希望します\",\n \"joinRaffleViewerHasAlreadyJoined\": \"抽選に参加しました。\",\n \"dismissRaffle\": \"興味ありません\",\n \"dismissRaffleViewerHasAlreadyJoined\": \"閉じる\"\n },\n \"raffleJoinedMessage\": \"あなたの意志を確認しました。教団の一員として選ばれた際には通知が行くことでしょう。このウィンドウは閉じても問題ありません。\"\n },\n \"followerBuilder\": {\n \"title\": \"信者を作ろう\",\n \"steps\": {\n \"intro\": {\n \"message\": \"教団にようこそ! ここであなたが作成した信者はゲーム内に登場します。あなたの信者はいずれ死亡する運命にありますが、その一生は教団の大義のために捧げられることでしょう。\",\n \"actions\": {\n \"goToNextStep\": \"信者を作る\"\n }\n },\n \"skinSelection\": {\n \"actions\": {\n \"goToNextStep\": \"次へ\"\n }\n },\n \"colorSelection\": {\n \"actions\": {\n \"goToPreviousStep\": \"スキンに戻る\",\n \"goToNextStep\": {\n \"variationsForSkin\": \"次へ\",\n \"noVariationsForSkin\": \"信者を確定する\"\n }\n }\n },\n \"variationSelection\": {\n \"actions\": {\n \"goToPreviousStep\": \"色に戻る\",\n \"goToNextStep\": \"信者を確定する\"\n }\n }\n }\n }\n },\n \"helpOrHinder\": {\n \"help\": \"支援\",\n \"hinder\": \"妨害\",\n \"hhVotingFlyout\": {\n \"title\": \"支援するか妨害するか\",\n \"message\": \"投票しよう\",\n \"timeRemaining\": \"残り時間: {{time}}\",\n \"voteCount\": \"{{amount}} 票\"\n },\n \"outcomeVotingFlyout\": {\n \"title\": \"{{channelName}} を {{helpOrHinder}} 投票しよう!\",\n \"timeRemaining\": \"残り時間: {{time}}\"\n }\n }\n }\n}\n","{\n \"features\": {\n \"config\": {\n \"title\": \"어린 양의 동료\",\n \"subtitle\": \"Twitch 연동 설정\",\n \"sections\": {\n \"premiumSkins\": {\n \"title\": \"프리미엄 스킨\",\n \"description\": \"이 확장요소를 사용하면 귀하의 시청자들이 게임 내에 추종자로서 나타납니다. 시청자들은 추종자로서 커스터마이징을 할 수 있고, 프리미엄 스킨을 위해 Bits를 사용할 수 있습니다. 원하는 양의 Bits를 선택해 프리미엄 스킨의 가격을 설정하거나, 혹은 스킨을 공짜로 두어 누구나 사용할 수 있게 할 수 있습니다.\",\n \"noBitsOption\": \"Bits 없음. 추종자들에게 프리미엄 스킨을 무료로 사용하게 할 것입니다.\",\n \"bitsFeatureNotAvailable\": \"귀하의 채널은 Bits를 사용할 수 없습니다. 귀하의 시청자들은 Bits를 사용하는 스킨을 제외한 모든 스킨을 사용할 수 있습니다.\"\n }\n },\n \"actions\": {\n \"save\": \"변경요소 저장\"\n }\n },\n \"followers\": {\n \"rafflePopup\": {\n \"title\": \"{{channelName}}님의 교단에 입교!\",\n \"subtitle\": \"추첨에 당첨되었습니다!\",\n \"timeRemaining\": \"남은 시간: {{time}}\",\n \"message\": \"본 교단에 합류하면 여러가지 이점이 있습니다. 악마적 추가 외형의 성장 가능성, Cult of the Lamb의 라이브 게임에 참여할 수 있는 영광, 그리고 제물이 될 영광입니다!\",\n \"viewerLinkCta\": \"입교를 위해서, {ID를 입력해주세요}.\",\n \"actions\": {\n \"joinRaffle\": \"입교하겠습니다.\",\n \"joinRaffleViewerHasAlreadyJoined\": \"당신은 추첨에 참여했습니다.\",\n \"dismissRaffle\": \"됐어요, 안 할래요.\",\n \"dismissRaffleViewerHasAlreadyJoined\": \"닫기\"\n },\n \"raffleJoinedMessage\": \"그대의 의지를 알겠습니다. 교단에 입교하기로 선택하셨다면, 곧 통지가 있을 것입니다. 이 창을 닫으셔도 됩니다.\"\n },\n \"followerBuilder\": {\n \"title\": \"추종자 만들기\",\n \"steps\": {\n \"intro\": {\n \"message\": \"교단에 들어왔습니다! 귀하가 여기서 만든 추종자들이 게임에 나타납니다. 귀하의 추종자는 결국 어떻게든 죽는다는 걸 알아두십시오. 하지만 최소한 대의를 위해 몸바치는 것입니다.\",\n \"actions\": {\n \"goToNextStep\": \"추종자 만들기\"\n }\n },\n \"skinSelection\": {\n \"actions\": {\n \"goToNextStep\": \"계속\"\n }\n },\n \"colorSelection\": {\n \"actions\": {\n \"goToPreviousStep\": \"스킨으로 돌아가기\",\n \"goToNextStep\": {\n \"variationsForSkin\": \"계속\",\n \"noVariationsForSkin\": \"내 추종자 만들기\"\n }\n }\n },\n \"variationSelection\": {\n \"actions\": {\n \"goToPreviousStep\": \"색으로 돌아가기\",\n \"goToNextStep\": \"내 추종자 만들기\"\n }\n }\n }\n }\n },\n \"helpOrHinder\": {\n \"help\": \"도움\",\n \"hinder\": \"방해\",\n \"hhVotingFlyout\": {\n \"title\": \"도움 혹은 방해\",\n \"message\": \"투표해주세요\",\n \"timeRemaining\": \"남은 시간: {{time}}\",\n \"voteCount\": \"투표 수: {{amount}}\"\n },\n \"outcomeVotingFlyout\": {\n \"title\": \"{{helpOrHinder}} {{channelName}}에 귀하의 표를 던져주세요!\",\n \"timeRemaining\": \"남은 시간: {{time}}\"\n }\n }\n }\n}\n","{\n \"features\": {\n \"config\": {\n \"title\": \"Companheiro do Cordeiro\",\n \"subtitle\": \"Configuração de integração com a Twitch\",\n \"sections\": {\n \"premiumSkins\": {\n \"title\": \"Skins Premium\",\n \"description\": \"Com essa extensão, seus espectadores podem aparecer como seguidores no jogo. Será possível personalizar seus avatares, incluindo o uso de Bits para skins premium. Selecione o valor em Bits que gostaria de cobrar por essas skins premium, ou deixe-as grátis para que todos possam usá-las.\",\n \"noBitsOption\": \"Não exigir Bits para skins premium\",\n \"bitsFeatureNotAvailable\": \"Não é possível usar Bits no seu canal. Seus espectadores poderão selecionar qualquer skin que quiserem sem usar Bits.\"\n }\n },\n \"actions\": {\n \"save\": \"Salvar alterações\"\n }\n },\n \"followers\": {\n \"rafflePopup\": {\n \"title\": \"Participe do Culto de {{channelName}}!\",\n \"subtitle\": \"Você ganhou o sorteio!\",\n \"timeRemaining\": \"Tempo restante: {{time}}\",\n \"message\": \"Juntar-se a nós tem muitas vantagens: a chance de desenvolver membros demoníacos, a honra de dedicar cada segundo da sua vida ao Culto do Cordeiro e a glória de possivelmente ser sacrificado!\",\n \"viewerLinkCta\": \"Para entrar, por favor {share your identity}.\",\n \"actions\": {\n \"joinRaffle\": \"Quero entrar para o Culto\",\n \"joinRaffleViewerHasAlreadyJoined\": \"Você entrou no sorteio\",\n \"dismissRaffle\": \"Não, valeu\",\n \"dismissRaffleViewerHasAlreadyJoined\": \"Fechar\"\n },\n \"raffleJoinedMessage\": \"Seu interesse é apreciado. Você logo saberá se for a pessoa escolhida para entrar para o Culto. Já pode fechar essa janela.\"\n },\n \"followerBuilder\": {\n \"title\": \"Crie seu seguidor\",\n \"steps\": {\n \"intro\": {\n \"message\": \"Você entrou para o Culto! O seguidor que você criar aqui aparecerá no jogo. Tenha em mente que seu seguidor morrerá em algum momento, mas ao menos será por uma boa causa.\",\n \"actions\": {\n \"goToNextStep\": \"Crie seu seguidor\"\n }\n },\n \"skinSelection\": {\n \"actions\": {\n \"goToNextStep\": \"Continuar\"\n }\n },\n \"colorSelection\": {\n \"actions\": {\n \"goToPreviousStep\": \"Voltar às skins\",\n \"goToNextStep\": {\n \"variationsForSkin\": \"Continuar\",\n \"noVariationsForSkin\": \"Criar meu seguidor\"\n }\n }\n },\n \"variationSelection\": {\n \"actions\": {\n \"goToPreviousStep\": \"Voltar às cores\",\n \"goToNextStep\": \"Criar meu seguidor\"\n }\n }\n }\n }\n },\n \"helpOrHinder\": {\n \"help\": \"ajudar\",\n \"hinder\": \"complicar\",\n \"hhVotingFlyout\": {\n \"title\": \"Ajudar ou Complicar\",\n \"message\": \"Vote\",\n \"timeRemaining\": \"Tempo restante: {{time}}\",\n \"voteCount\": \"{{amount}} votos\"\n },\n \"outcomeVotingFlyout\": {\n \"title\": \"Vote para {{helpOrHinder}} {{channelName}}\",\n \"timeRemaining\": \"Tempo restante: {{time}}\"\n }\n }\n }\n}\n","{\n \"features\": {\n \"config\": {\n \"title\": \"Компаньон ягнёнка\",\n \"subtitle\": \"Настройки интеграции с Twitch\",\n \"sections\": {\n \"premiumSkins\": {\n \"title\": \"Премиальные облики\",\n \"description\": \"Благодаря этому расширению ваши зрители смогут появиться в игре. У них будет возможность определить внешний вид последователя, в том числе купить один из премиальных обликов за Bits. Выберите, сколько Bits вы хотите получать за премиальные облики, или сделайте их бесплатными.\",\n \"noBitsOption\": \"Бесплатные премиальные облики\",\n \"bitsFeatureNotAvailable\": \"На вашем канале нельзя покупать Bits. Зрители смогут выбрать любой облик бесплатно.\"\n }\n },\n \"actions\": {\n \"save\": \"Сохранить изменения\"\n }\n },\n \"followers\": {\n \"rafflePopup\": {\n \"title\": \"Набор последователей в культ {{channelName}}\",\n \"subtitle\": \"Вы победили в розыгрыше!\",\n \"timeRemaining\": \"Оставшееся время: {{time}}\",\n \"message\": \"В нашем поселении вы сможете превратиться в демона, посвятить каждую секунду своей жизни служению культу ягнёнка и даже отдать за него жизнь. От таких предложений не отказываются.\",\n \"viewerLinkCta\": \"Для участия {требуется ваш псевдоним}.\",\n \"actions\": {\n \"joinRaffle\": \"Хочу стать последователем\",\n \"joinRaffleViewerHasAlreadyJoined\": \"Вы присоединились к розыгрышу\",\n \"dismissRaffle\": \"Всё-таки откажусь\",\n \"dismissRaffleViewerHasAlreadyJoined\": \"Закрыть\"\n },\n \"raffleJoinedMessage\": \"Ваше рвение похвально. Если вас изберут новым последователем, вы получите уведомление. Это окно можно закрыть.\"\n },\n \"followerBuilder\": {\n \"title\": \"Создание последователя\",\n \"steps\": {\n \"intro\": {\n \"message\": \"Вы присоединились к служителям культа. Созданный вами последователь появится в игре. Учтите, что рано или поздно он умрёт — но его смерть не будет напрасной.\",\n \"actions\": {\n \"goToNextStep\": \"Создать последователя\"\n }\n },\n \"skinSelection\": {\n \"actions\": {\n \"goToNextStep\": \"Продолжить\"\n }\n },\n \"colorSelection\": {\n \"actions\": {\n \"goToPreviousStep\": \"Вернуться к обликам\",\n \"goToNextStep\": {\n \"variationsForSkin\": \"Продолжить\",\n \"noVariationsForSkin\": \"Создать последователя\"\n }\n }\n },\n \"variationSelection\": {\n \"actions\": {\n \"goToPreviousStep\": \"Вернуться к цветам\",\n \"goToNextStep\": \"Создать последователя\"\n }\n }\n }\n }\n },\n \"helpOrHinder\": {\n \"help\": \"помочь\",\n \"hinder\": \"навредить\",\n \"hhVotingFlyout\": {\n \"title\": \"Помочь или навредить?\",\n \"message\": \"Сделайте выбор\",\n \"timeRemaining\": \"Оставшееся время: {{time}}\",\n \"voteCount\": \"Голоса: {{amount}}\"\n },\n \"outcomeVotingFlyout\": {\n \"title\": \"Как {{helpOrHinder}} {{channelName}}?\",\n \"timeRemaining\": \"Оставшееся время: {{time}}\"\n }\n }\n }\n}\n","{\n \"features\": {\n \"config\": {\n \"title\": \"圣羊的同伴\",\n \"subtitle\": \"Twitch 整合设定\",\n \"sections\": {\n \"premiumSkins\": {\n \"title\": \"特级皮肤\",\n \"description\": \"使用此实况互动组件后,你的观众就能成为游戏里的教徒。观众可以自定义自己的教徒,包含使用呼币(Bits)换取特级皮肤。你可以决定换取特级皮肤所需要的呼币数量,或维持免费,让所有人使用这些皮肤。\",\n \"noBitsOption\": \"特级皮肤不需要呼币\",\n \"bitsFeatureNotAvailable\": \"你的频道无法使用呼币,观众将能任选喜欢的皮肤,不必使用呼币。\"\n }\n },\n \"actions\": {\n \"save\": \"储存变更\"\n }\n },\n \"followers\": {\n \"rafflePopup\": {\n \"title\": \"加入{{channelName}}的教会!\",\n \"subtitle\": \"您赢了抽奖!\",\n \"timeRemaining\": \"剩余时间:{{time}}\",\n \"message\": \"加入本教会有许多好处:有机会长出额外的恶魔附肢,享有把活着的每分每秒都献给圣羊教的荣誉,还有可能被献祭的荣耀!\",\n \"viewerLinkCta\": \"参加前,请{share your identity}。\",\n \"actions\": {\n \"joinRaffle\": \"我想入教\",\n \"joinRaffleViewerHasAlreadyJoined\": \"您参加了抽奖\",\n \"dismissRaffle\": \"谢谢,不用\",\n \"dismissRaffleViewerHasAlreadyJoined\": \"关闭\"\n },\n \"raffleJoinedMessage\": \"感谢您愿意加入。如果您获选入教,将马上收到通知。您可以关闭此窗口了。\"\n },\n \"followerBuilder\": {\n \"title\": \"建立您的教徒\",\n \"steps\": {\n \"intro\": {\n \"message\": \"您加入本教会了!您建立的教徒将在游戏里出现。请别忘了,您的教徒最终会死亡,不过至少是为了崇高大业。\",\n \"actions\": {\n \"goToNextStep\": \"建立您的教徒\"\n }\n },\n \"skinSelection\": {\n \"actions\": {\n \"goToNextStep\": \"继续\"\n }\n },\n \"colorSelection\": {\n \"actions\": {\n \"goToPreviousStep\": \"回到皮肤\",\n \"goToNextStep\": {\n \"variationsForSkin\": \"继续\",\n \"noVariationsForSkin\": \"建立教徒\"\n }\n }\n },\n \"variationSelection\": {\n \"actions\": {\n \"goToPreviousStep\": \"返回颜色\",\n \"goToNextStep\": \"建立教徒\"\n }\n }\n }\n }\n },\n \"helpOrHinder\": {\n \"help\": \"帮忙\",\n \"hinder\": \"阻碍\",\n \"hhVotingFlyout\": {\n \"title\": \"帮忙还是阻碍\",\n \"message\": \"参加投票\",\n \"timeRemaining\": \"剩余时间:{{time}}\",\n \"voteCount\": \"{{amount}} 票\"\n },\n \"outcomeVotingFlyout\": {\n \"title\": \"投票参加{{channelName}}的{{helpOrHinder}}\",\n \"timeRemaining\": \"剩余时间:{{time}}\"\n }\n }\n }\n}\n","{\n \"features\": {\n \"config\": {\n \"title\": \"聖羊的同伴\",\n \"subtitle\": \"Twitch 整合設定\",\n \"sections\": {\n \"premiumSkins\": {\n \"title\": \"特級外觀\",\n \"description\": \"使用此實況互動元件後,你的觀眾就能成為遊戲裡的教徒。觀眾可以自訂自己的教徒,包含使用小奇點(Bits)換取特級外觀。你可以決定換取特級外觀所需要的小奇點數量,或維持免費,讓所有人使用這些外觀。\",\n \"noBitsOption\": \"特級外觀不需要小奇點\",\n \"bitsFeatureNotAvailable\": \"你的頻道無法使用小奇點,觀眾將能任選喜歡的外觀,不必使用小奇點。\"\n }\n },\n \"actions\": {\n \"save\": \"儲存變更\"\n }\n },\n \"followers\": {\n \"rafflePopup\": {\n \"title\": \"加入{{channelName}}的教會!\",\n \"subtitle\": \"您贏了抽獎!\",\n \"timeRemaining\": \"剩餘時間:{{time}}\",\n \"message\": \"加入本教會有許多好處:有機會長出額外的惡魔附肢,享有把活著的每分每秒都獻給聖羊教的榮譽,還有可能被獻祭的榮耀!\",\n \"viewerLinkCta\": \"參加前,請{share your identity}。\",\n \"actions\": {\n \"joinRaffle\": \"我想入教\",\n \"joinRaffleViewerHasAlreadyJoined\": \"您參加了抽獎\",\n \"dismissRaffle\": \"謝謝,不用\",\n \"dismissRaffleViewerHasAlreadyJoined\": \"關閉\"\n },\n \"raffleJoinedMessage\": \"感謝您願意加入。如果您獲選入教,將馬上收到通知。您可以關閉此視窗了。\"\n },\n \"followerBuilder\": {\n \"title\": \"建立您的教徒\",\n \"steps\": {\n \"intro\": {\n \"message\": \"您加入本教會了!您建立的教徒將在遊戲裡出現。請別忘了,您的教徒最終會死亡,不過至少是為了崇高大業。\",\n \"actions\": {\n \"goToNextStep\": \"建立您的教徒\"\n }\n },\n \"skinSelection\": {\n \"actions\": {\n \"goToNextStep\": \"繼續\"\n }\n },\n \"colorSelection\": {\n \"actions\": {\n \"goToPreviousStep\": \"回到外觀\",\n \"goToNextStep\": {\n \"variationsForSkin\": \"繼續\",\n \"noVariationsForSkin\": \"建立教徒\"\n }\n }\n },\n \"variationSelection\": {\n \"actions\": {\n \"goToPreviousStep\": \"返回顏色\",\n \"goToNextStep\": \"建立教徒\"\n }\n }\n }\n }\n },\n \"helpOrHinder\": {\n \"help\": \"幫忙\",\n \"hinder\": \"阻礙\",\n \"hhVotingFlyout\": {\n \"title\": \"幫忙還是阻礙\",\n \"message\": \"參加投票\",\n \"timeRemaining\": \"剩餘時間:{{time}}\",\n \"voteCount\": \"{{amount}} 票\"\n },\n \"outcomeVotingFlyout\": {\n \"title\": \"投票參加{{channelName}}的{{helpOrHinder}}\",\n \"timeRemaining\": \"剩餘時間:{{time}}\"\n }\n }\n }\n}\n","import axios from \"axios\";\nimport { useEffect } from \"react\";\nimport queryString from \"query-string\";\n\nimport useTwitch from \"./useTwitch.js\";\n\nconst queryParams = queryString.parse(window.location.search);\n\nconst isDevelopment =\n !queryParams.state ||\n [\"testing\", \"hosted_test\", \"in_review\"].includes(queryParams.state);\nconst apiBaseUrl = isDevelopment\n ? process.env.DEV_EBS_API_BASE_URL\n : process.env.PROD_EBS_API_BASE_URL;\n\nconsole.log(\"API Base URL:\", apiBaseUrl);\n\nconst ebsApiClient = axios.create({\n baseURL: apiBaseUrl,\n});\n\nexport default function useEbsApiClient() {\n const { auth } = useTwitch();\n\n useEffect(() => {\n if (auth.token) {\n ebsApiClient.defaults.headers = {\n Authorization: `Bearer ${auth.token}`,\n };\n }\n }, [auth]);\n\n return ebsApiClient;\n}\n","import axios from \"axios\";\nimport { useContext } from \"react\";\nimport queryString from \"query-string\";\n\nimport {\n TwitchContextContext,\n TwitchAuthContext,\n TwitchBroadcastContext,\n TwitchBitsContext,\n} from \"../contexts\";\n\nconst queryParams = queryString.parse(window.location.search);\nconst isHostedOnTwitch = Boolean(queryParams.state);\n\nexport default function useTwitch() {\n const twitch = window.Twitch.ext;\n\n const auth = useContext(TwitchAuthContext);\n const context = useContext(TwitchContextContext);\n const bits = useContext(TwitchBitsContext);\n const { addPubSubEventListener, removePubSubEventListener } = useContext(\n TwitchBroadcastContext\n );\n\n const useBitsPromisified = (sku) => {\n if (!isHostedOnTwitch) {\n twitch.bits.setUseLoopback(true);\n }\n\n return new Promise((resolve, reject) => {\n twitch.bits.onTransactionComplete(resolve);\n twitch.bits.onTransactionCancelled(reject);\n twitch.bits.useBits(sku);\n });\n };\n\n const getBroadcasterType = async () => {\n try {\n const response = await axios.get(\n `https://api.twitch.tv/helix/users?id=${auth.channelId}`,\n {\n headers: {\n \"Client-ID\": process.env.TWITCH_EXTENSION_CLIENT_ID,\n Authorization: `Extension ${auth.helixToken}`,\n },\n }\n );\n\n if (response.status === 200) {\n return response.data.data[0].broadcaster_type;\n }\n\n return null;\n } catch (err) {\n return null;\n }\n\n return null;\n };\n\n return {\n auth,\n context,\n channelId: auth.channelId,\n actions: twitch.actions,\n bits: {\n ...twitch.bits,\n products: bits.products,\n useBitsPromisified,\n },\n features: twitch.features,\n viewer: twitch.viewer,\n role: twitch.viewer.role,\n isLinked: twitch.viewer.isLinked,\n addPubSubEventListener,\n removePubSubEventListener,\n getBroadcasterType,\n };\n}\n","import { createContext } from \"react\";\n\nexport const TwitchAuthContext = createContext(null);\nexport const TwitchContextContext = createContext(null);\nexport const TwitchBroadcastContext = createContext(null);\nexport const TwitchChannelContext = createContext(null);\nexport const TwitchBitsContext = createContext({\n products: [],\n});\nexport const GameVersionContext = createContext(null);\nexport const FollowerVariationPreviewsContext = createContext(null);\nexport const TimersContext = createContext(null);\n","import React, { useState, useEffect, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport queryString from \"query-string\";\nimport sortBy from \"lodash/sortBy\";\n\nimport createFakeTwitchHelper from \"../../lib/create-fake-twitch-helper\";\nimport {\n TwitchAuthContext,\n TwitchBitsContext,\n TwitchBroadcastContext,\n TwitchContextContext,\n} from \"../../contexts\";\nimport FakeHelperOptionsModal from \"../FakeHelperOptionsModal/FakeHelperOptionsModal.js\";\n\nconst queryParams = queryString.parse(window.location.search);\n\nconst TwitchHelper = ({ useFakeTwitchHelperAPI = false, children }) => {\n const canInitialiseFakeHelper = [\n queryParams.channel_id,\n queryParams.user_id,\n ].every(Boolean);\n const [isInitialised, setIsInitialised] = useState(false);\n const [auth, setAuth] = useState(null);\n const [context, setContext] = useState(null);\n const [bitsProducts, setBitsProducts] = useState([]);\n const listenersByTarget = useRef({});\n const [isFakeHelperOptionsModalVisible, setIsFakeHelperOptionsModalVisible] =\n useState(useFakeTwitchHelperAPI && !canInitialiseFakeHelper);\n\n const addPubSubEventListener = (target, callback) => {\n if (!listenersByTarget.current[target]) {\n listenersByTarget.current[target] = [];\n }\n\n if (!listenersByTarget.current[target].find(callback)) {\n listenersByTarget.current[target].push(callback);\n }\n };\n\n const removePubSubEventListener = (target, callback) => {\n if (!listenersByTarget.current[target]) {\n return;\n }\n\n listenersByTarget.current[target] = listenersByTarget.current[\n target\n ].filter((cb) => cb !== callback);\n };\n\n useEffect(() => {\n const handler = (e) => {\n if (e.key === \"F2\") {\n setIsFakeHelperOptionsModalVisible(true);\n }\n };\n\n window.addEventListener(\"keyup\", handler);\n\n return () => {\n window.removeEventListener(\"keyup\", handler);\n };\n }, []);\n\n useEffect(() => {\n (async () => {\n let twitchHelper = window.Twitch.ext;\n\n if (useFakeTwitchHelperAPI && !canInitialiseFakeHelper) {\n return;\n }\n\n if (useFakeTwitchHelperAPI) {\n const fakeTwitchHelper = await createFakeTwitchHelper();\n twitchHelper = fakeTwitchHelper;\n\n window.Twitch = {\n ext: fakeTwitchHelper,\n };\n }\n\n const products = await twitchHelper.bits.getProducts();\n setBitsProducts(\n sortBy(products, (product) => Number(product.cost.amount))\n );\n\n twitchHelper.listen(\n \"broadcast\",\n async function (target, contentType, data) {\n const { event, payload } = JSON.parse(data);\n console.log(\"[Twitch broadcast]:\", { event, payload });\n const listeners = listenersByTarget.current[event] || [];\n listeners.forEach((listener) => listener(payload));\n }\n );\n\n twitchHelper.onAuthorized((auth) => {\n setAuth(auth);\n setIsInitialised(true);\n //\n //try {\n // Sentry.setUser({ id: auth.userId });\n // Sentry.setTag(\"channelId\", auth.channelId);\n // const version = window.pathname.split(\"/\")[2];\n // Sentry.setTag(\"extensionVersion\", version || \"NO_VERSION\");\n //} catch (err) {}\n });\n\n twitchHelper.onContext((context) => {\n setContext(context);\n });\n })();\n }, []);\n\n if (isFakeHelperOptionsModalVisible) {\n return ;\n }\n\n if (!isInitialised) {\n return null;\n }\n\n const broadcastContextValue = {\n addPubSubEventListener,\n removePubSubEventListener,\n };\n\n return (\n \n \n \n \n {children}\n \n \n \n \n );\n};\n\nTwitchHelper.propTypes = {\n useFakeTwitchHelperAPI: PropTypes.bool,\n};\n\nexport default TwitchHelper;\n","/**\n * Copyright (c) 2013-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\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-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\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-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\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","var baseFlatten = require('./_baseFlatten'),\n baseOrderBy = require('./_baseOrderBy'),\n baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var arrayMap = require('./_arrayMap'),\n baseGet = require('./_baseGet'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","import axios from \"axios\";\nimport Pusher from \"pusher-js\";\nimport queryString from \"query-string\";\n\nlet context = {\n arePlayerControlsVisible: false,\n bitrate: 5000,\n bufferSize: 100,\n displayResolution: \"1280x720\",\n game: \"Don't Starve\",\n hlsLatencyBroadcaster: 5,\n isFullScreen: false,\n isMuted: false,\n isPaused: false,\n isTheatreMode: false,\n language: \"en\",\n mode: \"viewer\",\n playbackMode: \"video\",\n theme: \"light\",\n videoResolution: \"1280x720\",\n volume: 0.5,\n};\nlet contextHandler = null;\n\nconst listenCallbacksByTarget = {};\nconst bitsTransactionCompleteListeners = [];\nconst bitsTransactionCancelledListeners = [];\n\nfunction receiveFakePubSub(target, data) {\n const listeners = listenCallbacksByTarget[target] || [];\n listeners.forEach((listener) => listener(null, null, data));\n}\n\nexport default async function createFakeTwitchHelper() {\n const queryParams = queryString.parse(window.location.search);\n //Pusher.logToConsole = true;\n console.log(\"Initializing fake Twitch helper.\");\n\n const { channel_id, user_id, role, is_linked } = {\n user_id: queryParams.user_id || \"DEBUG_USER\",\n channel_id: queryParams.channel_id || \"DEBUG_CHANNEL\",\n role: queryParams.role || \"viewer\",\n is_linked: queryParams.is_linked ? queryParams.is_linked === \"true\" : true,\n };\n\n // Get fake auth token and create response\n const { data: tokenData } = await axios.post(\n `${process.env.DEV_EBS_API_BASE_URL}/auth/token`,\n {\n user_id,\n channel_id,\n role,\n }\n );\n\n const pusher = new Pusher(process.env.FAKE_TWITCH_PUBSUB_PUSHER_KEY, {\n cluster: \"eu\",\n });\n\n const channel = pusher.subscribe(channel_id);\n channel.bind(\"broadcast\", function (data) {\n receiveFakePubSub(\"broadcast\", JSON.stringify(data));\n });\n\n return {\n receiveFakePubSub: receiveFakePubSub,\n listen: (target, callback) => {\n if (!listenCallbacksByTarget[target]) {\n listenCallbacksByTarget[target] = [];\n }\n\n listenCallbacksByTarget[target].push(callback);\n },\n onAuthorized: (fn) => {\n fn({\n channelId: channel,\n userId: user_id,\n token: tokenData.token,\n });\n },\n updateContext: (updatedContext) => {\n if (contextHandler) {\n context = { ...context, ...updatedContext };\n contextHandler(context);\n }\n },\n onContext: (fn) => {\n contextHandler = fn;\n fn(context);\n },\n viewer: {\n isLinked: is_linked,\n id: user_id,\n role,\n },\n actions: {\n requestIdShare: () => {\n console.log(\"TODO: implement\");\n },\n },\n features: {\n isBitsEnabled: true,\n },\n bits: {\n getProducts: () => [\n {\n cost: {\n amount: 100,\n type: \"bits\",\n },\n displayName: \"Premium Skin - 100 Bits\",\n sku: \"PREMIUM_SKIN_100_BITS\",\n inDevelopment: true,\n },\n {\n cost: {\n amount: 250,\n type: \"bits\",\n },\n displayName: \"Premium Skin - 250 Bits\",\n sku: \"PREMIUM_SKIN_250_BITS\",\n inDevelopment: true,\n },\n ],\n setUseLoopback: () => {},\n onTransactionComplete: (handler) =>\n bitsTransactionCompleteListeners.push(handler),\n onTransactionCancelled: (handler) =>\n bitsTransactionCancelledListeners.push(handler),\n useBits: (sku) => {\n const fakeTransaction = { transactionId: \"FAKE_TRANSACTION_ID\" };\n\n bitsTransactionCompleteListeners.forEach((listener) => {\n listener(fakeTransaction);\n });\n },\n },\n };\n}\n","/*!\n * Pusher JavaScript Library v7.6.0\n * https://pusher.com/\n *\n * Copyright 2020, Pusher\n * Released under the MIT licence.\n */\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Pusher\"] = factory();\n\telse\n\t\troot[\"Pusher\"] = factory();\n})(window, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 2);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package base64 implements Base64 encoding and decoding.\n */\n// Invalid character used in decoding to indicate\n// that the character to decode is out of range of\n// alphabet and cannot be decoded.\nvar INVALID_BYTE = 256;\n/**\n * Implements standard Base64 encoding.\n *\n * Operates in constant time.\n */\nvar Coder = /** @class */ (function () {\n // TODO(dchest): methods to encode chunk-by-chunk.\n function Coder(_paddingCharacter) {\n if (_paddingCharacter === void 0) { _paddingCharacter = \"=\"; }\n this._paddingCharacter = _paddingCharacter;\n }\n Coder.prototype.encodedLength = function (length) {\n if (!this._paddingCharacter) {\n return (length * 8 + 5) / 6 | 0;\n }\n return (length + 2) / 3 * 4 | 0;\n };\n Coder.prototype.encode = function (data) {\n var out = \"\";\n var i = 0;\n for (; i < data.length - 2; i += 3) {\n var c = (data[i] << 16) | (data[i + 1] << 8) | (data[i + 2]);\n out += this._encodeByte((c >>> 3 * 6) & 63);\n out += this._encodeByte((c >>> 2 * 6) & 63);\n out += this._encodeByte((c >>> 1 * 6) & 63);\n out += this._encodeByte((c >>> 0 * 6) & 63);\n }\n var left = data.length - i;\n if (left > 0) {\n var c = (data[i] << 16) | (left === 2 ? data[i + 1] << 8 : 0);\n out += this._encodeByte((c >>> 3 * 6) & 63);\n out += this._encodeByte((c >>> 2 * 6) & 63);\n if (left === 2) {\n out += this._encodeByte((c >>> 1 * 6) & 63);\n }\n else {\n out += this._paddingCharacter || \"\";\n }\n out += this._paddingCharacter || \"\";\n }\n return out;\n };\n Coder.prototype.maxDecodedLength = function (length) {\n if (!this._paddingCharacter) {\n return (length * 6 + 7) / 8 | 0;\n }\n return length / 4 * 3 | 0;\n };\n Coder.prototype.decodedLength = function (s) {\n return this.maxDecodedLength(s.length - this._getPaddingLength(s));\n };\n Coder.prototype.decode = function (s) {\n if (s.length === 0) {\n return new Uint8Array(0);\n }\n var paddingLength = this._getPaddingLength(s);\n var length = s.length - paddingLength;\n var out = new Uint8Array(this.maxDecodedLength(length));\n var op = 0;\n var i = 0;\n var haveBad = 0;\n var v0 = 0, v1 = 0, v2 = 0, v3 = 0;\n for (; i < length - 4; i += 4) {\n v0 = this._decodeChar(s.charCodeAt(i + 0));\n v1 = this._decodeChar(s.charCodeAt(i + 1));\n v2 = this._decodeChar(s.charCodeAt(i + 2));\n v3 = this._decodeChar(s.charCodeAt(i + 3));\n out[op++] = (v0 << 2) | (v1 >>> 4);\n out[op++] = (v1 << 4) | (v2 >>> 2);\n out[op++] = (v2 << 6) | v3;\n haveBad |= v0 & INVALID_BYTE;\n haveBad |= v1 & INVALID_BYTE;\n haveBad |= v2 & INVALID_BYTE;\n haveBad |= v3 & INVALID_BYTE;\n }\n if (i < length - 1) {\n v0 = this._decodeChar(s.charCodeAt(i));\n v1 = this._decodeChar(s.charCodeAt(i + 1));\n out[op++] = (v0 << 2) | (v1 >>> 4);\n haveBad |= v0 & INVALID_BYTE;\n haveBad |= v1 & INVALID_BYTE;\n }\n if (i < length - 2) {\n v2 = this._decodeChar(s.charCodeAt(i + 2));\n out[op++] = (v1 << 4) | (v2 >>> 2);\n haveBad |= v2 & INVALID_BYTE;\n }\n if (i < length - 3) {\n v3 = this._decodeChar(s.charCodeAt(i + 3));\n out[op++] = (v2 << 6) | v3;\n haveBad |= v3 & INVALID_BYTE;\n }\n if (haveBad !== 0) {\n throw new Error(\"Base64Coder: incorrect characters for decoding\");\n }\n return out;\n };\n // Standard encoding have the following encoded/decoded ranges,\n // which we need to convert between.\n //\n // ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 + /\n // Index: 0 - 25 26 - 51 52 - 61 62 63\n // ASCII: 65 - 90 97 - 122 48 - 57 43 47\n //\n // Encode 6 bits in b into a new character.\n Coder.prototype._encodeByte = function (b) {\n // Encoding uses constant time operations as follows:\n //\n // 1. Define comparison of A with B using (A - B) >>> 8:\n // if A > B, then result is positive integer\n // if A <= B, then result is 0\n //\n // 2. Define selection of C or 0 using bitwise AND: X & C:\n // if X == 0, then result is 0\n // if X != 0, then result is C\n //\n // 3. Start with the smallest comparison (b >= 0), which is always\n // true, so set the result to the starting ASCII value (65).\n //\n // 4. Continue comparing b to higher ASCII values, and selecting\n // zero if comparison isn't true, otherwise selecting a value\n // to add to result, which:\n //\n // a) undoes the previous addition\n // b) provides new value to add\n //\n var result = b;\n // b >= 0\n result += 65;\n // b > 25\n result += ((25 - b) >>> 8) & ((0 - 65) - 26 + 97);\n // b > 51\n result += ((51 - b) >>> 8) & ((26 - 97) - 52 + 48);\n // b > 61\n result += ((61 - b) >>> 8) & ((52 - 48) - 62 + 43);\n // b > 62\n result += ((62 - b) >>> 8) & ((62 - 43) - 63 + 47);\n return String.fromCharCode(result);\n };\n // Decode a character code into a byte.\n // Must return 256 if character is out of alphabet range.\n Coder.prototype._decodeChar = function (c) {\n // Decoding works similar to encoding: using the same comparison\n // function, but now it works on ranges: result is always incremented\n // by value, but this value becomes zero if the range is not\n // satisfied.\n //\n // Decoding starts with invalid value, 256, which is then\n // subtracted when the range is satisfied. If none of the ranges\n // apply, the function returns 256, which is then checked by\n // the caller to throw error.\n var result = INVALID_BYTE; // start with invalid character\n // c == 43 (c > 42 and c < 44)\n result += (((42 - c) & (c - 44)) >>> 8) & (-INVALID_BYTE + c - 43 + 62);\n // c == 47 (c > 46 and c < 48)\n result += (((46 - c) & (c - 48)) >>> 8) & (-INVALID_BYTE + c - 47 + 63);\n // c > 47 and c < 58\n result += (((47 - c) & (c - 58)) >>> 8) & (-INVALID_BYTE + c - 48 + 52);\n // c > 64 and c < 91\n result += (((64 - c) & (c - 91)) >>> 8) & (-INVALID_BYTE + c - 65 + 0);\n // c > 96 and c < 123\n result += (((96 - c) & (c - 123)) >>> 8) & (-INVALID_BYTE + c - 97 + 26);\n return result;\n };\n Coder.prototype._getPaddingLength = function (s) {\n var paddingLength = 0;\n if (this._paddingCharacter) {\n for (var i = s.length - 1; i >= 0; i--) {\n if (s[i] !== this._paddingCharacter) {\n break;\n }\n paddingLength++;\n }\n if (s.length < 4 || paddingLength > 2) {\n throw new Error(\"Base64Coder: incorrect padding\");\n }\n }\n return paddingLength;\n };\n return Coder;\n}());\nexports.Coder = Coder;\nvar stdCoder = new Coder();\nfunction encode(data) {\n return stdCoder.encode(data);\n}\nexports.encode = encode;\nfunction decode(s) {\n return stdCoder.decode(s);\n}\nexports.decode = decode;\n/**\n * Implements URL-safe Base64 encoding.\n * (Same as Base64, but '+' is replaced with '-', and '/' with '_').\n *\n * Operates in constant time.\n */\nvar URLSafeCoder = /** @class */ (function (_super) {\n __extends(URLSafeCoder, _super);\n function URLSafeCoder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // URL-safe encoding have the following encoded/decoded ranges:\n //\n // ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 - _\n // Index: 0 - 25 26 - 51 52 - 61 62 63\n // ASCII: 65 - 90 97 - 122 48 - 57 45 95\n //\n URLSafeCoder.prototype._encodeByte = function (b) {\n var result = b;\n // b >= 0\n result += 65;\n // b > 25\n result += ((25 - b) >>> 8) & ((0 - 65) - 26 + 97);\n // b > 51\n result += ((51 - b) >>> 8) & ((26 - 97) - 52 + 48);\n // b > 61\n result += ((61 - b) >>> 8) & ((52 - 48) - 62 + 45);\n // b > 62\n result += ((62 - b) >>> 8) & ((62 - 45) - 63 + 95);\n return String.fromCharCode(result);\n };\n URLSafeCoder.prototype._decodeChar = function (c) {\n var result = INVALID_BYTE;\n // c == 45 (c > 44 and c < 46)\n result += (((44 - c) & (c - 46)) >>> 8) & (-INVALID_BYTE + c - 45 + 62);\n // c == 95 (c > 94 and c < 96)\n result += (((94 - c) & (c - 96)) >>> 8) & (-INVALID_BYTE + c - 95 + 63);\n // c > 47 and c < 58\n result += (((47 - c) & (c - 58)) >>> 8) & (-INVALID_BYTE + c - 48 + 52);\n // c > 64 and c < 91\n result += (((64 - c) & (c - 91)) >>> 8) & (-INVALID_BYTE + c - 65 + 0);\n // c > 96 and c < 123\n result += (((96 - c) & (c - 123)) >>> 8) & (-INVALID_BYTE + c - 97 + 26);\n return result;\n };\n return URLSafeCoder;\n}(Coder));\nexports.URLSafeCoder = URLSafeCoder;\nvar urlSafeCoder = new URLSafeCoder();\nfunction encodeURLSafe(data) {\n return urlSafeCoder.encode(data);\n}\nexports.encodeURLSafe = encodeURLSafe;\nfunction decodeURLSafe(s) {\n return urlSafeCoder.decode(s);\n}\nexports.decodeURLSafe = decodeURLSafe;\nexports.encodedLength = function (length) {\n return stdCoder.encodedLength(length);\n};\nexports.maxDecodedLength = function (length) {\n return stdCoder.maxDecodedLength(length);\n};\nexports.decodedLength = function (s) {\n return stdCoder.decodedLength(s);\n};\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package utf8 implements UTF-8 encoding and decoding.\n */\nvar INVALID_UTF16 = \"utf8: invalid string\";\nvar INVALID_UTF8 = \"utf8: invalid source encoding\";\n/**\n * Encodes the given string into UTF-8 byte array.\n * Throws if the source string has invalid UTF-16 encoding.\n */\nfunction encode(s) {\n // Calculate result length and allocate output array.\n // encodedLength() also validates string and throws errors,\n // so we don't need repeat validation here.\n var arr = new Uint8Array(encodedLength(s));\n var pos = 0;\n for (var i = 0; i < s.length; i++) {\n var c = s.charCodeAt(i);\n if (c < 0x80) {\n arr[pos++] = c;\n }\n else if (c < 0x800) {\n arr[pos++] = 0xc0 | c >> 6;\n arr[pos++] = 0x80 | c & 0x3f;\n }\n else if (c < 0xd800) {\n arr[pos++] = 0xe0 | c >> 12;\n arr[pos++] = 0x80 | (c >> 6) & 0x3f;\n arr[pos++] = 0x80 | c & 0x3f;\n }\n else {\n i++; // get one more character\n c = (c & 0x3ff) << 10;\n c |= s.charCodeAt(i) & 0x3ff;\n c += 0x10000;\n arr[pos++] = 0xf0 | c >> 18;\n arr[pos++] = 0x80 | (c >> 12) & 0x3f;\n arr[pos++] = 0x80 | (c >> 6) & 0x3f;\n arr[pos++] = 0x80 | c & 0x3f;\n }\n }\n return arr;\n}\nexports.encode = encode;\n/**\n * Returns the number of bytes required to encode the given string into UTF-8.\n * Throws if the source string has invalid UTF-16 encoding.\n */\nfunction encodedLength(s) {\n var result = 0;\n for (var i = 0; i < s.length; i++) {\n var c = s.charCodeAt(i);\n if (c < 0x80) {\n result += 1;\n }\n else if (c < 0x800) {\n result += 2;\n }\n else if (c < 0xd800) {\n result += 3;\n }\n else if (c <= 0xdfff) {\n if (i >= s.length - 1) {\n throw new Error(INVALID_UTF16);\n }\n i++; // \"eat\" next character\n result += 4;\n }\n else {\n throw new Error(INVALID_UTF16);\n }\n }\n return result;\n}\nexports.encodedLength = encodedLength;\n/**\n * Decodes the given byte array from UTF-8 into a string.\n * Throws if encoding is invalid.\n */\nfunction decode(arr) {\n var chars = [];\n for (var i = 0; i < arr.length; i++) {\n var b = arr[i];\n if (b & 0x80) {\n var min = void 0;\n if (b < 0xe0) {\n // Need 1 more byte.\n if (i >= arr.length) {\n throw new Error(INVALID_UTF8);\n }\n var n1 = arr[++i];\n if ((n1 & 0xc0) !== 0x80) {\n throw new Error(INVALID_UTF8);\n }\n b = (b & 0x1f) << 6 | (n1 & 0x3f);\n min = 0x80;\n }\n else if (b < 0xf0) {\n // Need 2 more bytes.\n if (i >= arr.length - 1) {\n throw new Error(INVALID_UTF8);\n }\n var n1 = arr[++i];\n var n2 = arr[++i];\n if ((n1 & 0xc0) !== 0x80 || (n2 & 0xc0) !== 0x80) {\n throw new Error(INVALID_UTF8);\n }\n b = (b & 0x0f) << 12 | (n1 & 0x3f) << 6 | (n2 & 0x3f);\n min = 0x800;\n }\n else if (b < 0xf8) {\n // Need 3 more bytes.\n if (i >= arr.length - 2) {\n throw new Error(INVALID_UTF8);\n }\n var n1 = arr[++i];\n var n2 = arr[++i];\n var n3 = arr[++i];\n if ((n1 & 0xc0) !== 0x80 || (n2 & 0xc0) !== 0x80 || (n3 & 0xc0) !== 0x80) {\n throw new Error(INVALID_UTF8);\n }\n b = (b & 0x0f) << 18 | (n1 & 0x3f) << 12 | (n2 & 0x3f) << 6 | (n3 & 0x3f);\n min = 0x10000;\n }\n else {\n throw new Error(INVALID_UTF8);\n }\n if (b < min || (b >= 0xd800 && b <= 0xdfff)) {\n throw new Error(INVALID_UTF8);\n }\n if (b >= 0x10000) {\n // Surrogate pair.\n if (b > 0x10ffff) {\n throw new Error(INVALID_UTF8);\n }\n b -= 0x10000;\n chars.push(String.fromCharCode(0xd800 | (b >> 10)));\n b = 0xdc00 | (b & 0x3ff);\n }\n }\n chars.push(String.fromCharCode(b));\n }\n return chars.join(\"\");\n}\nexports.decode = decode;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// required so we don't have to do require('pusher').default etc.\nmodule.exports = __webpack_require__(3).default;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./src/runtimes/web/dom/script_receiver_factory.ts\nvar ScriptReceiverFactory = (function () {\n function ScriptReceiverFactory(prefix, name) {\n this.lastId = 0;\n this.prefix = prefix;\n this.name = name;\n }\n ScriptReceiverFactory.prototype.create = function (callback) {\n this.lastId++;\n var number = this.lastId;\n var id = this.prefix + number;\n var name = this.name + '[' + number + ']';\n var called = false;\n var callbackWrapper = function () {\n if (!called) {\n callback.apply(null, arguments);\n called = true;\n }\n };\n this[number] = callbackWrapper;\n return { number: number, id: id, name: name, callback: callbackWrapper };\n };\n ScriptReceiverFactory.prototype.remove = function (receiver) {\n delete this[receiver.number];\n };\n return ScriptReceiverFactory;\n}());\n\nvar ScriptReceivers = new ScriptReceiverFactory('_pusher_script_', 'Pusher.ScriptReceivers');\n\n// CONCATENATED MODULE: ./src/core/defaults.ts\nvar Defaults = {\n VERSION: \"7.6.0\",\n PROTOCOL: 7,\n wsPort: 80,\n wssPort: 443,\n wsPath: '',\n httpHost: 'sockjs.pusher.com',\n httpPort: 80,\n httpsPort: 443,\n httpPath: '/pusher',\n stats_host: 'stats.pusher.com',\n authEndpoint: '/pusher/auth',\n authTransport: 'ajax',\n activityTimeout: 120000,\n pongTimeout: 30000,\n unavailableTimeout: 10000,\n cluster: 'mt1',\n userAuthentication: {\n endpoint: '/pusher/user-auth',\n transport: 'ajax'\n },\n channelAuthorization: {\n endpoint: '/pusher/auth',\n transport: 'ajax'\n },\n cdn_http: \"http://js.pusher.com\",\n cdn_https: \"https://js.pusher.com\",\n dependency_suffix: \"\"\n};\n/* harmony default export */ var defaults = (Defaults);\n\n// CONCATENATED MODULE: ./src/runtimes/web/dom/dependency_loader.ts\n\n\nvar dependency_loader_DependencyLoader = (function () {\n function DependencyLoader(options) {\n this.options = options;\n this.receivers = options.receivers || ScriptReceivers;\n this.loading = {};\n }\n DependencyLoader.prototype.load = function (name, options, callback) {\n var self = this;\n if (self.loading[name] && self.loading[name].length > 0) {\n self.loading[name].push(callback);\n }\n else {\n self.loading[name] = [callback];\n var request = runtime.createScriptRequest(self.getPath(name, options));\n var receiver = self.receivers.create(function (error) {\n self.receivers.remove(receiver);\n if (self.loading[name]) {\n var callbacks = self.loading[name];\n delete self.loading[name];\n var successCallback = function (wasSuccessful) {\n if (!wasSuccessful) {\n request.cleanup();\n }\n };\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i](error, successCallback);\n }\n }\n });\n request.send(receiver);\n }\n };\n DependencyLoader.prototype.getRoot = function (options) {\n var cdn;\n var protocol = runtime.getDocument().location.protocol;\n if ((options && options.useTLS) || protocol === 'https:') {\n cdn = this.options.cdn_https;\n }\n else {\n cdn = this.options.cdn_http;\n }\n return cdn.replace(/\\/*$/, '') + '/' + this.options.version;\n };\n DependencyLoader.prototype.getPath = function (name, options) {\n return this.getRoot(options) + '/' + name + this.options.suffix + '.js';\n };\n return DependencyLoader;\n}());\n/* harmony default export */ var dependency_loader = (dependency_loader_DependencyLoader);\n\n// CONCATENATED MODULE: ./src/runtimes/web/dom/dependencies.ts\n\n\n\nvar DependenciesReceivers = new ScriptReceiverFactory('_pusher_dependencies', 'Pusher.DependenciesReceivers');\nvar Dependencies = new dependency_loader({\n cdn_http: defaults.cdn_http,\n cdn_https: defaults.cdn_https,\n version: defaults.VERSION,\n suffix: defaults.dependency_suffix,\n receivers: DependenciesReceivers\n});\n\n// CONCATENATED MODULE: ./src/core/utils/url_store.ts\nvar urlStore = {\n baseUrl: 'https://pusher.com',\n urls: {\n authenticationEndpoint: {\n path: '/docs/channels/server_api/authenticating_users'\n },\n authorizationEndpoint: {\n path: '/docs/channels/server_api/authorizing-users/'\n },\n javascriptQuickStart: {\n path: '/docs/javascript_quick_start'\n },\n triggeringClientEvents: {\n path: '/docs/client_api_guide/client_events#trigger-events'\n },\n encryptedChannelSupport: {\n fullUrl: 'https://github.com/pusher/pusher-js/tree/cc491015371a4bde5743d1c87a0fbac0feb53195#encrypted-channel-support'\n }\n }\n};\nvar buildLogSuffix = function (key) {\n var urlPrefix = 'See:';\n var urlObj = urlStore.urls[key];\n if (!urlObj)\n return '';\n var url;\n if (urlObj.fullUrl) {\n url = urlObj.fullUrl;\n }\n else if (urlObj.path) {\n url = urlStore.baseUrl + urlObj.path;\n }\n if (!url)\n return '';\n return urlPrefix + \" \" + url;\n};\n/* harmony default export */ var url_store = ({ buildLogSuffix: buildLogSuffix });\n\n// CONCATENATED MODULE: ./src/core/auth/options.ts\nvar AuthRequestType;\n(function (AuthRequestType) {\n AuthRequestType[\"UserAuthentication\"] = \"user-authentication\";\n AuthRequestType[\"ChannelAuthorization\"] = \"channel-authorization\";\n})(AuthRequestType || (AuthRequestType = {}));\n\n// CONCATENATED MODULE: ./src/core/errors.ts\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar BadEventName = (function (_super) {\n __extends(BadEventName, _super);\n function BadEventName(msg) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, msg) || this;\n Object.setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return BadEventName;\n}(Error));\n\nvar BadChannelName = (function (_super) {\n __extends(BadChannelName, _super);\n function BadChannelName(msg) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, msg) || this;\n Object.setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return BadChannelName;\n}(Error));\n\nvar RequestTimedOut = (function (_super) {\n __extends(RequestTimedOut, _super);\n function RequestTimedOut(msg) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, msg) || this;\n Object.setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return RequestTimedOut;\n}(Error));\n\nvar TransportPriorityTooLow = (function (_super) {\n __extends(TransportPriorityTooLow, _super);\n function TransportPriorityTooLow(msg) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, msg) || this;\n Object.setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return TransportPriorityTooLow;\n}(Error));\n\nvar TransportClosed = (function (_super) {\n __extends(TransportClosed, _super);\n function TransportClosed(msg) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, msg) || this;\n Object.setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return TransportClosed;\n}(Error));\n\nvar UnsupportedFeature = (function (_super) {\n __extends(UnsupportedFeature, _super);\n function UnsupportedFeature(msg) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, msg) || this;\n Object.setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return UnsupportedFeature;\n}(Error));\n\nvar UnsupportedTransport = (function (_super) {\n __extends(UnsupportedTransport, _super);\n function UnsupportedTransport(msg) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, msg) || this;\n Object.setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return UnsupportedTransport;\n}(Error));\n\nvar UnsupportedStrategy = (function (_super) {\n __extends(UnsupportedStrategy, _super);\n function UnsupportedStrategy(msg) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, msg) || this;\n Object.setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return UnsupportedStrategy;\n}(Error));\n\nvar HTTPAuthError = (function (_super) {\n __extends(HTTPAuthError, _super);\n function HTTPAuthError(status, msg) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, msg) || this;\n _this.status = status;\n Object.setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return HTTPAuthError;\n}(Error));\n\n\n// CONCATENATED MODULE: ./src/runtimes/isomorphic/auth/xhr_auth.ts\n\n\n\n\nvar ajax = function (context, query, authOptions, authRequestType, callback) {\n var xhr = runtime.createXHR();\n xhr.open('POST', authOptions.endpoint, true);\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n for (var headerName in authOptions.headers) {\n xhr.setRequestHeader(headerName, authOptions.headers[headerName]);\n }\n if (authOptions.headersProvider != null) {\n var dynamicHeaders = authOptions.headersProvider();\n for (var headerName in dynamicHeaders) {\n xhr.setRequestHeader(headerName, dynamicHeaders[headerName]);\n }\n }\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n var data = void 0;\n var parsed = false;\n try {\n data = JSON.parse(xhr.responseText);\n parsed = true;\n }\n catch (e) {\n callback(new HTTPAuthError(200, \"JSON returned from \" + authRequestType.toString() + \" endpoint was invalid, yet status code was 200. Data was: \" + xhr.responseText), null);\n }\n if (parsed) {\n callback(null, data);\n }\n }\n else {\n var suffix = '';\n switch (authRequestType) {\n case AuthRequestType.UserAuthentication:\n suffix = url_store.buildLogSuffix('authenticationEndpoint');\n break;\n case AuthRequestType.ChannelAuthorization:\n suffix = \"Clients must be authorized to join private or presence channels. \" + url_store.buildLogSuffix('authorizationEndpoint');\n break;\n }\n callback(new HTTPAuthError(xhr.status, \"Unable to retrieve auth string from \" + authRequestType.toString() + \" endpoint - \" +\n (\"received status: \" + xhr.status + \" from \" + authOptions.endpoint + \". \" + suffix)), null);\n }\n }\n };\n xhr.send(query);\n return xhr;\n};\n/* harmony default export */ var xhr_auth = (ajax);\n\n// CONCATENATED MODULE: ./src/core/base64.ts\nfunction encode(s) {\n return btoa(utob(s));\n}\nvar fromCharCode = String.fromCharCode;\nvar b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nvar b64tab = {};\nfor (var base64_i = 0, l = b64chars.length; base64_i < l; base64_i++) {\n b64tab[b64chars.charAt(base64_i)] = base64_i;\n}\nvar cb_utob = function (c) {\n var cc = c.charCodeAt(0);\n return cc < 0x80\n ? c\n : cc < 0x800\n ? fromCharCode(0xc0 | (cc >>> 6)) + fromCharCode(0x80 | (cc & 0x3f))\n : fromCharCode(0xe0 | ((cc >>> 12) & 0x0f)) +\n fromCharCode(0x80 | ((cc >>> 6) & 0x3f)) +\n fromCharCode(0x80 | (cc & 0x3f));\n};\nvar utob = function (u) {\n return u.replace(/[^\\x00-\\x7F]/g, cb_utob);\n};\nvar cb_encode = function (ccc) {\n var padlen = [0, 2, 1][ccc.length % 3];\n var ord = (ccc.charCodeAt(0) << 16) |\n ((ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8) |\n (ccc.length > 2 ? ccc.charCodeAt(2) : 0);\n var chars = [\n b64chars.charAt(ord >>> 18),\n b64chars.charAt((ord >>> 12) & 63),\n padlen >= 2 ? '=' : b64chars.charAt((ord >>> 6) & 63),\n padlen >= 1 ? '=' : b64chars.charAt(ord & 63)\n ];\n return chars.join('');\n};\nvar btoa = window.btoa ||\n function (b) {\n return b.replace(/[\\s\\S]{1,3}/g, cb_encode);\n };\n\n// CONCATENATED MODULE: ./src/core/utils/timers/abstract_timer.ts\nvar Timer = (function () {\n function Timer(set, clear, delay, callback) {\n var _this = this;\n this.clear = clear;\n this.timer = set(function () {\n if (_this.timer) {\n _this.timer = callback(_this.timer);\n }\n }, delay);\n }\n Timer.prototype.isRunning = function () {\n return this.timer !== null;\n };\n Timer.prototype.ensureAborted = function () {\n if (this.timer) {\n this.clear(this.timer);\n this.timer = null;\n }\n };\n return Timer;\n}());\n/* harmony default export */ var abstract_timer = (Timer);\n\n// CONCATENATED MODULE: ./src/core/utils/timers/index.ts\nvar timers_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\nfunction timers_clearTimeout(timer) {\n window.clearTimeout(timer);\n}\nfunction timers_clearInterval(timer) {\n window.clearInterval(timer);\n}\nvar OneOffTimer = (function (_super) {\n timers_extends(OneOffTimer, _super);\n function OneOffTimer(delay, callback) {\n return _super.call(this, setTimeout, timers_clearTimeout, delay, function (timer) {\n callback();\n return null;\n }) || this;\n }\n return OneOffTimer;\n}(abstract_timer));\n\nvar PeriodicTimer = (function (_super) {\n timers_extends(PeriodicTimer, _super);\n function PeriodicTimer(delay, callback) {\n return _super.call(this, setInterval, timers_clearInterval, delay, function (timer) {\n callback();\n return timer;\n }) || this;\n }\n return PeriodicTimer;\n}(abstract_timer));\n\n\n// CONCATENATED MODULE: ./src/core/util.ts\n\nvar Util = {\n now: function () {\n if (Date.now) {\n return Date.now();\n }\n else {\n return new Date().valueOf();\n }\n },\n defer: function (callback) {\n return new OneOffTimer(0, callback);\n },\n method: function (name) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var boundArguments = Array.prototype.slice.call(arguments, 1);\n return function (object) {\n return object[name].apply(object, boundArguments.concat(arguments));\n };\n }\n};\n/* harmony default export */ var util = (Util);\n\n// CONCATENATED MODULE: ./src/core/utils/collections.ts\n\n\nfunction extend(target) {\n var sources = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n sources[_i - 1] = arguments[_i];\n }\n for (var i = 0; i < sources.length; i++) {\n var extensions = sources[i];\n for (var property in extensions) {\n if (extensions[property] &&\n extensions[property].constructor &&\n extensions[property].constructor === Object) {\n target[property] = extend(target[property] || {}, extensions[property]);\n }\n else {\n target[property] = extensions[property];\n }\n }\n }\n return target;\n}\nfunction stringify() {\n var m = ['Pusher'];\n for (var i = 0; i < arguments.length; i++) {\n if (typeof arguments[i] === 'string') {\n m.push(arguments[i]);\n }\n else {\n m.push(safeJSONStringify(arguments[i]));\n }\n }\n return m.join(' : ');\n}\nfunction arrayIndexOf(array, item) {\n var nativeIndexOf = Array.prototype.indexOf;\n if (array === null) {\n return -1;\n }\n if (nativeIndexOf && array.indexOf === nativeIndexOf) {\n return array.indexOf(item);\n }\n for (var i = 0, l = array.length; i < l; i++) {\n if (array[i] === item) {\n return i;\n }\n }\n return -1;\n}\nfunction objectApply(object, f) {\n for (var key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n f(object[key], key, object);\n }\n }\n}\nfunction keys(object) {\n var keys = [];\n objectApply(object, function (_, key) {\n keys.push(key);\n });\n return keys;\n}\nfunction values(object) {\n var values = [];\n objectApply(object, function (value) {\n values.push(value);\n });\n return values;\n}\nfunction apply(array, f, context) {\n for (var i = 0; i < array.length; i++) {\n f.call(context || window, array[i], i, array);\n }\n}\nfunction map(array, f) {\n var result = [];\n for (var i = 0; i < array.length; i++) {\n result.push(f(array[i], i, array, result));\n }\n return result;\n}\nfunction mapObject(object, f) {\n var result = {};\n objectApply(object, function (value, key) {\n result[key] = f(value);\n });\n return result;\n}\nfunction filter(array, test) {\n test =\n test ||\n function (value) {\n return !!value;\n };\n var result = [];\n for (var i = 0; i < array.length; i++) {\n if (test(array[i], i, array, result)) {\n result.push(array[i]);\n }\n }\n return result;\n}\nfunction filterObject(object, test) {\n var result = {};\n objectApply(object, function (value, key) {\n if ((test && test(value, key, object, result)) || Boolean(value)) {\n result[key] = value;\n }\n });\n return result;\n}\nfunction flatten(object) {\n var result = [];\n objectApply(object, function (value, key) {\n result.push([key, value]);\n });\n return result;\n}\nfunction any(array, test) {\n for (var i = 0; i < array.length; i++) {\n if (test(array[i], i, array)) {\n return true;\n }\n }\n return false;\n}\nfunction collections_all(array, test) {\n for (var i = 0; i < array.length; i++) {\n if (!test(array[i], i, array)) {\n return false;\n }\n }\n return true;\n}\nfunction encodeParamsObject(data) {\n return mapObject(data, function (value) {\n if (typeof value === 'object') {\n value = safeJSONStringify(value);\n }\n return encodeURIComponent(encode(value.toString()));\n });\n}\nfunction buildQueryString(data) {\n var params = filterObject(data, function (value) {\n return value !== undefined;\n });\n var query = map(flatten(encodeParamsObject(params)), util.method('join', '=')).join('&');\n return query;\n}\nfunction decycleObject(object) {\n var objects = [], paths = [];\n return (function derez(value, path) {\n var i, name, nu;\n switch (typeof value) {\n case 'object':\n if (!value) {\n return null;\n }\n for (i = 0; i < objects.length; i += 1) {\n if (objects[i] === value) {\n return { $ref: paths[i] };\n }\n }\n objects.push(value);\n paths.push(path);\n if (Object.prototype.toString.apply(value) === '[object Array]') {\n nu = [];\n for (i = 0; i < value.length; i += 1) {\n nu[i] = derez(value[i], path + '[' + i + ']');\n }\n }\n else {\n nu = {};\n for (name in value) {\n if (Object.prototype.hasOwnProperty.call(value, name)) {\n nu[name] = derez(value[name], path + '[' + JSON.stringify(name) + ']');\n }\n }\n }\n return nu;\n case 'number':\n case 'string':\n case 'boolean':\n return value;\n }\n })(object, '$');\n}\nfunction safeJSONStringify(source) {\n try {\n return JSON.stringify(source);\n }\n catch (e) {\n return JSON.stringify(decycleObject(source));\n }\n}\n\n// CONCATENATED MODULE: ./src/core/logger.ts\n\n\nvar logger_Logger = (function () {\n function Logger() {\n this.globalLog = function (message) {\n if (window.console && window.console.log) {\n window.console.log(message);\n }\n };\n }\n Logger.prototype.debug = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n this.log(this.globalLog, args);\n };\n Logger.prototype.warn = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n this.log(this.globalLogWarn, args);\n };\n Logger.prototype.error = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n this.log(this.globalLogError, args);\n };\n Logger.prototype.globalLogWarn = function (message) {\n if (window.console && window.console.warn) {\n window.console.warn(message);\n }\n else {\n this.globalLog(message);\n }\n };\n Logger.prototype.globalLogError = function (message) {\n if (window.console && window.console.error) {\n window.console.error(message);\n }\n else {\n this.globalLogWarn(message);\n }\n };\n Logger.prototype.log = function (defaultLoggingFunction) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var message = stringify.apply(this, arguments);\n if (core_pusher.log) {\n core_pusher.log(message);\n }\n else if (core_pusher.logToConsole) {\n var log = defaultLoggingFunction.bind(this);\n log(message);\n }\n };\n return Logger;\n}());\n/* harmony default export */ var logger = (new logger_Logger());\n\n// CONCATENATED MODULE: ./src/runtimes/web/auth/jsonp_auth.ts\n\nvar jsonp = function (context, query, authOptions, authRequestType, callback) {\n if (authOptions.headers !== undefined ||\n authOptions.headersProvider != null) {\n logger.warn(\"To send headers with the \" + authRequestType.toString() + \" request, you must use AJAX, rather than JSONP.\");\n }\n var callbackName = context.nextAuthCallbackID.toString();\n context.nextAuthCallbackID++;\n var document = context.getDocument();\n var script = document.createElement('script');\n context.auth_callbacks[callbackName] = function (data) {\n callback(null, data);\n };\n var callback_name = \"Pusher.auth_callbacks['\" + callbackName + \"']\";\n script.src =\n authOptions.endpoint +\n '?callback=' +\n encodeURIComponent(callback_name) +\n '&' +\n query;\n var head = document.getElementsByTagName('head')[0] || document.documentElement;\n head.insertBefore(script, head.firstChild);\n};\n/* harmony default export */ var jsonp_auth = (jsonp);\n\n// CONCATENATED MODULE: ./src/runtimes/web/dom/script_request.ts\nvar ScriptRequest = (function () {\n function ScriptRequest(src) {\n this.src = src;\n }\n ScriptRequest.prototype.send = function (receiver) {\n var self = this;\n var errorString = 'Error loading ' + self.src;\n self.script = document.createElement('script');\n self.script.id = receiver.id;\n self.script.src = self.src;\n self.script.type = 'text/javascript';\n self.script.charset = 'UTF-8';\n if (self.script.addEventListener) {\n self.script.onerror = function () {\n receiver.callback(errorString);\n };\n self.script.onload = function () {\n receiver.callback(null);\n };\n }\n else {\n self.script.onreadystatechange = function () {\n if (self.script.readyState === 'loaded' ||\n self.script.readyState === 'complete') {\n receiver.callback(null);\n }\n };\n }\n if (self.script.async === undefined &&\n document.attachEvent &&\n /opera/i.test(navigator.userAgent)) {\n self.errorScript = document.createElement('script');\n self.errorScript.id = receiver.id + '_error';\n self.errorScript.text = receiver.name + \"('\" + errorString + \"');\";\n self.script.async = self.errorScript.async = false;\n }\n else {\n self.script.async = true;\n }\n var head = document.getElementsByTagName('head')[0];\n head.insertBefore(self.script, head.firstChild);\n if (self.errorScript) {\n head.insertBefore(self.errorScript, self.script.nextSibling);\n }\n };\n ScriptRequest.prototype.cleanup = function () {\n if (this.script) {\n this.script.onload = this.script.onerror = null;\n this.script.onreadystatechange = null;\n }\n if (this.script && this.script.parentNode) {\n this.script.parentNode.removeChild(this.script);\n }\n if (this.errorScript && this.errorScript.parentNode) {\n this.errorScript.parentNode.removeChild(this.errorScript);\n }\n this.script = null;\n this.errorScript = null;\n };\n return ScriptRequest;\n}());\n/* harmony default export */ var script_request = (ScriptRequest);\n\n// CONCATENATED MODULE: ./src/runtimes/web/dom/jsonp_request.ts\n\n\nvar jsonp_request_JSONPRequest = (function () {\n function JSONPRequest(url, data) {\n this.url = url;\n this.data = data;\n }\n JSONPRequest.prototype.send = function (receiver) {\n if (this.request) {\n return;\n }\n var query = buildQueryString(this.data);\n var url = this.url + '/' + receiver.number + '?' + query;\n this.request = runtime.createScriptRequest(url);\n this.request.send(receiver);\n };\n JSONPRequest.prototype.cleanup = function () {\n if (this.request) {\n this.request.cleanup();\n }\n };\n return JSONPRequest;\n}());\n/* harmony default export */ var jsonp_request = (jsonp_request_JSONPRequest);\n\n// CONCATENATED MODULE: ./src/runtimes/web/timeline/jsonp_timeline.ts\n\n\nvar getAgent = function (sender, useTLS) {\n return function (data, callback) {\n var scheme = 'http' + (useTLS ? 's' : '') + '://';\n var url = scheme + (sender.host || sender.options.host) + sender.options.path;\n var request = runtime.createJSONPRequest(url, data);\n var receiver = runtime.ScriptReceivers.create(function (error, result) {\n ScriptReceivers.remove(receiver);\n request.cleanup();\n if (result && result.host) {\n sender.host = result.host;\n }\n if (callback) {\n callback(error, result);\n }\n });\n request.send(receiver);\n };\n};\nvar jsonp_timeline_jsonp = {\n name: 'jsonp',\n getAgent: getAgent\n};\n/* harmony default export */ var jsonp_timeline = (jsonp_timeline_jsonp);\n\n// CONCATENATED MODULE: ./src/core/transports/url_schemes.ts\n\nfunction getGenericURL(baseScheme, params, path) {\n var scheme = baseScheme + (params.useTLS ? 's' : '');\n var host = params.useTLS ? params.hostTLS : params.hostNonTLS;\n return scheme + '://' + host + path;\n}\nfunction getGenericPath(key, queryString) {\n var path = '/app/' + key;\n var query = '?protocol=' +\n defaults.PROTOCOL +\n '&client=js' +\n '&version=' +\n defaults.VERSION +\n (queryString ? '&' + queryString : '');\n return path + query;\n}\nvar ws = {\n getInitial: function (key, params) {\n var path = (params.httpPath || '') + getGenericPath(key, 'flash=false');\n return getGenericURL('ws', params, path);\n }\n};\nvar http = {\n getInitial: function (key, params) {\n var path = (params.httpPath || '/pusher') + getGenericPath(key);\n return getGenericURL('http', params, path);\n }\n};\nvar sockjs = {\n getInitial: function (key, params) {\n return getGenericURL('http', params, params.httpPath || '/pusher');\n },\n getPath: function (key, params) {\n return getGenericPath(key);\n }\n};\n\n// CONCATENATED MODULE: ./src/core/events/callback_registry.ts\n\nvar callback_registry_CallbackRegistry = (function () {\n function CallbackRegistry() {\n this._callbacks = {};\n }\n CallbackRegistry.prototype.get = function (name) {\n return this._callbacks[prefix(name)];\n };\n CallbackRegistry.prototype.add = function (name, callback, context) {\n var prefixedEventName = prefix(name);\n this._callbacks[prefixedEventName] =\n this._callbacks[prefixedEventName] || [];\n this._callbacks[prefixedEventName].push({\n fn: callback,\n context: context\n });\n };\n CallbackRegistry.prototype.remove = function (name, callback, context) {\n if (!name && !callback && !context) {\n this._callbacks = {};\n return;\n }\n var names = name ? [prefix(name)] : keys(this._callbacks);\n if (callback || context) {\n this.removeCallback(names, callback, context);\n }\n else {\n this.removeAllCallbacks(names);\n }\n };\n CallbackRegistry.prototype.removeCallback = function (names, callback, context) {\n apply(names, function (name) {\n this._callbacks[name] = filter(this._callbacks[name] || [], function (binding) {\n return ((callback && callback !== binding.fn) ||\n (context && context !== binding.context));\n });\n if (this._callbacks[name].length === 0) {\n delete this._callbacks[name];\n }\n }, this);\n };\n CallbackRegistry.prototype.removeAllCallbacks = function (names) {\n apply(names, function (name) {\n delete this._callbacks[name];\n }, this);\n };\n return CallbackRegistry;\n}());\n/* harmony default export */ var callback_registry = (callback_registry_CallbackRegistry);\nfunction prefix(name) {\n return '_' + name;\n}\n\n// CONCATENATED MODULE: ./src/core/events/dispatcher.ts\n\n\nvar dispatcher_Dispatcher = (function () {\n function Dispatcher(failThrough) {\n this.callbacks = new callback_registry();\n this.global_callbacks = [];\n this.failThrough = failThrough;\n }\n Dispatcher.prototype.bind = function (eventName, callback, context) {\n this.callbacks.add(eventName, callback, context);\n return this;\n };\n Dispatcher.prototype.bind_global = function (callback) {\n this.global_callbacks.push(callback);\n return this;\n };\n Dispatcher.prototype.unbind = function (eventName, callback, context) {\n this.callbacks.remove(eventName, callback, context);\n return this;\n };\n Dispatcher.prototype.unbind_global = function (callback) {\n if (!callback) {\n this.global_callbacks = [];\n return this;\n }\n this.global_callbacks = filter(this.global_callbacks || [], function (c) { return c !== callback; });\n return this;\n };\n Dispatcher.prototype.unbind_all = function () {\n this.unbind();\n this.unbind_global();\n return this;\n };\n Dispatcher.prototype.emit = function (eventName, data, metadata) {\n for (var i = 0; i < this.global_callbacks.length; i++) {\n this.global_callbacks[i](eventName, data);\n }\n var callbacks = this.callbacks.get(eventName);\n var args = [];\n if (metadata) {\n args.push(data, metadata);\n }\n else if (data) {\n args.push(data);\n }\n if (callbacks && callbacks.length > 0) {\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i].fn.apply(callbacks[i].context || window, args);\n }\n }\n else if (this.failThrough) {\n this.failThrough(eventName, data);\n }\n return this;\n };\n return Dispatcher;\n}());\n/* harmony default export */ var dispatcher = (dispatcher_Dispatcher);\n\n// CONCATENATED MODULE: ./src/core/transports/transport_connection.ts\nvar transport_connection_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n\n\n\nvar transport_connection_TransportConnection = (function (_super) {\n transport_connection_extends(TransportConnection, _super);\n function TransportConnection(hooks, name, priority, key, options) {\n var _this = _super.call(this) || this;\n _this.initialize = runtime.transportConnectionInitializer;\n _this.hooks = hooks;\n _this.name = name;\n _this.priority = priority;\n _this.key = key;\n _this.options = options;\n _this.state = 'new';\n _this.timeline = options.timeline;\n _this.activityTimeout = options.activityTimeout;\n _this.id = _this.timeline.generateUniqueID();\n return _this;\n }\n TransportConnection.prototype.handlesActivityChecks = function () {\n return Boolean(this.hooks.handlesActivityChecks);\n };\n TransportConnection.prototype.supportsPing = function () {\n return Boolean(this.hooks.supportsPing);\n };\n TransportConnection.prototype.connect = function () {\n var _this = this;\n if (this.socket || this.state !== 'initialized') {\n return false;\n }\n var url = this.hooks.urls.getInitial(this.key, this.options);\n try {\n this.socket = this.hooks.getSocket(url, this.options);\n }\n catch (e) {\n util.defer(function () {\n _this.onError(e);\n _this.changeState('closed');\n });\n return false;\n }\n this.bindListeners();\n logger.debug('Connecting', { transport: this.name, url: url });\n this.changeState('connecting');\n return true;\n };\n TransportConnection.prototype.close = function () {\n if (this.socket) {\n this.socket.close();\n return true;\n }\n else {\n return false;\n }\n };\n TransportConnection.prototype.send = function (data) {\n var _this = this;\n if (this.state === 'open') {\n util.defer(function () {\n if (_this.socket) {\n _this.socket.send(data);\n }\n });\n return true;\n }\n else {\n return false;\n }\n };\n TransportConnection.prototype.ping = function () {\n if (this.state === 'open' && this.supportsPing()) {\n this.socket.ping();\n }\n };\n TransportConnection.prototype.onOpen = function () {\n if (this.hooks.beforeOpen) {\n this.hooks.beforeOpen(this.socket, this.hooks.urls.getPath(this.key, this.options));\n }\n this.changeState('open');\n this.socket.onopen = undefined;\n };\n TransportConnection.prototype.onError = function (error) {\n this.emit('error', { type: 'WebSocketError', error: error });\n this.timeline.error(this.buildTimelineMessage({ error: error.toString() }));\n };\n TransportConnection.prototype.onClose = function (closeEvent) {\n if (closeEvent) {\n this.changeState('closed', {\n code: closeEvent.code,\n reason: closeEvent.reason,\n wasClean: closeEvent.wasClean\n });\n }\n else {\n this.changeState('closed');\n }\n this.unbindListeners();\n this.socket = undefined;\n };\n TransportConnection.prototype.onMessage = function (message) {\n this.emit('message', message);\n };\n TransportConnection.prototype.onActivity = function () {\n this.emit('activity');\n };\n TransportConnection.prototype.bindListeners = function () {\n var _this = this;\n this.socket.onopen = function () {\n _this.onOpen();\n };\n this.socket.onerror = function (error) {\n _this.onError(error);\n };\n this.socket.onclose = function (closeEvent) {\n _this.onClose(closeEvent);\n };\n this.socket.onmessage = function (message) {\n _this.onMessage(message);\n };\n if (this.supportsPing()) {\n this.socket.onactivity = function () {\n _this.onActivity();\n };\n }\n };\n TransportConnection.prototype.unbindListeners = function () {\n if (this.socket) {\n this.socket.onopen = undefined;\n this.socket.onerror = undefined;\n this.socket.onclose = undefined;\n this.socket.onmessage = undefined;\n if (this.supportsPing()) {\n this.socket.onactivity = undefined;\n }\n }\n };\n TransportConnection.prototype.changeState = function (state, params) {\n this.state = state;\n this.timeline.info(this.buildTimelineMessage({\n state: state,\n params: params\n }));\n this.emit(state, params);\n };\n TransportConnection.prototype.buildTimelineMessage = function (message) {\n return extend({ cid: this.id }, message);\n };\n return TransportConnection;\n}(dispatcher));\n/* harmony default export */ var transport_connection = (transport_connection_TransportConnection);\n\n// CONCATENATED MODULE: ./src/core/transports/transport.ts\n\nvar transport_Transport = (function () {\n function Transport(hooks) {\n this.hooks = hooks;\n }\n Transport.prototype.isSupported = function (environment) {\n return this.hooks.isSupported(environment);\n };\n Transport.prototype.createConnection = function (name, priority, key, options) {\n return new transport_connection(this.hooks, name, priority, key, options);\n };\n return Transport;\n}());\n/* harmony default export */ var transports_transport = (transport_Transport);\n\n// CONCATENATED MODULE: ./src/runtimes/isomorphic/transports/transports.ts\n\n\n\n\nvar WSTransport = new transports_transport({\n urls: ws,\n handlesActivityChecks: false,\n supportsPing: false,\n isInitialized: function () {\n return Boolean(runtime.getWebSocketAPI());\n },\n isSupported: function () {\n return Boolean(runtime.getWebSocketAPI());\n },\n getSocket: function (url) {\n return runtime.createWebSocket(url);\n }\n});\nvar httpConfiguration = {\n urls: http,\n handlesActivityChecks: false,\n supportsPing: true,\n isInitialized: function () {\n return true;\n }\n};\nvar streamingConfiguration = extend({\n getSocket: function (url) {\n return runtime.HTTPFactory.createStreamingSocket(url);\n }\n}, httpConfiguration);\nvar pollingConfiguration = extend({\n getSocket: function (url) {\n return runtime.HTTPFactory.createPollingSocket(url);\n }\n}, httpConfiguration);\nvar xhrConfiguration = {\n isSupported: function () {\n return runtime.isXHRSupported();\n }\n};\nvar XHRStreamingTransport = new transports_transport((extend({}, streamingConfiguration, xhrConfiguration)));\nvar XHRPollingTransport = new transports_transport(extend({}, pollingConfiguration, xhrConfiguration));\nvar Transports = {\n ws: WSTransport,\n xhr_streaming: XHRStreamingTransport,\n xhr_polling: XHRPollingTransport\n};\n/* harmony default export */ var transports = (Transports);\n\n// CONCATENATED MODULE: ./src/runtimes/web/transports/transports.ts\n\n\n\n\n\n\nvar SockJSTransport = new transports_transport({\n file: 'sockjs',\n urls: sockjs,\n handlesActivityChecks: true,\n supportsPing: false,\n isSupported: function () {\n return true;\n },\n isInitialized: function () {\n return window.SockJS !== undefined;\n },\n getSocket: function (url, options) {\n return new window.SockJS(url, null, {\n js_path: Dependencies.getPath('sockjs', {\n useTLS: options.useTLS\n }),\n ignore_null_origin: options.ignoreNullOrigin\n });\n },\n beforeOpen: function (socket, path) {\n socket.send(JSON.stringify({\n path: path\n }));\n }\n});\nvar xdrConfiguration = {\n isSupported: function (environment) {\n var yes = runtime.isXDRSupported(environment.useTLS);\n return yes;\n }\n};\nvar XDRStreamingTransport = new transports_transport((extend({}, streamingConfiguration, xdrConfiguration)));\nvar XDRPollingTransport = new transports_transport(extend({}, pollingConfiguration, xdrConfiguration));\ntransports.xdr_streaming = XDRStreamingTransport;\ntransports.xdr_polling = XDRPollingTransport;\ntransports.sockjs = SockJSTransport;\n/* harmony default export */ var transports_transports = (transports);\n\n// CONCATENATED MODULE: ./src/runtimes/web/net_info.ts\nvar net_info_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\nvar NetInfo = (function (_super) {\n net_info_extends(NetInfo, _super);\n function NetInfo() {\n var _this = _super.call(this) || this;\n var self = _this;\n if (window.addEventListener !== undefined) {\n window.addEventListener('online', function () {\n self.emit('online');\n }, false);\n window.addEventListener('offline', function () {\n self.emit('offline');\n }, false);\n }\n return _this;\n }\n NetInfo.prototype.isOnline = function () {\n if (window.navigator.onLine === undefined) {\n return true;\n }\n else {\n return window.navigator.onLine;\n }\n };\n return NetInfo;\n}(dispatcher));\n\nvar net_info_Network = new NetInfo();\n\n// CONCATENATED MODULE: ./src/core/transports/assistant_to_the_transport_manager.ts\n\n\nvar assistant_to_the_transport_manager_AssistantToTheTransportManager = (function () {\n function AssistantToTheTransportManager(manager, transport, options) {\n this.manager = manager;\n this.transport = transport;\n this.minPingDelay = options.minPingDelay;\n this.maxPingDelay = options.maxPingDelay;\n this.pingDelay = undefined;\n }\n AssistantToTheTransportManager.prototype.createConnection = function (name, priority, key, options) {\n var _this = this;\n options = extend({}, options, {\n activityTimeout: this.pingDelay\n });\n var connection = this.transport.createConnection(name, priority, key, options);\n var openTimestamp = null;\n var onOpen = function () {\n connection.unbind('open', onOpen);\n connection.bind('closed', onClosed);\n openTimestamp = util.now();\n };\n var onClosed = function (closeEvent) {\n connection.unbind('closed', onClosed);\n if (closeEvent.code === 1002 || closeEvent.code === 1003) {\n _this.manager.reportDeath();\n }\n else if (!closeEvent.wasClean && openTimestamp) {\n var lifespan = util.now() - openTimestamp;\n if (lifespan < 2 * _this.maxPingDelay) {\n _this.manager.reportDeath();\n _this.pingDelay = Math.max(lifespan / 2, _this.minPingDelay);\n }\n }\n };\n connection.bind('open', onOpen);\n return connection;\n };\n AssistantToTheTransportManager.prototype.isSupported = function (environment) {\n return this.manager.isAlive() && this.transport.isSupported(environment);\n };\n return AssistantToTheTransportManager;\n}());\n/* harmony default export */ var assistant_to_the_transport_manager = (assistant_to_the_transport_manager_AssistantToTheTransportManager);\n\n// CONCATENATED MODULE: ./src/core/connection/protocol/protocol.ts\nvar Protocol = {\n decodeMessage: function (messageEvent) {\n try {\n var messageData = JSON.parse(messageEvent.data);\n var pusherEventData = messageData.data;\n if (typeof pusherEventData === 'string') {\n try {\n pusherEventData = JSON.parse(messageData.data);\n }\n catch (e) { }\n }\n var pusherEvent = {\n event: messageData.event,\n channel: messageData.channel,\n data: pusherEventData\n };\n if (messageData.user_id) {\n pusherEvent.user_id = messageData.user_id;\n }\n return pusherEvent;\n }\n catch (e) {\n throw { type: 'MessageParseError', error: e, data: messageEvent.data };\n }\n },\n encodeMessage: function (event) {\n return JSON.stringify(event);\n },\n processHandshake: function (messageEvent) {\n var message = Protocol.decodeMessage(messageEvent);\n if (message.event === 'pusher:connection_established') {\n if (!message.data.activity_timeout) {\n throw 'No activity timeout specified in handshake';\n }\n return {\n action: 'connected',\n id: message.data.socket_id,\n activityTimeout: message.data.activity_timeout * 1000\n };\n }\n else if (message.event === 'pusher:error') {\n return {\n action: this.getCloseAction(message.data),\n error: this.getCloseError(message.data)\n };\n }\n else {\n throw 'Invalid handshake';\n }\n },\n getCloseAction: function (closeEvent) {\n if (closeEvent.code < 4000) {\n if (closeEvent.code >= 1002 && closeEvent.code <= 1004) {\n return 'backoff';\n }\n else {\n return null;\n }\n }\n else if (closeEvent.code === 4000) {\n return 'tls_only';\n }\n else if (closeEvent.code < 4100) {\n return 'refused';\n }\n else if (closeEvent.code < 4200) {\n return 'backoff';\n }\n else if (closeEvent.code < 4300) {\n return 'retry';\n }\n else {\n return 'refused';\n }\n },\n getCloseError: function (closeEvent) {\n if (closeEvent.code !== 1000 && closeEvent.code !== 1001) {\n return {\n type: 'PusherError',\n data: {\n code: closeEvent.code,\n message: closeEvent.reason || closeEvent.message\n }\n };\n }\n else {\n return null;\n }\n }\n};\n/* harmony default export */ var protocol_protocol = (Protocol);\n\n// CONCATENATED MODULE: ./src/core/connection/connection.ts\nvar connection_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n\n\nvar connection_Connection = (function (_super) {\n connection_extends(Connection, _super);\n function Connection(id, transport) {\n var _this = _super.call(this) || this;\n _this.id = id;\n _this.transport = transport;\n _this.activityTimeout = transport.activityTimeout;\n _this.bindListeners();\n return _this;\n }\n Connection.prototype.handlesActivityChecks = function () {\n return this.transport.handlesActivityChecks();\n };\n Connection.prototype.send = function (data) {\n return this.transport.send(data);\n };\n Connection.prototype.send_event = function (name, data, channel) {\n var event = { event: name, data: data };\n if (channel) {\n event.channel = channel;\n }\n logger.debug('Event sent', event);\n return this.send(protocol_protocol.encodeMessage(event));\n };\n Connection.prototype.ping = function () {\n if (this.transport.supportsPing()) {\n this.transport.ping();\n }\n else {\n this.send_event('pusher:ping', {});\n }\n };\n Connection.prototype.close = function () {\n this.transport.close();\n };\n Connection.prototype.bindListeners = function () {\n var _this = this;\n var listeners = {\n message: function (messageEvent) {\n var pusherEvent;\n try {\n pusherEvent = protocol_protocol.decodeMessage(messageEvent);\n }\n catch (e) {\n _this.emit('error', {\n type: 'MessageParseError',\n error: e,\n data: messageEvent.data\n });\n }\n if (pusherEvent !== undefined) {\n logger.debug('Event recd', pusherEvent);\n switch (pusherEvent.event) {\n case 'pusher:error':\n _this.emit('error', {\n type: 'PusherError',\n data: pusherEvent.data\n });\n break;\n case 'pusher:ping':\n _this.emit('ping');\n break;\n case 'pusher:pong':\n _this.emit('pong');\n break;\n }\n _this.emit('message', pusherEvent);\n }\n },\n activity: function () {\n _this.emit('activity');\n },\n error: function (error) {\n _this.emit('error', error);\n },\n closed: function (closeEvent) {\n unbindListeners();\n if (closeEvent && closeEvent.code) {\n _this.handleCloseEvent(closeEvent);\n }\n _this.transport = null;\n _this.emit('closed');\n }\n };\n var unbindListeners = function () {\n objectApply(listeners, function (listener, event) {\n _this.transport.unbind(event, listener);\n });\n };\n objectApply(listeners, function (listener, event) {\n _this.transport.bind(event, listener);\n });\n };\n Connection.prototype.handleCloseEvent = function (closeEvent) {\n var action = protocol_protocol.getCloseAction(closeEvent);\n var error = protocol_protocol.getCloseError(closeEvent);\n if (error) {\n this.emit('error', error);\n }\n if (action) {\n this.emit(action, { action: action, error: error });\n }\n };\n return Connection;\n}(dispatcher));\n/* harmony default export */ var connection_connection = (connection_Connection);\n\n// CONCATENATED MODULE: ./src/core/connection/handshake/index.ts\n\n\n\nvar handshake_Handshake = (function () {\n function Handshake(transport, callback) {\n this.transport = transport;\n this.callback = callback;\n this.bindListeners();\n }\n Handshake.prototype.close = function () {\n this.unbindListeners();\n this.transport.close();\n };\n Handshake.prototype.bindListeners = function () {\n var _this = this;\n this.onMessage = function (m) {\n _this.unbindListeners();\n var result;\n try {\n result = protocol_protocol.processHandshake(m);\n }\n catch (e) {\n _this.finish('error', { error: e });\n _this.transport.close();\n return;\n }\n if (result.action === 'connected') {\n _this.finish('connected', {\n connection: new connection_connection(result.id, _this.transport),\n activityTimeout: result.activityTimeout\n });\n }\n else {\n _this.finish(result.action, { error: result.error });\n _this.transport.close();\n }\n };\n this.onClosed = function (closeEvent) {\n _this.unbindListeners();\n var action = protocol_protocol.getCloseAction(closeEvent) || 'backoff';\n var error = protocol_protocol.getCloseError(closeEvent);\n _this.finish(action, { error: error });\n };\n this.transport.bind('message', this.onMessage);\n this.transport.bind('closed', this.onClosed);\n };\n Handshake.prototype.unbindListeners = function () {\n this.transport.unbind('message', this.onMessage);\n this.transport.unbind('closed', this.onClosed);\n };\n Handshake.prototype.finish = function (action, params) {\n this.callback(extend({ transport: this.transport, action: action }, params));\n };\n return Handshake;\n}());\n/* harmony default export */ var connection_handshake = (handshake_Handshake);\n\n// CONCATENATED MODULE: ./src/core/timeline/timeline_sender.ts\n\nvar timeline_sender_TimelineSender = (function () {\n function TimelineSender(timeline, options) {\n this.timeline = timeline;\n this.options = options || {};\n }\n TimelineSender.prototype.send = function (useTLS, callback) {\n if (this.timeline.isEmpty()) {\n return;\n }\n this.timeline.send(runtime.TimelineTransport.getAgent(this, useTLS), callback);\n };\n return TimelineSender;\n}());\n/* harmony default export */ var timeline_sender = (timeline_sender_TimelineSender);\n\n// CONCATENATED MODULE: ./src/core/channels/channel.ts\nvar channel_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n\n\n\nvar channel_Channel = (function (_super) {\n channel_extends(Channel, _super);\n function Channel(name, pusher) {\n var _this = _super.call(this, function (event, data) {\n logger.debug('No callbacks on ' + name + ' for ' + event);\n }) || this;\n _this.name = name;\n _this.pusher = pusher;\n _this.subscribed = false;\n _this.subscriptionPending = false;\n _this.subscriptionCancelled = false;\n return _this;\n }\n Channel.prototype.authorize = function (socketId, callback) {\n return callback(null, { auth: '' });\n };\n Channel.prototype.trigger = function (event, data) {\n if (event.indexOf('client-') !== 0) {\n throw new BadEventName(\"Event '\" + event + \"' does not start with 'client-'\");\n }\n if (!this.subscribed) {\n var suffix = url_store.buildLogSuffix('triggeringClientEvents');\n logger.warn(\"Client event triggered before channel 'subscription_succeeded' event . \" + suffix);\n }\n return this.pusher.send_event(event, data, this.name);\n };\n Channel.prototype.disconnect = function () {\n this.subscribed = false;\n this.subscriptionPending = false;\n };\n Channel.prototype.handleEvent = function (event) {\n var eventName = event.event;\n var data = event.data;\n if (eventName === 'pusher_internal:subscription_succeeded') {\n this.handleSubscriptionSucceededEvent(event);\n }\n else if (eventName === 'pusher_internal:subscription_count') {\n this.handleSubscriptionCountEvent(event);\n }\n else if (eventName.indexOf('pusher_internal:') !== 0) {\n var metadata = {};\n this.emit(eventName, data, metadata);\n }\n };\n Channel.prototype.handleSubscriptionSucceededEvent = function (event) {\n this.subscriptionPending = false;\n this.subscribed = true;\n if (this.subscriptionCancelled) {\n this.pusher.unsubscribe(this.name);\n }\n else {\n this.emit('pusher:subscription_succeeded', event.data);\n }\n };\n Channel.prototype.handleSubscriptionCountEvent = function (event) {\n if (event.data.subscription_count) {\n this.subscriptionCount = event.data.subscription_count;\n }\n this.emit('pusher:subscription_count', event.data);\n };\n Channel.prototype.subscribe = function () {\n var _this = this;\n if (this.subscribed) {\n return;\n }\n this.subscriptionPending = true;\n this.subscriptionCancelled = false;\n this.authorize(this.pusher.connection.socket_id, function (error, data) {\n if (error) {\n _this.subscriptionPending = false;\n logger.error(error.toString());\n _this.emit('pusher:subscription_error', Object.assign({}, {\n type: 'AuthError',\n error: error.message\n }, error instanceof HTTPAuthError ? { status: error.status } : {}));\n }\n else {\n _this.pusher.send_event('pusher:subscribe', {\n auth: data.auth,\n channel_data: data.channel_data,\n channel: _this.name\n });\n }\n });\n };\n Channel.prototype.unsubscribe = function () {\n this.subscribed = false;\n this.pusher.send_event('pusher:unsubscribe', {\n channel: this.name\n });\n };\n Channel.prototype.cancelSubscription = function () {\n this.subscriptionCancelled = true;\n };\n Channel.prototype.reinstateSubscription = function () {\n this.subscriptionCancelled = false;\n };\n return Channel;\n}(dispatcher));\n/* harmony default export */ var channels_channel = (channel_Channel);\n\n// CONCATENATED MODULE: ./src/core/channels/private_channel.ts\nvar private_channel_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\nvar PrivateChannel = (function (_super) {\n private_channel_extends(PrivateChannel, _super);\n function PrivateChannel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PrivateChannel.prototype.authorize = function (socketId, callback) {\n return this.pusher.config.channelAuthorizer({\n channelName: this.name,\n socketId: socketId\n }, callback);\n };\n return PrivateChannel;\n}(channels_channel));\n/* harmony default export */ var private_channel = (PrivateChannel);\n\n// CONCATENATED MODULE: ./src/core/channels/members.ts\n\nvar members_Members = (function () {\n function Members() {\n this.reset();\n }\n Members.prototype.get = function (id) {\n if (Object.prototype.hasOwnProperty.call(this.members, id)) {\n return {\n id: id,\n info: this.members[id]\n };\n }\n else {\n return null;\n }\n };\n Members.prototype.each = function (callback) {\n var _this = this;\n objectApply(this.members, function (member, id) {\n callback(_this.get(id));\n });\n };\n Members.prototype.setMyID = function (id) {\n this.myID = id;\n };\n Members.prototype.onSubscription = function (subscriptionData) {\n this.members = subscriptionData.presence.hash;\n this.count = subscriptionData.presence.count;\n this.me = this.get(this.myID);\n };\n Members.prototype.addMember = function (memberData) {\n if (this.get(memberData.user_id) === null) {\n this.count++;\n }\n this.members[memberData.user_id] = memberData.user_info;\n return this.get(memberData.user_id);\n };\n Members.prototype.removeMember = function (memberData) {\n var member = this.get(memberData.user_id);\n if (member) {\n delete this.members[memberData.user_id];\n this.count--;\n }\n return member;\n };\n Members.prototype.reset = function () {\n this.members = {};\n this.count = 0;\n this.myID = null;\n this.me = null;\n };\n return Members;\n}());\n/* harmony default export */ var members = (members_Members);\n\n// CONCATENATED MODULE: ./src/core/channels/presence_channel.ts\nvar presence_channel_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n\n\n\n\nvar presence_channel_PresenceChannel = (function (_super) {\n presence_channel_extends(PresenceChannel, _super);\n function PresenceChannel(name, pusher) {\n var _this = _super.call(this, name, pusher) || this;\n _this.members = new members();\n return _this;\n }\n PresenceChannel.prototype.authorize = function (socketId, callback) {\n var _this = this;\n _super.prototype.authorize.call(this, socketId, function (error, authData) { return __awaiter(_this, void 0, void 0, function () {\n var channelData, suffix;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!error) return [3, 3];\n authData = authData;\n if (!(authData.channel_data != null)) return [3, 1];\n channelData = JSON.parse(authData.channel_data);\n this.members.setMyID(channelData.user_id);\n return [3, 3];\n case 1: return [4, this.pusher.user.signinDonePromise];\n case 2:\n _a.sent();\n if (this.pusher.user.user_data != null) {\n this.members.setMyID(this.pusher.user.user_data.id);\n }\n else {\n suffix = url_store.buildLogSuffix('authorizationEndpoint');\n logger.error(\"Invalid auth response for channel '\" + this.name + \"', \" +\n (\"expected 'channel_data' field. \" + suffix + \", \") +\n \"or the user should be signed in.\");\n callback('Invalid auth response');\n return [2];\n }\n _a.label = 3;\n case 3:\n callback(error, authData);\n return [2];\n }\n });\n }); });\n };\n PresenceChannel.prototype.handleEvent = function (event) {\n var eventName = event.event;\n if (eventName.indexOf('pusher_internal:') === 0) {\n this.handleInternalEvent(event);\n }\n else {\n var data = event.data;\n var metadata = {};\n if (event.user_id) {\n metadata.user_id = event.user_id;\n }\n this.emit(eventName, data, metadata);\n }\n };\n PresenceChannel.prototype.handleInternalEvent = function (event) {\n var eventName = event.event;\n var data = event.data;\n switch (eventName) {\n case 'pusher_internal:subscription_succeeded':\n this.handleSubscriptionSucceededEvent(event);\n break;\n case 'pusher_internal:subscription_count':\n this.handleSubscriptionCountEvent(event);\n break;\n case 'pusher_internal:member_added':\n var addedMember = this.members.addMember(data);\n this.emit('pusher:member_added', addedMember);\n break;\n case 'pusher_internal:member_removed':\n var removedMember = this.members.removeMember(data);\n if (removedMember) {\n this.emit('pusher:member_removed', removedMember);\n }\n break;\n }\n };\n PresenceChannel.prototype.handleSubscriptionSucceededEvent = function (event) {\n this.subscriptionPending = false;\n this.subscribed = true;\n if (this.subscriptionCancelled) {\n this.pusher.unsubscribe(this.name);\n }\n else {\n this.members.onSubscription(event.data);\n this.emit('pusher:subscription_succeeded', this.members);\n }\n };\n PresenceChannel.prototype.disconnect = function () {\n this.members.reset();\n _super.prototype.disconnect.call(this);\n };\n return PresenceChannel;\n}(private_channel));\n/* harmony default export */ var presence_channel = (presence_channel_PresenceChannel);\n\n// EXTERNAL MODULE: ./node_modules/@stablelib/utf8/lib/utf8.js\nvar utf8 = __webpack_require__(1);\n\n// EXTERNAL MODULE: ./node_modules/@stablelib/base64/lib/base64.js\nvar base64 = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./src/core/channels/encrypted_channel.ts\nvar encrypted_channel_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n\n\n\nvar encrypted_channel_EncryptedChannel = (function (_super) {\n encrypted_channel_extends(EncryptedChannel, _super);\n function EncryptedChannel(name, pusher, nacl) {\n var _this = _super.call(this, name, pusher) || this;\n _this.key = null;\n _this.nacl = nacl;\n return _this;\n }\n EncryptedChannel.prototype.authorize = function (socketId, callback) {\n var _this = this;\n _super.prototype.authorize.call(this, socketId, function (error, authData) {\n if (error) {\n callback(error, authData);\n return;\n }\n var sharedSecret = authData['shared_secret'];\n if (!sharedSecret) {\n callback(new Error(\"No shared_secret key in auth payload for encrypted channel: \" + _this.name), null);\n return;\n }\n _this.key = Object(base64[\"decode\"])(sharedSecret);\n delete authData['shared_secret'];\n callback(null, authData);\n });\n };\n EncryptedChannel.prototype.trigger = function (event, data) {\n throw new UnsupportedFeature('Client events are not currently supported for encrypted channels');\n };\n EncryptedChannel.prototype.handleEvent = function (event) {\n var eventName = event.event;\n var data = event.data;\n if (eventName.indexOf('pusher_internal:') === 0 ||\n eventName.indexOf('pusher:') === 0) {\n _super.prototype.handleEvent.call(this, event);\n return;\n }\n this.handleEncryptedEvent(eventName, data);\n };\n EncryptedChannel.prototype.handleEncryptedEvent = function (event, data) {\n var _this = this;\n if (!this.key) {\n logger.debug('Received encrypted event before key has been retrieved from the authEndpoint');\n return;\n }\n if (!data.ciphertext || !data.nonce) {\n logger.error('Unexpected format for encrypted event, expected object with `ciphertext` and `nonce` fields, got: ' +\n data);\n return;\n }\n var cipherText = Object(base64[\"decode\"])(data.ciphertext);\n if (cipherText.length < this.nacl.secretbox.overheadLength) {\n logger.error(\"Expected encrypted event ciphertext length to be \" + this.nacl.secretbox.overheadLength + \", got: \" + cipherText.length);\n return;\n }\n var nonce = Object(base64[\"decode\"])(data.nonce);\n if (nonce.length < this.nacl.secretbox.nonceLength) {\n logger.error(\"Expected encrypted event nonce length to be \" + this.nacl.secretbox.nonceLength + \", got: \" + nonce.length);\n return;\n }\n var bytes = this.nacl.secretbox.open(cipherText, nonce, this.key);\n if (bytes === null) {\n logger.debug('Failed to decrypt an event, probably because it was encrypted with a different key. Fetching a new key from the authEndpoint...');\n this.authorize(this.pusher.connection.socket_id, function (error, authData) {\n if (error) {\n logger.error(\"Failed to make a request to the authEndpoint: \" + authData + \". Unable to fetch new key, so dropping encrypted event\");\n return;\n }\n bytes = _this.nacl.secretbox.open(cipherText, nonce, _this.key);\n if (bytes === null) {\n logger.error(\"Failed to decrypt event with new key. Dropping encrypted event\");\n return;\n }\n _this.emit(event, _this.getDataToEmit(bytes));\n return;\n });\n return;\n }\n this.emit(event, this.getDataToEmit(bytes));\n };\n EncryptedChannel.prototype.getDataToEmit = function (bytes) {\n var raw = Object(utf8[\"decode\"])(bytes);\n try {\n return JSON.parse(raw);\n }\n catch (_a) {\n return raw;\n }\n };\n return EncryptedChannel;\n}(private_channel));\n/* harmony default export */ var encrypted_channel = (encrypted_channel_EncryptedChannel);\n\n// CONCATENATED MODULE: ./src/core/connection/connection_manager.ts\nvar connection_manager_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n\n\n\nvar connection_manager_ConnectionManager = (function (_super) {\n connection_manager_extends(ConnectionManager, _super);\n function ConnectionManager(key, options) {\n var _this = _super.call(this) || this;\n _this.state = 'initialized';\n _this.connection = null;\n _this.key = key;\n _this.options = options;\n _this.timeline = _this.options.timeline;\n _this.usingTLS = _this.options.useTLS;\n _this.errorCallbacks = _this.buildErrorCallbacks();\n _this.connectionCallbacks = _this.buildConnectionCallbacks(_this.errorCallbacks);\n _this.handshakeCallbacks = _this.buildHandshakeCallbacks(_this.errorCallbacks);\n var Network = runtime.getNetwork();\n Network.bind('online', function () {\n _this.timeline.info({ netinfo: 'online' });\n if (_this.state === 'connecting' || _this.state === 'unavailable') {\n _this.retryIn(0);\n }\n });\n Network.bind('offline', function () {\n _this.timeline.info({ netinfo: 'offline' });\n if (_this.connection) {\n _this.sendActivityCheck();\n }\n });\n _this.updateStrategy();\n return _this;\n }\n ConnectionManager.prototype.connect = function () {\n if (this.connection || this.runner) {\n return;\n }\n if (!this.strategy.isSupported()) {\n this.updateState('failed');\n return;\n }\n this.updateState('connecting');\n this.startConnecting();\n this.setUnavailableTimer();\n };\n ConnectionManager.prototype.send = function (data) {\n if (this.connection) {\n return this.connection.send(data);\n }\n else {\n return false;\n }\n };\n ConnectionManager.prototype.send_event = function (name, data, channel) {\n if (this.connection) {\n return this.connection.send_event(name, data, channel);\n }\n else {\n return false;\n }\n };\n ConnectionManager.prototype.disconnect = function () {\n this.disconnectInternally();\n this.updateState('disconnected');\n };\n ConnectionManager.prototype.isUsingTLS = function () {\n return this.usingTLS;\n };\n ConnectionManager.prototype.startConnecting = function () {\n var _this = this;\n var callback = function (error, handshake) {\n if (error) {\n _this.runner = _this.strategy.connect(0, callback);\n }\n else {\n if (handshake.action === 'error') {\n _this.emit('error', {\n type: 'HandshakeError',\n error: handshake.error\n });\n _this.timeline.error({ handshakeError: handshake.error });\n }\n else {\n _this.abortConnecting();\n _this.handshakeCallbacks[handshake.action](handshake);\n }\n }\n };\n this.runner = this.strategy.connect(0, callback);\n };\n ConnectionManager.prototype.abortConnecting = function () {\n if (this.runner) {\n this.runner.abort();\n this.runner = null;\n }\n };\n ConnectionManager.prototype.disconnectInternally = function () {\n this.abortConnecting();\n this.clearRetryTimer();\n this.clearUnavailableTimer();\n if (this.connection) {\n var connection = this.abandonConnection();\n connection.close();\n }\n };\n ConnectionManager.prototype.updateStrategy = function () {\n this.strategy = this.options.getStrategy({\n key: this.key,\n timeline: this.timeline,\n useTLS: this.usingTLS\n });\n };\n ConnectionManager.prototype.retryIn = function (delay) {\n var _this = this;\n this.timeline.info({ action: 'retry', delay: delay });\n if (delay > 0) {\n this.emit('connecting_in', Math.round(delay / 1000));\n }\n this.retryTimer = new OneOffTimer(delay || 0, function () {\n _this.disconnectInternally();\n _this.connect();\n });\n };\n ConnectionManager.prototype.clearRetryTimer = function () {\n if (this.retryTimer) {\n this.retryTimer.ensureAborted();\n this.retryTimer = null;\n }\n };\n ConnectionManager.prototype.setUnavailableTimer = function () {\n var _this = this;\n this.unavailableTimer = new OneOffTimer(this.options.unavailableTimeout, function () {\n _this.updateState('unavailable');\n });\n };\n ConnectionManager.prototype.clearUnavailableTimer = function () {\n if (this.unavailableTimer) {\n this.unavailableTimer.ensureAborted();\n }\n };\n ConnectionManager.prototype.sendActivityCheck = function () {\n var _this = this;\n this.stopActivityCheck();\n this.connection.ping();\n this.activityTimer = new OneOffTimer(this.options.pongTimeout, function () {\n _this.timeline.error({ pong_timed_out: _this.options.pongTimeout });\n _this.retryIn(0);\n });\n };\n ConnectionManager.prototype.resetActivityCheck = function () {\n var _this = this;\n this.stopActivityCheck();\n if (this.connection && !this.connection.handlesActivityChecks()) {\n this.activityTimer = new OneOffTimer(this.activityTimeout, function () {\n _this.sendActivityCheck();\n });\n }\n };\n ConnectionManager.prototype.stopActivityCheck = function () {\n if (this.activityTimer) {\n this.activityTimer.ensureAborted();\n }\n };\n ConnectionManager.prototype.buildConnectionCallbacks = function (errorCallbacks) {\n var _this = this;\n return extend({}, errorCallbacks, {\n message: function (message) {\n _this.resetActivityCheck();\n _this.emit('message', message);\n },\n ping: function () {\n _this.send_event('pusher:pong', {});\n },\n activity: function () {\n _this.resetActivityCheck();\n },\n error: function (error) {\n _this.emit('error', error);\n },\n closed: function () {\n _this.abandonConnection();\n if (_this.shouldRetry()) {\n _this.retryIn(1000);\n }\n }\n });\n };\n ConnectionManager.prototype.buildHandshakeCallbacks = function (errorCallbacks) {\n var _this = this;\n return extend({}, errorCallbacks, {\n connected: function (handshake) {\n _this.activityTimeout = Math.min(_this.options.activityTimeout, handshake.activityTimeout, handshake.connection.activityTimeout || Infinity);\n _this.clearUnavailableTimer();\n _this.setConnection(handshake.connection);\n _this.socket_id = _this.connection.id;\n _this.updateState('connected', { socket_id: _this.socket_id });\n }\n });\n };\n ConnectionManager.prototype.buildErrorCallbacks = function () {\n var _this = this;\n var withErrorEmitted = function (callback) {\n return function (result) {\n if (result.error) {\n _this.emit('error', { type: 'WebSocketError', error: result.error });\n }\n callback(result);\n };\n };\n return {\n tls_only: withErrorEmitted(function () {\n _this.usingTLS = true;\n _this.updateStrategy();\n _this.retryIn(0);\n }),\n refused: withErrorEmitted(function () {\n _this.disconnect();\n }),\n backoff: withErrorEmitted(function () {\n _this.retryIn(1000);\n }),\n retry: withErrorEmitted(function () {\n _this.retryIn(0);\n })\n };\n };\n ConnectionManager.prototype.setConnection = function (connection) {\n this.connection = connection;\n for (var event in this.connectionCallbacks) {\n this.connection.bind(event, this.connectionCallbacks[event]);\n }\n this.resetActivityCheck();\n };\n ConnectionManager.prototype.abandonConnection = function () {\n if (!this.connection) {\n return;\n }\n this.stopActivityCheck();\n for (var event in this.connectionCallbacks) {\n this.connection.unbind(event, this.connectionCallbacks[event]);\n }\n var connection = this.connection;\n this.connection = null;\n return connection;\n };\n ConnectionManager.prototype.updateState = function (newState, data) {\n var previousState = this.state;\n this.state = newState;\n if (previousState !== newState) {\n var newStateDescription = newState;\n if (newStateDescription === 'connected') {\n newStateDescription += ' with new socket ID ' + data.socket_id;\n }\n logger.debug('State changed', previousState + ' -> ' + newStateDescription);\n this.timeline.info({ state: newState, params: data });\n this.emit('state_change', { previous: previousState, current: newState });\n this.emit(newState, data);\n }\n };\n ConnectionManager.prototype.shouldRetry = function () {\n return this.state === 'connecting' || this.state === 'connected';\n };\n return ConnectionManager;\n}(dispatcher));\n/* harmony default export */ var connection_manager = (connection_manager_ConnectionManager);\n\n// CONCATENATED MODULE: ./src/core/channels/channels.ts\n\n\n\n\nvar channels_Channels = (function () {\n function Channels() {\n this.channels = {};\n }\n Channels.prototype.add = function (name, pusher) {\n if (!this.channels[name]) {\n this.channels[name] = createChannel(name, pusher);\n }\n return this.channels[name];\n };\n Channels.prototype.all = function () {\n return values(this.channels);\n };\n Channels.prototype.find = function (name) {\n return this.channels[name];\n };\n Channels.prototype.remove = function (name) {\n var channel = this.channels[name];\n delete this.channels[name];\n return channel;\n };\n Channels.prototype.disconnect = function () {\n objectApply(this.channels, function (channel) {\n channel.disconnect();\n });\n };\n return Channels;\n}());\n/* harmony default export */ var channels = (channels_Channels);\nfunction createChannel(name, pusher) {\n if (name.indexOf('private-encrypted-') === 0) {\n if (pusher.config.nacl) {\n return factory.createEncryptedChannel(name, pusher, pusher.config.nacl);\n }\n var errMsg = 'Tried to subscribe to a private-encrypted- channel but no nacl implementation available';\n var suffix = url_store.buildLogSuffix('encryptedChannelSupport');\n throw new UnsupportedFeature(errMsg + \". \" + suffix);\n }\n else if (name.indexOf('private-') === 0) {\n return factory.createPrivateChannel(name, pusher);\n }\n else if (name.indexOf('presence-') === 0) {\n return factory.createPresenceChannel(name, pusher);\n }\n else if (name.indexOf('#') === 0) {\n throw new BadChannelName('Cannot create a channel with name \"' + name + '\".');\n }\n else {\n return factory.createChannel(name, pusher);\n }\n}\n\n// CONCATENATED MODULE: ./src/core/utils/factory.ts\n\n\n\n\n\n\n\n\n\nvar Factory = {\n createChannels: function () {\n return new channels();\n },\n createConnectionManager: function (key, options) {\n return new connection_manager(key, options);\n },\n createChannel: function (name, pusher) {\n return new channels_channel(name, pusher);\n },\n createPrivateChannel: function (name, pusher) {\n return new private_channel(name, pusher);\n },\n createPresenceChannel: function (name, pusher) {\n return new presence_channel(name, pusher);\n },\n createEncryptedChannel: function (name, pusher, nacl) {\n return new encrypted_channel(name, pusher, nacl);\n },\n createTimelineSender: function (timeline, options) {\n return new timeline_sender(timeline, options);\n },\n createHandshake: function (transport, callback) {\n return new connection_handshake(transport, callback);\n },\n createAssistantToTheTransportManager: function (manager, transport, options) {\n return new assistant_to_the_transport_manager(manager, transport, options);\n }\n};\n/* harmony default export */ var factory = (Factory);\n\n// CONCATENATED MODULE: ./src/core/transports/transport_manager.ts\n\nvar transport_manager_TransportManager = (function () {\n function TransportManager(options) {\n this.options = options || {};\n this.livesLeft = this.options.lives || Infinity;\n }\n TransportManager.prototype.getAssistant = function (transport) {\n return factory.createAssistantToTheTransportManager(this, transport, {\n minPingDelay: this.options.minPingDelay,\n maxPingDelay: this.options.maxPingDelay\n });\n };\n TransportManager.prototype.isAlive = function () {\n return this.livesLeft > 0;\n };\n TransportManager.prototype.reportDeath = function () {\n this.livesLeft -= 1;\n };\n return TransportManager;\n}());\n/* harmony default export */ var transport_manager = (transport_manager_TransportManager);\n\n// CONCATENATED MODULE: ./src/core/strategies/sequential_strategy.ts\n\n\n\nvar sequential_strategy_SequentialStrategy = (function () {\n function SequentialStrategy(strategies, options) {\n this.strategies = strategies;\n this.loop = Boolean(options.loop);\n this.failFast = Boolean(options.failFast);\n this.timeout = options.timeout;\n this.timeoutLimit = options.timeoutLimit;\n }\n SequentialStrategy.prototype.isSupported = function () {\n return any(this.strategies, util.method('isSupported'));\n };\n SequentialStrategy.prototype.connect = function (minPriority, callback) {\n var _this = this;\n var strategies = this.strategies;\n var current = 0;\n var timeout = this.timeout;\n var runner = null;\n var tryNextStrategy = function (error, handshake) {\n if (handshake) {\n callback(null, handshake);\n }\n else {\n current = current + 1;\n if (_this.loop) {\n current = current % strategies.length;\n }\n if (current < strategies.length) {\n if (timeout) {\n timeout = timeout * 2;\n if (_this.timeoutLimit) {\n timeout = Math.min(timeout, _this.timeoutLimit);\n }\n }\n runner = _this.tryStrategy(strategies[current], minPriority, { timeout: timeout, failFast: _this.failFast }, tryNextStrategy);\n }\n else {\n callback(true);\n }\n }\n };\n runner = this.tryStrategy(strategies[current], minPriority, { timeout: timeout, failFast: this.failFast }, tryNextStrategy);\n return {\n abort: function () {\n runner.abort();\n },\n forceMinPriority: function (p) {\n minPriority = p;\n if (runner) {\n runner.forceMinPriority(p);\n }\n }\n };\n };\n SequentialStrategy.prototype.tryStrategy = function (strategy, minPriority, options, callback) {\n var timer = null;\n var runner = null;\n if (options.timeout > 0) {\n timer = new OneOffTimer(options.timeout, function () {\n runner.abort();\n callback(true);\n });\n }\n runner = strategy.connect(minPriority, function (error, handshake) {\n if (error && timer && timer.isRunning() && !options.failFast) {\n return;\n }\n if (timer) {\n timer.ensureAborted();\n }\n callback(error, handshake);\n });\n return {\n abort: function () {\n if (timer) {\n timer.ensureAborted();\n }\n runner.abort();\n },\n forceMinPriority: function (p) {\n runner.forceMinPriority(p);\n }\n };\n };\n return SequentialStrategy;\n}());\n/* harmony default export */ var sequential_strategy = (sequential_strategy_SequentialStrategy);\n\n// CONCATENATED MODULE: ./src/core/strategies/best_connected_ever_strategy.ts\n\n\nvar best_connected_ever_strategy_BestConnectedEverStrategy = (function () {\n function BestConnectedEverStrategy(strategies) {\n this.strategies = strategies;\n }\n BestConnectedEverStrategy.prototype.isSupported = function () {\n return any(this.strategies, util.method('isSupported'));\n };\n BestConnectedEverStrategy.prototype.connect = function (minPriority, callback) {\n return connect(this.strategies, minPriority, function (i, runners) {\n return function (error, handshake) {\n runners[i].error = error;\n if (error) {\n if (allRunnersFailed(runners)) {\n callback(true);\n }\n return;\n }\n apply(runners, function (runner) {\n runner.forceMinPriority(handshake.transport.priority);\n });\n callback(null, handshake);\n };\n });\n };\n return BestConnectedEverStrategy;\n}());\n/* harmony default export */ var best_connected_ever_strategy = (best_connected_ever_strategy_BestConnectedEverStrategy);\nfunction connect(strategies, minPriority, callbackBuilder) {\n var runners = map(strategies, function (strategy, i, _, rs) {\n return strategy.connect(minPriority, callbackBuilder(i, rs));\n });\n return {\n abort: function () {\n apply(runners, abortRunner);\n },\n forceMinPriority: function (p) {\n apply(runners, function (runner) {\n runner.forceMinPriority(p);\n });\n }\n };\n}\nfunction allRunnersFailed(runners) {\n return collections_all(runners, function (runner) {\n return Boolean(runner.error);\n });\n}\nfunction abortRunner(runner) {\n if (!runner.error && !runner.aborted) {\n runner.abort();\n runner.aborted = true;\n }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/cached_strategy.ts\n\n\n\n\nvar cached_strategy_CachedStrategy = (function () {\n function CachedStrategy(strategy, transports, options) {\n this.strategy = strategy;\n this.transports = transports;\n this.ttl = options.ttl || 1800 * 1000;\n this.usingTLS = options.useTLS;\n this.timeline = options.timeline;\n }\n CachedStrategy.prototype.isSupported = function () {\n return this.strategy.isSupported();\n };\n CachedStrategy.prototype.connect = function (minPriority, callback) {\n var usingTLS = this.usingTLS;\n var info = fetchTransportCache(usingTLS);\n var strategies = [this.strategy];\n if (info && info.timestamp + this.ttl >= util.now()) {\n var transport = this.transports[info.transport];\n if (transport) {\n this.timeline.info({\n cached: true,\n transport: info.transport,\n latency: info.latency\n });\n strategies.push(new sequential_strategy([transport], {\n timeout: info.latency * 2 + 1000,\n failFast: true\n }));\n }\n }\n var startTimestamp = util.now();\n var runner = strategies\n .pop()\n .connect(minPriority, function cb(error, handshake) {\n if (error) {\n flushTransportCache(usingTLS);\n if (strategies.length > 0) {\n startTimestamp = util.now();\n runner = strategies.pop().connect(minPriority, cb);\n }\n else {\n callback(error);\n }\n }\n else {\n storeTransportCache(usingTLS, handshake.transport.name, util.now() - startTimestamp);\n callback(null, handshake);\n }\n });\n return {\n abort: function () {\n runner.abort();\n },\n forceMinPriority: function (p) {\n minPriority = p;\n if (runner) {\n runner.forceMinPriority(p);\n }\n }\n };\n };\n return CachedStrategy;\n}());\n/* harmony default export */ var cached_strategy = (cached_strategy_CachedStrategy);\nfunction getTransportCacheKey(usingTLS) {\n return 'pusherTransport' + (usingTLS ? 'TLS' : 'NonTLS');\n}\nfunction fetchTransportCache(usingTLS) {\n var storage = runtime.getLocalStorage();\n if (storage) {\n try {\n var serializedCache = storage[getTransportCacheKey(usingTLS)];\n if (serializedCache) {\n return JSON.parse(serializedCache);\n }\n }\n catch (e) {\n flushTransportCache(usingTLS);\n }\n }\n return null;\n}\nfunction storeTransportCache(usingTLS, transport, latency) {\n var storage = runtime.getLocalStorage();\n if (storage) {\n try {\n storage[getTransportCacheKey(usingTLS)] = safeJSONStringify({\n timestamp: util.now(),\n transport: transport,\n latency: latency\n });\n }\n catch (e) {\n }\n }\n}\nfunction flushTransportCache(usingTLS) {\n var storage = runtime.getLocalStorage();\n if (storage) {\n try {\n delete storage[getTransportCacheKey(usingTLS)];\n }\n catch (e) {\n }\n }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/delayed_strategy.ts\n\nvar delayed_strategy_DelayedStrategy = (function () {\n function DelayedStrategy(strategy, _a) {\n var number = _a.delay;\n this.strategy = strategy;\n this.options = { delay: number };\n }\n DelayedStrategy.prototype.isSupported = function () {\n return this.strategy.isSupported();\n };\n DelayedStrategy.prototype.connect = function (minPriority, callback) {\n var strategy = this.strategy;\n var runner;\n var timer = new OneOffTimer(this.options.delay, function () {\n runner = strategy.connect(minPriority, callback);\n });\n return {\n abort: function () {\n timer.ensureAborted();\n if (runner) {\n runner.abort();\n }\n },\n forceMinPriority: function (p) {\n minPriority = p;\n if (runner) {\n runner.forceMinPriority(p);\n }\n }\n };\n };\n return DelayedStrategy;\n}());\n/* harmony default export */ var delayed_strategy = (delayed_strategy_DelayedStrategy);\n\n// CONCATENATED MODULE: ./src/core/strategies/if_strategy.ts\nvar IfStrategy = (function () {\n function IfStrategy(test, trueBranch, falseBranch) {\n this.test = test;\n this.trueBranch = trueBranch;\n this.falseBranch = falseBranch;\n }\n IfStrategy.prototype.isSupported = function () {\n var branch = this.test() ? this.trueBranch : this.falseBranch;\n return branch.isSupported();\n };\n IfStrategy.prototype.connect = function (minPriority, callback) {\n var branch = this.test() ? this.trueBranch : this.falseBranch;\n return branch.connect(minPriority, callback);\n };\n return IfStrategy;\n}());\n/* harmony default export */ var if_strategy = (IfStrategy);\n\n// CONCATENATED MODULE: ./src/core/strategies/first_connected_strategy.ts\nvar FirstConnectedStrategy = (function () {\n function FirstConnectedStrategy(strategy) {\n this.strategy = strategy;\n }\n FirstConnectedStrategy.prototype.isSupported = function () {\n return this.strategy.isSupported();\n };\n FirstConnectedStrategy.prototype.connect = function (minPriority, callback) {\n var runner = this.strategy.connect(minPriority, function (error, handshake) {\n if (handshake) {\n runner.abort();\n }\n callback(error, handshake);\n });\n return runner;\n };\n return FirstConnectedStrategy;\n}());\n/* harmony default export */ var first_connected_strategy = (FirstConnectedStrategy);\n\n// CONCATENATED MODULE: ./src/runtimes/web/default_strategy.ts\n\n\n\n\n\n\n\nfunction testSupportsStrategy(strategy) {\n return function () {\n return strategy.isSupported();\n };\n}\nvar getDefaultStrategy = function (config, baseOptions, defineTransport) {\n var definedTransports = {};\n function defineTransportStrategy(name, type, priority, options, manager) {\n var transport = defineTransport(config, name, type, priority, options, manager);\n definedTransports[name] = transport;\n return transport;\n }\n var ws_options = Object.assign({}, baseOptions, {\n hostNonTLS: config.wsHost + ':' + config.wsPort,\n hostTLS: config.wsHost + ':' + config.wssPort,\n httpPath: config.wsPath\n });\n var wss_options = Object.assign({}, ws_options, {\n useTLS: true\n });\n var sockjs_options = Object.assign({}, baseOptions, {\n hostNonTLS: config.httpHost + ':' + config.httpPort,\n hostTLS: config.httpHost + ':' + config.httpsPort,\n httpPath: config.httpPath\n });\n var timeouts = {\n loop: true,\n timeout: 15000,\n timeoutLimit: 60000\n };\n var ws_manager = new transport_manager({\n lives: 2,\n minPingDelay: 10000,\n maxPingDelay: config.activityTimeout\n });\n var streaming_manager = new transport_manager({\n lives: 2,\n minPingDelay: 10000,\n maxPingDelay: config.activityTimeout\n });\n var ws_transport = defineTransportStrategy('ws', 'ws', 3, ws_options, ws_manager);\n var wss_transport = defineTransportStrategy('wss', 'ws', 3, wss_options, ws_manager);\n var sockjs_transport = defineTransportStrategy('sockjs', 'sockjs', 1, sockjs_options);\n var xhr_streaming_transport = defineTransportStrategy('xhr_streaming', 'xhr_streaming', 1, sockjs_options, streaming_manager);\n var xdr_streaming_transport = defineTransportStrategy('xdr_streaming', 'xdr_streaming', 1, sockjs_options, streaming_manager);\n var xhr_polling_transport = defineTransportStrategy('xhr_polling', 'xhr_polling', 1, sockjs_options);\n var xdr_polling_transport = defineTransportStrategy('xdr_polling', 'xdr_polling', 1, sockjs_options);\n var ws_loop = new sequential_strategy([ws_transport], timeouts);\n var wss_loop = new sequential_strategy([wss_transport], timeouts);\n var sockjs_loop = new sequential_strategy([sockjs_transport], timeouts);\n var streaming_loop = new sequential_strategy([\n new if_strategy(testSupportsStrategy(xhr_streaming_transport), xhr_streaming_transport, xdr_streaming_transport)\n ], timeouts);\n var polling_loop = new sequential_strategy([\n new if_strategy(testSupportsStrategy(xhr_polling_transport), xhr_polling_transport, xdr_polling_transport)\n ], timeouts);\n var http_loop = new sequential_strategy([\n new if_strategy(testSupportsStrategy(streaming_loop), new best_connected_ever_strategy([\n streaming_loop,\n new delayed_strategy(polling_loop, { delay: 4000 })\n ]), polling_loop)\n ], timeouts);\n var http_fallback_loop = new if_strategy(testSupportsStrategy(http_loop), http_loop, sockjs_loop);\n var wsStrategy;\n if (baseOptions.useTLS) {\n wsStrategy = new best_connected_ever_strategy([\n ws_loop,\n new delayed_strategy(http_fallback_loop, { delay: 2000 })\n ]);\n }\n else {\n wsStrategy = new best_connected_ever_strategy([\n ws_loop,\n new delayed_strategy(wss_loop, { delay: 2000 }),\n new delayed_strategy(http_fallback_loop, { delay: 5000 })\n ]);\n }\n return new cached_strategy(new first_connected_strategy(new if_strategy(testSupportsStrategy(ws_transport), wsStrategy, http_fallback_loop)), definedTransports, {\n ttl: 1800000,\n timeline: baseOptions.timeline,\n useTLS: baseOptions.useTLS\n });\n};\n/* harmony default export */ var default_strategy = (getDefaultStrategy);\n\n// CONCATENATED MODULE: ./src/runtimes/web/transports/transport_connection_initializer.ts\n\n/* harmony default export */ var transport_connection_initializer = (function () {\n var self = this;\n self.timeline.info(self.buildTimelineMessage({\n transport: self.name + (self.options.useTLS ? 's' : '')\n }));\n if (self.hooks.isInitialized()) {\n self.changeState('initialized');\n }\n else if (self.hooks.file) {\n self.changeState('initializing');\n Dependencies.load(self.hooks.file, { useTLS: self.options.useTLS }, function (error, callback) {\n if (self.hooks.isInitialized()) {\n self.changeState('initialized');\n callback(true);\n }\n else {\n if (error) {\n self.onError(error);\n }\n self.onClose();\n callback(false);\n }\n });\n }\n else {\n self.onClose();\n }\n});\n\n// CONCATENATED MODULE: ./src/runtimes/web/http/http_xdomain_request.ts\n\nvar http_xdomain_request_hooks = {\n getRequest: function (socket) {\n var xdr = new window.XDomainRequest();\n xdr.ontimeout = function () {\n socket.emit('error', new RequestTimedOut());\n socket.close();\n };\n xdr.onerror = function (e) {\n socket.emit('error', e);\n socket.close();\n };\n xdr.onprogress = function () {\n if (xdr.responseText && xdr.responseText.length > 0) {\n socket.onChunk(200, xdr.responseText);\n }\n };\n xdr.onload = function () {\n if (xdr.responseText && xdr.responseText.length > 0) {\n socket.onChunk(200, xdr.responseText);\n }\n socket.emit('finished', 200);\n socket.close();\n };\n return xdr;\n },\n abortRequest: function (xdr) {\n xdr.ontimeout = xdr.onerror = xdr.onprogress = xdr.onload = null;\n xdr.abort();\n }\n};\n/* harmony default export */ var http_xdomain_request = (http_xdomain_request_hooks);\n\n// CONCATENATED MODULE: ./src/core/http/http_request.ts\nvar http_request_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\nvar MAX_BUFFER_LENGTH = 256 * 1024;\nvar http_request_HTTPRequest = (function (_super) {\n http_request_extends(HTTPRequest, _super);\n function HTTPRequest(hooks, method, url) {\n var _this = _super.call(this) || this;\n _this.hooks = hooks;\n _this.method = method;\n _this.url = url;\n return _this;\n }\n HTTPRequest.prototype.start = function (payload) {\n var _this = this;\n this.position = 0;\n this.xhr = this.hooks.getRequest(this);\n this.unloader = function () {\n _this.close();\n };\n runtime.addUnloadListener(this.unloader);\n this.xhr.open(this.method, this.url, true);\n if (this.xhr.setRequestHeader) {\n this.xhr.setRequestHeader('Content-Type', 'application/json');\n }\n this.xhr.send(payload);\n };\n HTTPRequest.prototype.close = function () {\n if (this.unloader) {\n runtime.removeUnloadListener(this.unloader);\n this.unloader = null;\n }\n if (this.xhr) {\n this.hooks.abortRequest(this.xhr);\n this.xhr = null;\n }\n };\n HTTPRequest.prototype.onChunk = function (status, data) {\n while (true) {\n var chunk = this.advanceBuffer(data);\n if (chunk) {\n this.emit('chunk', { status: status, data: chunk });\n }\n else {\n break;\n }\n }\n if (this.isBufferTooLong(data)) {\n this.emit('buffer_too_long');\n }\n };\n HTTPRequest.prototype.advanceBuffer = function (buffer) {\n var unreadData = buffer.slice(this.position);\n var endOfLinePosition = unreadData.indexOf('\\n');\n if (endOfLinePosition !== -1) {\n this.position += endOfLinePosition + 1;\n return unreadData.slice(0, endOfLinePosition);\n }\n else {\n return null;\n }\n };\n HTTPRequest.prototype.isBufferTooLong = function (buffer) {\n return this.position === buffer.length && buffer.length > MAX_BUFFER_LENGTH;\n };\n return HTTPRequest;\n}(dispatcher));\n/* harmony default export */ var http_request = (http_request_HTTPRequest);\n\n// CONCATENATED MODULE: ./src/core/http/state.ts\nvar State;\n(function (State) {\n State[State[\"CONNECTING\"] = 0] = \"CONNECTING\";\n State[State[\"OPEN\"] = 1] = \"OPEN\";\n State[State[\"CLOSED\"] = 3] = \"CLOSED\";\n})(State || (State = {}));\n/* harmony default export */ var state = (State);\n\n// CONCATENATED MODULE: ./src/core/http/http_socket.ts\n\n\n\nvar autoIncrement = 1;\nvar http_socket_HTTPSocket = (function () {\n function HTTPSocket(hooks, url) {\n this.hooks = hooks;\n this.session = randomNumber(1000) + '/' + randomString(8);\n this.location = getLocation(url);\n this.readyState = state.CONNECTING;\n this.openStream();\n }\n HTTPSocket.prototype.send = function (payload) {\n return this.sendRaw(JSON.stringify([payload]));\n };\n HTTPSocket.prototype.ping = function () {\n this.hooks.sendHeartbeat(this);\n };\n HTTPSocket.prototype.close = function (code, reason) {\n this.onClose(code, reason, true);\n };\n HTTPSocket.prototype.sendRaw = function (payload) {\n if (this.readyState === state.OPEN) {\n try {\n runtime.createSocketRequest('POST', getUniqueURL(getSendURL(this.location, this.session))).start(payload);\n return true;\n }\n catch (e) {\n return false;\n }\n }\n else {\n return false;\n }\n };\n HTTPSocket.prototype.reconnect = function () {\n this.closeStream();\n this.openStream();\n };\n HTTPSocket.prototype.onClose = function (code, reason, wasClean) {\n this.closeStream();\n this.readyState = state.CLOSED;\n if (this.onclose) {\n this.onclose({\n code: code,\n reason: reason,\n wasClean: wasClean\n });\n }\n };\n HTTPSocket.prototype.onChunk = function (chunk) {\n if (chunk.status !== 200) {\n return;\n }\n if (this.readyState === state.OPEN) {\n this.onActivity();\n }\n var payload;\n var type = chunk.data.slice(0, 1);\n switch (type) {\n case 'o':\n payload = JSON.parse(chunk.data.slice(1) || '{}');\n this.onOpen(payload);\n break;\n case 'a':\n payload = JSON.parse(chunk.data.slice(1) || '[]');\n for (var i = 0; i < payload.length; i++) {\n this.onEvent(payload[i]);\n }\n break;\n case 'm':\n payload = JSON.parse(chunk.data.slice(1) || 'null');\n this.onEvent(payload);\n break;\n case 'h':\n this.hooks.onHeartbeat(this);\n break;\n case 'c':\n payload = JSON.parse(chunk.data.slice(1) || '[]');\n this.onClose(payload[0], payload[1], true);\n break;\n }\n };\n HTTPSocket.prototype.onOpen = function (options) {\n if (this.readyState === state.CONNECTING) {\n if (options && options.hostname) {\n this.location.base = replaceHost(this.location.base, options.hostname);\n }\n this.readyState = state.OPEN;\n if (this.onopen) {\n this.onopen();\n }\n }\n else {\n this.onClose(1006, 'Server lost session', true);\n }\n };\n HTTPSocket.prototype.onEvent = function (event) {\n if (this.readyState === state.OPEN && this.onmessage) {\n this.onmessage({ data: event });\n }\n };\n HTTPSocket.prototype.onActivity = function () {\n if (this.onactivity) {\n this.onactivity();\n }\n };\n HTTPSocket.prototype.onError = function (error) {\n if (this.onerror) {\n this.onerror(error);\n }\n };\n HTTPSocket.prototype.openStream = function () {\n var _this = this;\n this.stream = runtime.createSocketRequest('POST', getUniqueURL(this.hooks.getReceiveURL(this.location, this.session)));\n this.stream.bind('chunk', function (chunk) {\n _this.onChunk(chunk);\n });\n this.stream.bind('finished', function (status) {\n _this.hooks.onFinished(_this, status);\n });\n this.stream.bind('buffer_too_long', function () {\n _this.reconnect();\n });\n try {\n this.stream.start();\n }\n catch (error) {\n util.defer(function () {\n _this.onError(error);\n _this.onClose(1006, 'Could not start streaming', false);\n });\n }\n };\n HTTPSocket.prototype.closeStream = function () {\n if (this.stream) {\n this.stream.unbind_all();\n this.stream.close();\n this.stream = null;\n }\n };\n return HTTPSocket;\n}());\nfunction getLocation(url) {\n var parts = /([^\\?]*)\\/*(\\??.*)/.exec(url);\n return {\n base: parts[1],\n queryString: parts[2]\n };\n}\nfunction getSendURL(url, session) {\n return url.base + '/' + session + '/xhr_send';\n}\nfunction getUniqueURL(url) {\n var separator = url.indexOf('?') === -1 ? '?' : '&';\n return url + separator + 't=' + +new Date() + '&n=' + autoIncrement++;\n}\nfunction replaceHost(url, hostname) {\n var urlParts = /(https?:\\/\\/)([^\\/:]+)((\\/|:)?.*)/.exec(url);\n return urlParts[1] + hostname + urlParts[3];\n}\nfunction randomNumber(max) {\n return runtime.randomInt(max);\n}\nfunction randomString(length) {\n var result = [];\n for (var i = 0; i < length; i++) {\n result.push(randomNumber(32).toString(32));\n }\n return result.join('');\n}\n/* harmony default export */ var http_socket = (http_socket_HTTPSocket);\n\n// CONCATENATED MODULE: ./src/core/http/http_streaming_socket.ts\nvar http_streaming_socket_hooks = {\n getReceiveURL: function (url, session) {\n return url.base + '/' + session + '/xhr_streaming' + url.queryString;\n },\n onHeartbeat: function (socket) {\n socket.sendRaw('[]');\n },\n sendHeartbeat: function (socket) {\n socket.sendRaw('[]');\n },\n onFinished: function (socket, status) {\n socket.onClose(1006, 'Connection interrupted (' + status + ')', false);\n }\n};\n/* harmony default export */ var http_streaming_socket = (http_streaming_socket_hooks);\n\n// CONCATENATED MODULE: ./src/core/http/http_polling_socket.ts\nvar http_polling_socket_hooks = {\n getReceiveURL: function (url, session) {\n return url.base + '/' + session + '/xhr' + url.queryString;\n },\n onHeartbeat: function () {\n },\n sendHeartbeat: function (socket) {\n socket.sendRaw('[]');\n },\n onFinished: function (socket, status) {\n if (status === 200) {\n socket.reconnect();\n }\n else {\n socket.onClose(1006, 'Connection interrupted (' + status + ')', false);\n }\n }\n};\n/* harmony default export */ var http_polling_socket = (http_polling_socket_hooks);\n\n// CONCATENATED MODULE: ./src/runtimes/isomorphic/http/http_xhr_request.ts\n\nvar http_xhr_request_hooks = {\n getRequest: function (socket) {\n var Constructor = runtime.getXHRAPI();\n var xhr = new Constructor();\n xhr.onreadystatechange = xhr.onprogress = function () {\n switch (xhr.readyState) {\n case 3:\n if (xhr.responseText && xhr.responseText.length > 0) {\n socket.onChunk(xhr.status, xhr.responseText);\n }\n break;\n case 4:\n if (xhr.responseText && xhr.responseText.length > 0) {\n socket.onChunk(xhr.status, xhr.responseText);\n }\n socket.emit('finished', xhr.status);\n socket.close();\n break;\n }\n };\n return xhr;\n },\n abortRequest: function (xhr) {\n xhr.onreadystatechange = null;\n xhr.abort();\n }\n};\n/* harmony default export */ var http_xhr_request = (http_xhr_request_hooks);\n\n// CONCATENATED MODULE: ./src/runtimes/isomorphic/http/http.ts\n\n\n\n\n\nvar HTTP = {\n createStreamingSocket: function (url) {\n return this.createSocket(http_streaming_socket, url);\n },\n createPollingSocket: function (url) {\n return this.createSocket(http_polling_socket, url);\n },\n createSocket: function (hooks, url) {\n return new http_socket(hooks, url);\n },\n createXHR: function (method, url) {\n return this.createRequest(http_xhr_request, method, url);\n },\n createRequest: function (hooks, method, url) {\n return new http_request(hooks, method, url);\n }\n};\n/* harmony default export */ var http_http = (HTTP);\n\n// CONCATENATED MODULE: ./src/runtimes/web/http/http.ts\n\n\nhttp_http.createXDR = function (method, url) {\n return this.createRequest(http_xdomain_request, method, url);\n};\n/* harmony default export */ var web_http_http = (http_http);\n\n// CONCATENATED MODULE: ./src/runtimes/web/runtime.ts\n\n\n\n\n\n\n\n\n\n\n\n\nvar Runtime = {\n nextAuthCallbackID: 1,\n auth_callbacks: {},\n ScriptReceivers: ScriptReceivers,\n DependenciesReceivers: DependenciesReceivers,\n getDefaultStrategy: default_strategy,\n Transports: transports_transports,\n transportConnectionInitializer: transport_connection_initializer,\n HTTPFactory: web_http_http,\n TimelineTransport: jsonp_timeline,\n getXHRAPI: function () {\n return window.XMLHttpRequest;\n },\n getWebSocketAPI: function () {\n return window.WebSocket || window.MozWebSocket;\n },\n setup: function (PusherClass) {\n var _this = this;\n window.Pusher = PusherClass;\n var initializeOnDocumentBody = function () {\n _this.onDocumentBody(PusherClass.ready);\n };\n if (!window.JSON) {\n Dependencies.load('json2', {}, initializeOnDocumentBody);\n }\n else {\n initializeOnDocumentBody();\n }\n },\n getDocument: function () {\n return document;\n },\n getProtocol: function () {\n return this.getDocument().location.protocol;\n },\n getAuthorizers: function () {\n return { ajax: xhr_auth, jsonp: jsonp_auth };\n },\n onDocumentBody: function (callback) {\n var _this = this;\n if (document.body) {\n callback();\n }\n else {\n setTimeout(function () {\n _this.onDocumentBody(callback);\n }, 0);\n }\n },\n createJSONPRequest: function (url, data) {\n return new jsonp_request(url, data);\n },\n createScriptRequest: function (src) {\n return new script_request(src);\n },\n getLocalStorage: function () {\n try {\n return window.localStorage;\n }\n catch (e) {\n return undefined;\n }\n },\n createXHR: function () {\n if (this.getXHRAPI()) {\n return this.createXMLHttpRequest();\n }\n else {\n return this.createMicrosoftXHR();\n }\n },\n createXMLHttpRequest: function () {\n var Constructor = this.getXHRAPI();\n return new Constructor();\n },\n createMicrosoftXHR: function () {\n return new ActiveXObject('Microsoft.XMLHTTP');\n },\n getNetwork: function () {\n return net_info_Network;\n },\n createWebSocket: function (url) {\n var Constructor = this.getWebSocketAPI();\n return new Constructor(url);\n },\n createSocketRequest: function (method, url) {\n if (this.isXHRSupported()) {\n return this.HTTPFactory.createXHR(method, url);\n }\n else if (this.isXDRSupported(url.indexOf('https:') === 0)) {\n return this.HTTPFactory.createXDR(method, url);\n }\n else {\n throw 'Cross-origin HTTP requests are not supported';\n }\n },\n isXHRSupported: function () {\n var Constructor = this.getXHRAPI();\n return (Boolean(Constructor) && new Constructor().withCredentials !== undefined);\n },\n isXDRSupported: function (useTLS) {\n var protocol = useTLS ? 'https:' : 'http:';\n var documentProtocol = this.getProtocol();\n return (Boolean(window['XDomainRequest']) && documentProtocol === protocol);\n },\n addUnloadListener: function (listener) {\n if (window.addEventListener !== undefined) {\n window.addEventListener('unload', listener, false);\n }\n else if (window.attachEvent !== undefined) {\n window.attachEvent('onunload', listener);\n }\n },\n removeUnloadListener: function (listener) {\n if (window.addEventListener !== undefined) {\n window.removeEventListener('unload', listener, false);\n }\n else if (window.detachEvent !== undefined) {\n window.detachEvent('onunload', listener);\n }\n },\n randomInt: function (max) {\n var random = function () {\n var crypto = window.crypto || window['msCrypto'];\n var random = crypto.getRandomValues(new Uint32Array(1))[0];\n return random / Math.pow(2, 32);\n };\n return Math.floor(random() * max);\n }\n};\n/* harmony default export */ var runtime = (Runtime);\n\n// CONCATENATED MODULE: ./src/core/timeline/level.ts\nvar TimelineLevel;\n(function (TimelineLevel) {\n TimelineLevel[TimelineLevel[\"ERROR\"] = 3] = \"ERROR\";\n TimelineLevel[TimelineLevel[\"INFO\"] = 6] = \"INFO\";\n TimelineLevel[TimelineLevel[\"DEBUG\"] = 7] = \"DEBUG\";\n})(TimelineLevel || (TimelineLevel = {}));\n/* harmony default export */ var timeline_level = (TimelineLevel);\n\n// CONCATENATED MODULE: ./src/core/timeline/timeline.ts\n\n\n\nvar timeline_Timeline = (function () {\n function Timeline(key, session, options) {\n this.key = key;\n this.session = session;\n this.events = [];\n this.options = options || {};\n this.sent = 0;\n this.uniqueID = 0;\n }\n Timeline.prototype.log = function (level, event) {\n if (level <= this.options.level) {\n this.events.push(extend({}, event, { timestamp: util.now() }));\n if (this.options.limit && this.events.length > this.options.limit) {\n this.events.shift();\n }\n }\n };\n Timeline.prototype.error = function (event) {\n this.log(timeline_level.ERROR, event);\n };\n Timeline.prototype.info = function (event) {\n this.log(timeline_level.INFO, event);\n };\n Timeline.prototype.debug = function (event) {\n this.log(timeline_level.DEBUG, event);\n };\n Timeline.prototype.isEmpty = function () {\n return this.events.length === 0;\n };\n Timeline.prototype.send = function (sendfn, callback) {\n var _this = this;\n var data = extend({\n session: this.session,\n bundle: this.sent + 1,\n key: this.key,\n lib: 'js',\n version: this.options.version,\n cluster: this.options.cluster,\n features: this.options.features,\n timeline: this.events\n }, this.options.params);\n this.events = [];\n sendfn(data, function (error, result) {\n if (!error) {\n _this.sent++;\n }\n if (callback) {\n callback(error, result);\n }\n });\n return true;\n };\n Timeline.prototype.generateUniqueID = function () {\n this.uniqueID++;\n return this.uniqueID;\n };\n return Timeline;\n}());\n/* harmony default export */ var timeline_timeline = (timeline_Timeline);\n\n// CONCATENATED MODULE: ./src/core/strategies/transport_strategy.ts\n\n\n\n\nvar transport_strategy_TransportStrategy = (function () {\n function TransportStrategy(name, priority, transport, options) {\n this.name = name;\n this.priority = priority;\n this.transport = transport;\n this.options = options || {};\n }\n TransportStrategy.prototype.isSupported = function () {\n return this.transport.isSupported({\n useTLS: this.options.useTLS\n });\n };\n TransportStrategy.prototype.connect = function (minPriority, callback) {\n var _this = this;\n if (!this.isSupported()) {\n return failAttempt(new UnsupportedStrategy(), callback);\n }\n else if (this.priority < minPriority) {\n return failAttempt(new TransportPriorityTooLow(), callback);\n }\n var connected = false;\n var transport = this.transport.createConnection(this.name, this.priority, this.options.key, this.options);\n var handshake = null;\n var onInitialized = function () {\n transport.unbind('initialized', onInitialized);\n transport.connect();\n };\n var onOpen = function () {\n handshake = factory.createHandshake(transport, function (result) {\n connected = true;\n unbindListeners();\n callback(null, result);\n });\n };\n var onError = function (error) {\n unbindListeners();\n callback(error);\n };\n var onClosed = function () {\n unbindListeners();\n var serializedTransport;\n serializedTransport = safeJSONStringify(transport);\n callback(new TransportClosed(serializedTransport));\n };\n var unbindListeners = function () {\n transport.unbind('initialized', onInitialized);\n transport.unbind('open', onOpen);\n transport.unbind('error', onError);\n transport.unbind('closed', onClosed);\n };\n transport.bind('initialized', onInitialized);\n transport.bind('open', onOpen);\n transport.bind('error', onError);\n transport.bind('closed', onClosed);\n transport.initialize();\n return {\n abort: function () {\n if (connected) {\n return;\n }\n unbindListeners();\n if (handshake) {\n handshake.close();\n }\n else {\n transport.close();\n }\n },\n forceMinPriority: function (p) {\n if (connected) {\n return;\n }\n if (_this.priority < p) {\n if (handshake) {\n handshake.close();\n }\n else {\n transport.close();\n }\n }\n }\n };\n };\n return TransportStrategy;\n}());\n/* harmony default export */ var transport_strategy = (transport_strategy_TransportStrategy);\nfunction failAttempt(error, callback) {\n util.defer(function () {\n callback(error);\n });\n return {\n abort: function () { },\n forceMinPriority: function () { }\n };\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/strategy_builder.ts\n\n\n\n\n\nvar strategy_builder_Transports = runtime.Transports;\nvar strategy_builder_defineTransport = function (config, name, type, priority, options, manager) {\n var transportClass = strategy_builder_Transports[type];\n if (!transportClass) {\n throw new UnsupportedTransport(type);\n }\n var enabled = (!config.enabledTransports ||\n arrayIndexOf(config.enabledTransports, name) !== -1) &&\n (!config.disabledTransports ||\n arrayIndexOf(config.disabledTransports, name) === -1);\n var transport;\n if (enabled) {\n options = Object.assign({ ignoreNullOrigin: config.ignoreNullOrigin }, options);\n transport = new transport_strategy(name, priority, manager ? manager.getAssistant(transportClass) : transportClass, options);\n }\n else {\n transport = strategy_builder_UnsupportedStrategy;\n }\n return transport;\n};\nvar strategy_builder_UnsupportedStrategy = {\n isSupported: function () {\n return false;\n },\n connect: function (_, callback) {\n var deferred = util.defer(function () {\n callback(new UnsupportedStrategy());\n });\n return {\n abort: function () {\n deferred.ensureAborted();\n },\n forceMinPriority: function () { }\n };\n }\n};\n\n// CONCATENATED MODULE: ./src/core/auth/user_authenticator.ts\n\n\nvar composeChannelQuery = function (params, authOptions) {\n var query = 'socket_id=' + encodeURIComponent(params.socketId);\n for (var key in authOptions.params) {\n query +=\n '&' +\n encodeURIComponent(key) +\n '=' +\n encodeURIComponent(authOptions.params[key]);\n }\n if (authOptions.paramsProvider != null) {\n var dynamicParams = authOptions.paramsProvider();\n for (var key in dynamicParams) {\n query +=\n '&' +\n encodeURIComponent(key) +\n '=' +\n encodeURIComponent(dynamicParams[key]);\n }\n }\n return query;\n};\nvar UserAuthenticator = function (authOptions) {\n if (typeof runtime.getAuthorizers()[authOptions.transport] === 'undefined') {\n throw \"'\" + authOptions.transport + \"' is not a recognized auth transport\";\n }\n return function (params, callback) {\n var query = composeChannelQuery(params, authOptions);\n runtime.getAuthorizers()[authOptions.transport](runtime, query, authOptions, AuthRequestType.UserAuthentication, callback);\n };\n};\n/* harmony default export */ var user_authenticator = (UserAuthenticator);\n\n// CONCATENATED MODULE: ./src/core/auth/channel_authorizer.ts\n\n\nvar channel_authorizer_composeChannelQuery = function (params, authOptions) {\n var query = 'socket_id=' + encodeURIComponent(params.socketId);\n query += '&channel_name=' + encodeURIComponent(params.channelName);\n for (var key in authOptions.params) {\n query +=\n '&' +\n encodeURIComponent(key) +\n '=' +\n encodeURIComponent(authOptions.params[key]);\n }\n if (authOptions.paramsProvider != null) {\n var dynamicParams = authOptions.paramsProvider();\n for (var key in dynamicParams) {\n query +=\n '&' +\n encodeURIComponent(key) +\n '=' +\n encodeURIComponent(dynamicParams[key]);\n }\n }\n return query;\n};\nvar ChannelAuthorizer = function (authOptions) {\n if (typeof runtime.getAuthorizers()[authOptions.transport] === 'undefined') {\n throw \"'\" + authOptions.transport + \"' is not a recognized auth transport\";\n }\n return function (params, callback) {\n var query = channel_authorizer_composeChannelQuery(params, authOptions);\n runtime.getAuthorizers()[authOptions.transport](runtime, query, authOptions, AuthRequestType.ChannelAuthorization, callback);\n };\n};\n/* harmony default export */ var channel_authorizer = (ChannelAuthorizer);\n\n// CONCATENATED MODULE: ./src/core/auth/deprecated_channel_authorizer.ts\nvar ChannelAuthorizerProxy = function (pusher, authOptions, channelAuthorizerGenerator) {\n var deprecatedAuthorizerOptions = {\n authTransport: authOptions.transport,\n authEndpoint: authOptions.endpoint,\n auth: {\n params: authOptions.params,\n headers: authOptions.headers\n }\n };\n return function (params, callback) {\n var channel = pusher.channel(params.channelName);\n var channelAuthorizer = channelAuthorizerGenerator(channel, deprecatedAuthorizerOptions);\n channelAuthorizer.authorize(params.socketId, callback);\n };\n};\n\n// CONCATENATED MODULE: ./src/core/config.ts\nvar __assign = (undefined && undefined.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\n\n\n\n\nfunction getConfig(opts, pusher) {\n var config = {\n activityTimeout: opts.activityTimeout || defaults.activityTimeout,\n cluster: opts.cluster || defaults.cluster,\n httpPath: opts.httpPath || defaults.httpPath,\n httpPort: opts.httpPort || defaults.httpPort,\n httpsPort: opts.httpsPort || defaults.httpsPort,\n pongTimeout: opts.pongTimeout || defaults.pongTimeout,\n statsHost: opts.statsHost || defaults.stats_host,\n unavailableTimeout: opts.unavailableTimeout || defaults.unavailableTimeout,\n wsPath: opts.wsPath || defaults.wsPath,\n wsPort: opts.wsPort || defaults.wsPort,\n wssPort: opts.wssPort || defaults.wssPort,\n enableStats: getEnableStatsConfig(opts),\n httpHost: getHttpHost(opts),\n useTLS: shouldUseTLS(opts),\n wsHost: getWebsocketHost(opts),\n userAuthenticator: buildUserAuthenticator(opts),\n channelAuthorizer: buildChannelAuthorizer(opts, pusher)\n };\n if ('disabledTransports' in opts)\n config.disabledTransports = opts.disabledTransports;\n if ('enabledTransports' in opts)\n config.enabledTransports = opts.enabledTransports;\n if ('ignoreNullOrigin' in opts)\n config.ignoreNullOrigin = opts.ignoreNullOrigin;\n if ('timelineParams' in opts)\n config.timelineParams = opts.timelineParams;\n if ('nacl' in opts) {\n config.nacl = opts.nacl;\n }\n return config;\n}\nfunction getHttpHost(opts) {\n if (opts.httpHost) {\n return opts.httpHost;\n }\n if (opts.cluster) {\n return \"sockjs-\" + opts.cluster + \".pusher.com\";\n }\n return defaults.httpHost;\n}\nfunction getWebsocketHost(opts) {\n if (opts.wsHost) {\n return opts.wsHost;\n }\n if (opts.cluster) {\n return getWebsocketHostFromCluster(opts.cluster);\n }\n return getWebsocketHostFromCluster(defaults.cluster);\n}\nfunction getWebsocketHostFromCluster(cluster) {\n return \"ws-\" + cluster + \".pusher.com\";\n}\nfunction shouldUseTLS(opts) {\n if (runtime.getProtocol() === 'https:') {\n return true;\n }\n else if (opts.forceTLS === false) {\n return false;\n }\n return true;\n}\nfunction getEnableStatsConfig(opts) {\n if ('enableStats' in opts) {\n return opts.enableStats;\n }\n if ('disableStats' in opts) {\n return !opts.disableStats;\n }\n return false;\n}\nfunction buildUserAuthenticator(opts) {\n var userAuthentication = __assign(__assign({}, defaults.userAuthentication), opts.userAuthentication);\n if ('customHandler' in userAuthentication &&\n userAuthentication['customHandler'] != null) {\n return userAuthentication['customHandler'];\n }\n return user_authenticator(userAuthentication);\n}\nfunction buildChannelAuth(opts, pusher) {\n var channelAuthorization;\n if ('channelAuthorization' in opts) {\n channelAuthorization = __assign(__assign({}, defaults.channelAuthorization), opts.channelAuthorization);\n }\n else {\n channelAuthorization = {\n transport: opts.authTransport || defaults.authTransport,\n endpoint: opts.authEndpoint || defaults.authEndpoint\n };\n if ('auth' in opts) {\n if ('params' in opts.auth)\n channelAuthorization.params = opts.auth.params;\n if ('headers' in opts.auth)\n channelAuthorization.headers = opts.auth.headers;\n }\n if ('authorizer' in opts)\n channelAuthorization.customHandler = ChannelAuthorizerProxy(pusher, channelAuthorization, opts.authorizer);\n }\n return channelAuthorization;\n}\nfunction buildChannelAuthorizer(opts, pusher) {\n var channelAuthorization = buildChannelAuth(opts, pusher);\n if ('customHandler' in channelAuthorization &&\n channelAuthorization['customHandler'] != null) {\n return channelAuthorization['customHandler'];\n }\n return channel_authorizer(channelAuthorization);\n}\n\n// CONCATENATED MODULE: ./src/core/watchlist.ts\nvar watchlist_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\nvar watchlist_WatchlistFacade = (function (_super) {\n watchlist_extends(WatchlistFacade, _super);\n function WatchlistFacade(pusher) {\n var _this = _super.call(this, function (eventName, data) {\n logger.debug(\"No callbacks on watchlist events for \" + eventName);\n }) || this;\n _this.pusher = pusher;\n _this.bindWatchlistInternalEvent();\n return _this;\n }\n WatchlistFacade.prototype.handleEvent = function (pusherEvent) {\n var _this = this;\n pusherEvent.data.events.forEach(function (watchlistEvent) {\n _this.emit(watchlistEvent.name, watchlistEvent);\n });\n };\n WatchlistFacade.prototype.bindWatchlistInternalEvent = function () {\n var _this = this;\n this.pusher.connection.bind('message', function (pusherEvent) {\n var eventName = pusherEvent.event;\n if (eventName === 'pusher_internal:watchlist_events') {\n _this.handleEvent(pusherEvent);\n }\n });\n };\n return WatchlistFacade;\n}(dispatcher));\n/* harmony default export */ var watchlist = (watchlist_WatchlistFacade);\n\n// CONCATENATED MODULE: ./src/core/utils/flat_promise.ts\nfunction flatPromise() {\n var resolve, reject;\n var promise = new Promise(function (res, rej) {\n resolve = res;\n reject = rej;\n });\n return { promise: promise, resolve: resolve, reject: reject };\n}\n/* harmony default export */ var flat_promise = (flatPromise);\n\n// CONCATENATED MODULE: ./src/core/user.ts\nvar user_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n\n\n\nvar user_UserFacade = (function (_super) {\n user_extends(UserFacade, _super);\n function UserFacade(pusher) {\n var _this = _super.call(this, function (eventName, data) {\n logger.debug('No callbacks on user for ' + eventName);\n }) || this;\n _this.signin_requested = false;\n _this.user_data = null;\n _this.serverToUserChannel = null;\n _this.signinDonePromise = null;\n _this._signinDoneResolve = null;\n _this._onAuthorize = function (err, authData) {\n if (err) {\n logger.warn(\"Error during signin: \" + err);\n _this._cleanup();\n return;\n }\n _this.pusher.send_event('pusher:signin', {\n auth: authData.auth,\n user_data: authData.user_data\n });\n };\n _this.pusher = pusher;\n _this.pusher.connection.bind('state_change', function (_a) {\n var previous = _a.previous, current = _a.current;\n if (previous !== 'connected' && current === 'connected') {\n _this._signin();\n }\n if (previous === 'connected' && current !== 'connected') {\n _this._cleanup();\n _this._newSigninPromiseIfNeeded();\n }\n });\n _this.watchlist = new watchlist(pusher);\n _this.pusher.connection.bind('message', function (event) {\n var eventName = event.event;\n if (eventName === 'pusher:signin_success') {\n _this._onSigninSuccess(event.data);\n }\n if (_this.serverToUserChannel &&\n _this.serverToUserChannel.name === event.channel) {\n _this.serverToUserChannel.handleEvent(event);\n }\n });\n return _this;\n }\n UserFacade.prototype.signin = function () {\n if (this.signin_requested) {\n return;\n }\n this.signin_requested = true;\n this._signin();\n };\n UserFacade.prototype._signin = function () {\n if (!this.signin_requested) {\n return;\n }\n this._newSigninPromiseIfNeeded();\n if (this.pusher.connection.state !== 'connected') {\n return;\n }\n this.pusher.config.userAuthenticator({\n socketId: this.pusher.connection.socket_id\n }, this._onAuthorize);\n };\n UserFacade.prototype._onSigninSuccess = function (data) {\n try {\n this.user_data = JSON.parse(data.user_data);\n }\n catch (e) {\n logger.error(\"Failed parsing user data after signin: \" + data.user_data);\n this._cleanup();\n return;\n }\n if (typeof this.user_data.id !== 'string' || this.user_data.id === '') {\n logger.error(\"user_data doesn't contain an id. user_data: \" + this.user_data);\n this._cleanup();\n return;\n }\n this._signinDoneResolve();\n this._subscribeChannels();\n };\n UserFacade.prototype._subscribeChannels = function () {\n var _this = this;\n var ensure_subscribed = function (channel) {\n if (channel.subscriptionPending && channel.subscriptionCancelled) {\n channel.reinstateSubscription();\n }\n else if (!channel.subscriptionPending &&\n _this.pusher.connection.state === 'connected') {\n channel.subscribe();\n }\n };\n this.serverToUserChannel = new channels_channel(\"#server-to-user-\" + this.user_data.id, this.pusher);\n this.serverToUserChannel.bind_global(function (eventName, data) {\n if (eventName.indexOf('pusher_internal:') === 0 ||\n eventName.indexOf('pusher:') === 0) {\n return;\n }\n _this.emit(eventName, data);\n });\n ensure_subscribed(this.serverToUserChannel);\n };\n UserFacade.prototype._cleanup = function () {\n this.user_data = null;\n if (this.serverToUserChannel) {\n this.serverToUserChannel.unbind_all();\n this.serverToUserChannel.disconnect();\n this.serverToUserChannel = null;\n }\n if (this.signin_requested) {\n this._signinDoneResolve();\n }\n };\n UserFacade.prototype._newSigninPromiseIfNeeded = function () {\n if (!this.signin_requested) {\n return;\n }\n if (this.signinDonePromise && !this.signinDonePromise.done) {\n return;\n }\n var _a = flat_promise(), promise = _a.promise, resolve = _a.resolve, _ = _a.reject;\n promise.done = false;\n var setDone = function () {\n promise.done = true;\n };\n promise.then(setDone)[\"catch\"](setDone);\n this.signinDonePromise = promise;\n this._signinDoneResolve = resolve;\n };\n return UserFacade;\n}(dispatcher));\n/* harmony default export */ var user = (user_UserFacade);\n\n// CONCATENATED MODULE: ./src/core/pusher.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar pusher_Pusher = (function () {\n function Pusher(app_key, options) {\n var _this = this;\n checkAppKey(app_key);\n options = options || {};\n if (!options.cluster && !(options.wsHost || options.httpHost)) {\n var suffix = url_store.buildLogSuffix('javascriptQuickStart');\n logger.warn(\"You should always specify a cluster when connecting. \" + suffix);\n }\n if ('disableStats' in options) {\n logger.warn('The disableStats option is deprecated in favor of enableStats');\n }\n this.key = app_key;\n this.config = getConfig(options, this);\n this.channels = factory.createChannels();\n this.global_emitter = new dispatcher();\n this.sessionID = runtime.randomInt(1000000000);\n this.timeline = new timeline_timeline(this.key, this.sessionID, {\n cluster: this.config.cluster,\n features: Pusher.getClientFeatures(),\n params: this.config.timelineParams || {},\n limit: 50,\n level: timeline_level.INFO,\n version: defaults.VERSION\n });\n if (this.config.enableStats) {\n this.timelineSender = factory.createTimelineSender(this.timeline, {\n host: this.config.statsHost,\n path: '/timeline/v2/' + runtime.TimelineTransport.name\n });\n }\n var getStrategy = function (options) {\n return runtime.getDefaultStrategy(_this.config, options, strategy_builder_defineTransport);\n };\n this.connection = factory.createConnectionManager(this.key, {\n getStrategy: getStrategy,\n timeline: this.timeline,\n activityTimeout: this.config.activityTimeout,\n pongTimeout: this.config.pongTimeout,\n unavailableTimeout: this.config.unavailableTimeout,\n useTLS: Boolean(this.config.useTLS)\n });\n this.connection.bind('connected', function () {\n _this.subscribeAll();\n if (_this.timelineSender) {\n _this.timelineSender.send(_this.connection.isUsingTLS());\n }\n });\n this.connection.bind('message', function (event) {\n var eventName = event.event;\n var internal = eventName.indexOf('pusher_internal:') === 0;\n if (event.channel) {\n var channel = _this.channel(event.channel);\n if (channel) {\n channel.handleEvent(event);\n }\n }\n if (!internal) {\n _this.global_emitter.emit(event.event, event.data);\n }\n });\n this.connection.bind('connecting', function () {\n _this.channels.disconnect();\n });\n this.connection.bind('disconnected', function () {\n _this.channels.disconnect();\n });\n this.connection.bind('error', function (err) {\n logger.warn(err);\n });\n Pusher.instances.push(this);\n this.timeline.info({ instances: Pusher.instances.length });\n this.user = new user(this);\n if (Pusher.isReady) {\n this.connect();\n }\n }\n Pusher.ready = function () {\n Pusher.isReady = true;\n for (var i = 0, l = Pusher.instances.length; i < l; i++) {\n Pusher.instances[i].connect();\n }\n };\n Pusher.getClientFeatures = function () {\n return keys(filterObject({ ws: runtime.Transports.ws }, function (t) {\n return t.isSupported({});\n }));\n };\n Pusher.prototype.channel = function (name) {\n return this.channels.find(name);\n };\n Pusher.prototype.allChannels = function () {\n return this.channels.all();\n };\n Pusher.prototype.connect = function () {\n this.connection.connect();\n if (this.timelineSender) {\n if (!this.timelineSenderTimer) {\n var usingTLS = this.connection.isUsingTLS();\n var timelineSender = this.timelineSender;\n this.timelineSenderTimer = new PeriodicTimer(60000, function () {\n timelineSender.send(usingTLS);\n });\n }\n }\n };\n Pusher.prototype.disconnect = function () {\n this.connection.disconnect();\n if (this.timelineSenderTimer) {\n this.timelineSenderTimer.ensureAborted();\n this.timelineSenderTimer = null;\n }\n };\n Pusher.prototype.bind = function (event_name, callback, context) {\n this.global_emitter.bind(event_name, callback, context);\n return this;\n };\n Pusher.prototype.unbind = function (event_name, callback, context) {\n this.global_emitter.unbind(event_name, callback, context);\n return this;\n };\n Pusher.prototype.bind_global = function (callback) {\n this.global_emitter.bind_global(callback);\n return this;\n };\n Pusher.prototype.unbind_global = function (callback) {\n this.global_emitter.unbind_global(callback);\n return this;\n };\n Pusher.prototype.unbind_all = function (callback) {\n this.global_emitter.unbind_all();\n return this;\n };\n Pusher.prototype.subscribeAll = function () {\n var channelName;\n for (channelName in this.channels.channels) {\n if (this.channels.channels.hasOwnProperty(channelName)) {\n this.subscribe(channelName);\n }\n }\n };\n Pusher.prototype.subscribe = function (channel_name) {\n var channel = this.channels.add(channel_name, this);\n if (channel.subscriptionPending && channel.subscriptionCancelled) {\n channel.reinstateSubscription();\n }\n else if (!channel.subscriptionPending &&\n this.connection.state === 'connected') {\n channel.subscribe();\n }\n return channel;\n };\n Pusher.prototype.unsubscribe = function (channel_name) {\n var channel = this.channels.find(channel_name);\n if (channel && channel.subscriptionPending) {\n channel.cancelSubscription();\n }\n else {\n channel = this.channels.remove(channel_name);\n if (channel && channel.subscribed) {\n channel.unsubscribe();\n }\n }\n };\n Pusher.prototype.send_event = function (event_name, data, channel) {\n return this.connection.send_event(event_name, data, channel);\n };\n Pusher.prototype.shouldUseTLS = function () {\n return this.config.useTLS;\n };\n Pusher.prototype.signin = function () {\n this.user.signin();\n };\n Pusher.instances = [];\n Pusher.isReady = false;\n Pusher.logToConsole = false;\n Pusher.Runtime = runtime;\n Pusher.ScriptReceivers = runtime.ScriptReceivers;\n Pusher.DependenciesReceivers = runtime.DependenciesReceivers;\n Pusher.auth_callbacks = runtime.auth_callbacks;\n return Pusher;\n}());\n/* harmony default export */ var core_pusher = __webpack_exports__[\"default\"] = (pusher_Pusher);\nfunction checkAppKey(key) {\n if (key === null || key === undefined) {\n throw 'You must pass your app key when you instantiate Pusher.';\n }\n}\nruntime.setup(pusher_Pusher);\n\n\n/***/ })\n/******/ ]);\n});\n//# sourceMappingURL=pusher.js.map","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Pusher\"] = factory();\n\telse\n\t\troot[\"Pusher\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n","// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\n\n/**\n * Package base64 implements Base64 encoding and decoding.\n */\n\n// Invalid character used in decoding to indicate\n// that the character to decode is out of range of\n// alphabet and cannot be decoded.\nconst INVALID_BYTE = 256;\n\n/**\n * Implements standard Base64 encoding.\n *\n * Operates in constant time.\n */\nexport class Coder {\n // TODO(dchest): methods to encode chunk-by-chunk.\n\n constructor(private _paddingCharacter = \"=\") { }\n\n encodedLength(length: number): number {\n if (!this._paddingCharacter) {\n return (length * 8 + 5) / 6 | 0;\n }\n return (length + 2) / 3 * 4 | 0;\n }\n\n encode(data: Uint8Array): string {\n let out = \"\";\n\n let i = 0;\n for (; i < data.length - 2; i += 3) {\n let c = (data[i] << 16) | (data[i + 1] << 8) | (data[i + 2]);\n out += this._encodeByte((c >>> 3 * 6) & 63);\n out += this._encodeByte((c >>> 2 * 6) & 63);\n out += this._encodeByte((c >>> 1 * 6) & 63);\n out += this._encodeByte((c >>> 0 * 6) & 63);\n }\n\n const left = data.length - i;\n if (left > 0) {\n let c = (data[i] << 16) | (left === 2 ? data[i + 1] << 8 : 0);\n out += this._encodeByte((c >>> 3 * 6) & 63);\n out += this._encodeByte((c >>> 2 * 6) & 63);\n if (left === 2) {\n out += this._encodeByte((c >>> 1 * 6) & 63);\n } else {\n out += this._paddingCharacter || \"\";\n }\n out += this._paddingCharacter || \"\";\n }\n\n return out;\n }\n\n maxDecodedLength(length: number): number {\n if (!this._paddingCharacter) {\n return (length * 6 + 7) / 8 | 0;\n }\n return length / 4 * 3 | 0;\n }\n\n decodedLength(s: string): number {\n return this.maxDecodedLength(s.length - this._getPaddingLength(s));\n }\n\n decode(s: string): Uint8Array {\n if (s.length === 0) {\n return new Uint8Array(0);\n }\n const paddingLength = this._getPaddingLength(s);\n const length = s.length - paddingLength;\n const out = new Uint8Array(this.maxDecodedLength(length));\n let op = 0;\n let i = 0;\n let haveBad = 0;\n let v0 = 0, v1 = 0, v2 = 0, v3 = 0;\n for (; i < length - 4; i += 4) {\n v0 = this._decodeChar(s.charCodeAt(i + 0));\n v1 = this._decodeChar(s.charCodeAt(i + 1));\n v2 = this._decodeChar(s.charCodeAt(i + 2));\n v3 = this._decodeChar(s.charCodeAt(i + 3));\n out[op++] = (v0 << 2) | (v1 >>> 4);\n out[op++] = (v1 << 4) | (v2 >>> 2);\n out[op++] = (v2 << 6) | v3;\n haveBad |= v0 & INVALID_BYTE;\n haveBad |= v1 & INVALID_BYTE;\n haveBad |= v2 & INVALID_BYTE;\n haveBad |= v3 & INVALID_BYTE;\n }\n if (i < length - 1) {\n v0 = this._decodeChar(s.charCodeAt(i));\n v1 = this._decodeChar(s.charCodeAt(i + 1));\n out[op++] = (v0 << 2) | (v1 >>> 4);\n haveBad |= v0 & INVALID_BYTE;\n haveBad |= v1 & INVALID_BYTE;\n }\n if (i < length - 2) {\n v2 = this._decodeChar(s.charCodeAt(i + 2));\n out[op++] = (v1 << 4) | (v2 >>> 2);\n haveBad |= v2 & INVALID_BYTE;\n }\n if (i < length - 3) {\n v3 = this._decodeChar(s.charCodeAt(i + 3));\n out[op++] = (v2 << 6) | v3;\n haveBad |= v3 & INVALID_BYTE;\n }\n if (haveBad !== 0) {\n throw new Error(\"Base64Coder: incorrect characters for decoding\");\n }\n return out;\n }\n\n // Standard encoding have the following encoded/decoded ranges,\n // which we need to convert between.\n //\n // ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 + /\n // Index: 0 - 25 26 - 51 52 - 61 62 63\n // ASCII: 65 - 90 97 - 122 48 - 57 43 47\n //\n\n // Encode 6 bits in b into a new character.\n protected _encodeByte(b: number): string {\n // Encoding uses constant time operations as follows:\n //\n // 1. Define comparison of A with B using (A - B) >>> 8:\n // if A > B, then result is positive integer\n // if A <= B, then result is 0\n //\n // 2. Define selection of C or 0 using bitwise AND: X & C:\n // if X == 0, then result is 0\n // if X != 0, then result is C\n //\n // 3. Start with the smallest comparison (b >= 0), which is always\n // true, so set the result to the starting ASCII value (65).\n //\n // 4. Continue comparing b to higher ASCII values, and selecting\n // zero if comparison isn't true, otherwise selecting a value\n // to add to result, which:\n //\n // a) undoes the previous addition\n // b) provides new value to add\n //\n let result = b;\n // b >= 0\n result += 65;\n // b > 25\n result += ((25 - b) >>> 8) & ((0 - 65) - 26 + 97);\n // b > 51\n result += ((51 - b) >>> 8) & ((26 - 97) - 52 + 48);\n // b > 61\n result += ((61 - b) >>> 8) & ((52 - 48) - 62 + 43);\n // b > 62\n result += ((62 - b) >>> 8) & ((62 - 43) - 63 + 47);\n\n return String.fromCharCode(result);\n }\n\n // Decode a character code into a byte.\n // Must return 256 if character is out of alphabet range.\n protected _decodeChar(c: number): number {\n // Decoding works similar to encoding: using the same comparison\n // function, but now it works on ranges: result is always incremented\n // by value, but this value becomes zero if the range is not\n // satisfied.\n //\n // Decoding starts with invalid value, 256, which is then\n // subtracted when the range is satisfied. If none of the ranges\n // apply, the function returns 256, which is then checked by\n // the caller to throw error.\n let result = INVALID_BYTE; // start with invalid character\n\n // c == 43 (c > 42 and c < 44)\n result += (((42 - c) & (c - 44)) >>> 8) & (-INVALID_BYTE + c - 43 + 62);\n // c == 47 (c > 46 and c < 48)\n result += (((46 - c) & (c - 48)) >>> 8) & (-INVALID_BYTE + c - 47 + 63);\n // c > 47 and c < 58\n result += (((47 - c) & (c - 58)) >>> 8) & (-INVALID_BYTE + c - 48 + 52);\n // c > 64 and c < 91\n result += (((64 - c) & (c - 91)) >>> 8) & (-INVALID_BYTE + c - 65 + 0);\n // c > 96 and c < 123\n result += (((96 - c) & (c - 123)) >>> 8) & (-INVALID_BYTE + c - 97 + 26);\n\n return result;\n }\n\n private _getPaddingLength(s: string): number {\n let paddingLength = 0;\n if (this._paddingCharacter) {\n for (let i = s.length - 1; i >= 0; i--) {\n if (s[i] !== this._paddingCharacter) {\n break;\n }\n paddingLength++;\n }\n if (s.length < 4 || paddingLength > 2) {\n throw new Error(\"Base64Coder: incorrect padding\");\n }\n }\n return paddingLength;\n }\n\n}\n\nconst stdCoder = new Coder();\n\nexport function encode(data: Uint8Array): string {\n return stdCoder.encode(data);\n}\n\nexport function decode(s: string): Uint8Array {\n return stdCoder.decode(s);\n}\n\n/**\n * Implements URL-safe Base64 encoding.\n * (Same as Base64, but '+' is replaced with '-', and '/' with '_').\n *\n * Operates in constant time.\n */\nexport class URLSafeCoder extends Coder {\n // URL-safe encoding have the following encoded/decoded ranges:\n //\n // ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 - _\n // Index: 0 - 25 26 - 51 52 - 61 62 63\n // ASCII: 65 - 90 97 - 122 48 - 57 45 95\n //\n\n protected _encodeByte(b: number): string {\n let result = b;\n // b >= 0\n result += 65;\n // b > 25\n result += ((25 - b) >>> 8) & ((0 - 65) - 26 + 97);\n // b > 51\n result += ((51 - b) >>> 8) & ((26 - 97) - 52 + 48);\n // b > 61\n result += ((61 - b) >>> 8) & ((52 - 48) - 62 + 45);\n // b > 62\n result += ((62 - b) >>> 8) & ((62 - 45) - 63 + 95);\n\n return String.fromCharCode(result);\n }\n\n protected _decodeChar(c: number): number {\n let result = INVALID_BYTE;\n\n // c == 45 (c > 44 and c < 46)\n result += (((44 - c) & (c - 46)) >>> 8) & (-INVALID_BYTE + c - 45 + 62);\n // c == 95 (c > 94 and c < 96)\n result += (((94 - c) & (c - 96)) >>> 8) & (-INVALID_BYTE + c - 95 + 63);\n // c > 47 and c < 58\n result += (((47 - c) & (c - 58)) >>> 8) & (-INVALID_BYTE + c - 48 + 52);\n // c > 64 and c < 91\n result += (((64 - c) & (c - 91)) >>> 8) & (-INVALID_BYTE + c - 65 + 0);\n // c > 96 and c < 123\n result += (((96 - c) & (c - 123)) >>> 8) & (-INVALID_BYTE + c - 97 + 26);\n\n return result;\n }\n}\n\nconst urlSafeCoder = new URLSafeCoder();\n\nexport function encodeURLSafe(data: Uint8Array): string {\n return urlSafeCoder.encode(data);\n}\n\nexport function decodeURLSafe(s: string): Uint8Array {\n return urlSafeCoder.decode(s);\n}\n\n\nexport const encodedLength = (length: number) =>\n stdCoder.encodedLength(length);\n\nexport const maxDecodedLength = (length: number) =>\n stdCoder.maxDecodedLength(length);\n\nexport const decodedLength = (s: string) =>\n stdCoder.decodedLength(s);\n","// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\n\n/**\n * Package utf8 implements UTF-8 encoding and decoding.\n */\n\nconst INVALID_UTF16 = \"utf8: invalid string\";\nconst INVALID_UTF8 = \"utf8: invalid source encoding\";\n\n/**\n * Encodes the given string into UTF-8 byte array.\n * Throws if the source string has invalid UTF-16 encoding.\n */\nexport function encode(s: string): Uint8Array {\n // Calculate result length and allocate output array.\n // encodedLength() also validates string and throws errors,\n // so we don't need repeat validation here.\n const arr = new Uint8Array(encodedLength(s));\n\n let pos = 0;\n for (let i = 0; i < s.length; i++) {\n let c = s.charCodeAt(i);\n if (c < 0x80) {\n arr[pos++] = c;\n } else if (c < 0x800) {\n arr[pos++] = 0xc0 | c >> 6;\n arr[pos++] = 0x80 | c & 0x3f;\n } else if (c < 0xd800) {\n arr[pos++] = 0xe0 | c >> 12;\n arr[pos++] = 0x80 | (c >> 6) & 0x3f;\n arr[pos++] = 0x80 | c & 0x3f;\n } else {\n i++; // get one more character\n c = (c & 0x3ff) << 10;\n c |= s.charCodeAt(i) & 0x3ff;\n c += 0x10000;\n\n arr[pos++] = 0xf0 | c >> 18;\n arr[pos++] = 0x80 | (c >> 12) & 0x3f;\n arr[pos++] = 0x80 | (c >> 6) & 0x3f;\n arr[pos++] = 0x80 | c & 0x3f;\n }\n }\n return arr;\n}\n\n/**\n * Returns the number of bytes required to encode the given string into UTF-8.\n * Throws if the source string has invalid UTF-16 encoding.\n */\nexport function encodedLength(s: string): number {\n let result = 0;\n for (let i = 0; i < s.length; i++) {\n const c = s.charCodeAt(i);\n if (c < 0x80) {\n result += 1;\n } else if (c < 0x800) {\n result += 2;\n } else if (c < 0xd800) {\n result += 3;\n } else if (c <= 0xdfff) {\n if (i >= s.length - 1) {\n throw new Error(INVALID_UTF16);\n }\n i++; // \"eat\" next character\n result += 4;\n } else {\n throw new Error(INVALID_UTF16);\n }\n }\n return result;\n}\n\n/**\n * Decodes the given byte array from UTF-8 into a string.\n * Throws if encoding is invalid.\n */\nexport function decode(arr: Uint8Array): string {\n const chars: string[] = [];\n for (let i = 0; i < arr.length; i++) {\n let b = arr[i];\n\n if (b & 0x80) {\n let min;\n if (b < 0xe0) {\n // Need 1 more byte.\n if (i >= arr.length) {\n throw new Error(INVALID_UTF8);\n }\n const n1 = arr[++i];\n if ((n1 & 0xc0) !== 0x80) {\n throw new Error(INVALID_UTF8);\n }\n b = (b & 0x1f) << 6 | (n1 & 0x3f);\n min = 0x80;\n } else if (b < 0xf0) {\n // Need 2 more bytes.\n if (i >= arr.length - 1) {\n throw new Error(INVALID_UTF8);\n }\n const n1 = arr[++i];\n const n2 = arr[++i];\n if ((n1 & 0xc0) !== 0x80 || (n2 & 0xc0) !== 0x80) {\n throw new Error(INVALID_UTF8);\n }\n b = (b & 0x0f) << 12 | (n1 & 0x3f) << 6 | (n2 & 0x3f);\n min = 0x800;\n } else if (b < 0xf8) {\n // Need 3 more bytes.\n if (i >= arr.length - 2) {\n throw new Error(INVALID_UTF8);\n }\n const n1 = arr[++i];\n const n2 = arr[++i];\n const n3 = arr[++i];\n if ((n1 & 0xc0) !== 0x80 || (n2 & 0xc0) !== 0x80 || (n3 & 0xc0) !== 0x80) {\n throw new Error(INVALID_UTF8);\n }\n b = (b & 0x0f) << 18 | (n1 & 0x3f) << 12 | (n2 & 0x3f) << 6 | (n3 & 0x3f);\n min = 0x10000;\n } else {\n throw new Error(INVALID_UTF8);\n }\n\n if (b < min || (b >= 0xd800 && b <= 0xdfff)) {\n throw new Error(INVALID_UTF8);\n }\n\n if (b >= 0x10000) {\n // Surrogate pair.\n if (b > 0x10ffff) {\n throw new Error(INVALID_UTF8);\n }\n b -= 0x10000;\n chars.push(String.fromCharCode(0xd800 | (b >> 10)));\n b = 0xdc00 | (b & 0x3ff);\n }\n }\n\n chars.push(String.fromCharCode(b));\n }\n return chars.join(\"\");\n}\n","// required so we don't have to do require('pusher').default etc.\nmodule.exports = require('./pusher').default;\n","import ScriptReceiver from './script_receiver';\n\n/** Builds receivers for JSONP and Script requests.\n *\n * Each receiver is an object with following fields:\n * - number - unique (for the factory instance), numerical id of the receiver\n * - id - a string ID that can be used in DOM attributes\n * - name - name of the function triggering the receiver\n * - callback - callback function\n *\n * Receivers are triggered only once, on the first callback call.\n *\n * Receivers can be called by their name or by accessing factory object\n * by the number key.\n *\n * @param {String} prefix the prefix used in ids\n * @param {String} name the name of the object\n */\nexport class ScriptReceiverFactory {\n lastId: number;\n prefix: string;\n name: string;\n\n constructor(prefix: string, name: string) {\n this.lastId = 0;\n this.prefix = prefix;\n this.name = name;\n }\n\n create(callback: Function): ScriptReceiver {\n this.lastId++;\n\n var number = this.lastId;\n var id = this.prefix + number;\n var name = this.name + '[' + number + ']';\n\n var called = false;\n var callbackWrapper = function() {\n if (!called) {\n callback.apply(null, arguments);\n called = true;\n }\n };\n\n this[number] = callbackWrapper;\n return { number: number, id: id, name: name, callback: callbackWrapper };\n }\n\n remove(receiver: ScriptReceiver) {\n delete this[receiver.number];\n }\n}\n\nexport var ScriptReceivers = new ScriptReceiverFactory(\n '_pusher_script_',\n 'Pusher.ScriptReceivers'\n);\n","import {\n ChannelAuthorizationOptions,\n UserAuthenticationOptions\n} from './auth/options';\nimport { AuthTransport } from './config';\n\nexport interface DefaultConfig {\n VERSION: string;\n PROTOCOL: number;\n wsPort: number;\n wssPort: number;\n wsPath: string;\n httpHost: string;\n httpPort: number;\n httpsPort: number;\n httpPath: string;\n stats_host: string;\n authEndpoint: string;\n authTransport: AuthTransport;\n activityTimeout: number;\n pongTimeout: number;\n unavailableTimeout: number;\n cluster: string;\n userAuthentication: UserAuthenticationOptions;\n channelAuthorization: ChannelAuthorizationOptions;\n\n cdn_http?: string;\n cdn_https?: string;\n dependency_suffix?: string;\n}\n\nvar Defaults: DefaultConfig = {\n VERSION: VERSION,\n PROTOCOL: 7,\n\n wsPort: 80,\n wssPort: 443,\n wsPath: '',\n // DEPRECATED: SockJS fallback parameters\n httpHost: 'sockjs.pusher.com',\n httpPort: 80,\n httpsPort: 443,\n httpPath: '/pusher',\n // DEPRECATED: Stats\n stats_host: 'stats.pusher.com',\n // DEPRECATED: Other settings\n authEndpoint: '/pusher/auth',\n authTransport: 'ajax',\n activityTimeout: 120000,\n pongTimeout: 30000,\n unavailableTimeout: 10000,\n cluster: 'mt1',\n userAuthentication: {\n endpoint: '/pusher/user-auth',\n transport: 'ajax'\n },\n channelAuthorization: {\n endpoint: '/pusher/auth',\n transport: 'ajax'\n },\n\n // CDN configuration\n cdn_http: CDN_HTTP,\n cdn_https: CDN_HTTPS,\n dependency_suffix: DEPENDENCY_SUFFIX\n};\n\nexport default Defaults;\n","import {\n ScriptReceivers,\n ScriptReceiverFactory\n} from './script_receiver_factory';\nimport Runtime from 'runtime';\nimport ScriptRequest from './script_request';\n\n/** Handles loading dependency files.\n *\n * Dependency loaders don't remember whether a resource has been loaded or\n * not. It is caller's responsibility to make sure the resource is not loaded\n * twice. This is because it's impossible to detect resource loading status\n * without knowing its content.\n *\n * Options:\n * - cdn_http - url to HTTP CND\n * - cdn_https - url to HTTPS CDN\n * - version - version of pusher-js\n * - suffix - suffix appended to all names of dependency files\n *\n * @param {Object} options\n */\nexport default class DependencyLoader {\n options: any;\n receivers: ScriptReceiverFactory;\n loading: any;\n\n constructor(options: any) {\n this.options = options;\n this.receivers = options.receivers || ScriptReceivers;\n this.loading = {};\n }\n\n /** Loads the dependency from CDN.\n *\n * @param {String} name\n * @param {Function} callback\n */\n load(name: string, options: any, callback: Function) {\n var self = this;\n\n if (self.loading[name] && self.loading[name].length > 0) {\n self.loading[name].push(callback);\n } else {\n self.loading[name] = [callback];\n\n var request = Runtime.createScriptRequest(self.getPath(name, options));\n var receiver = self.receivers.create(function(error) {\n self.receivers.remove(receiver);\n\n if (self.loading[name]) {\n var callbacks = self.loading[name];\n delete self.loading[name];\n\n var successCallback = function(wasSuccessful) {\n if (!wasSuccessful) {\n request.cleanup();\n }\n };\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i](error, successCallback);\n }\n }\n });\n request.send(receiver);\n }\n }\n\n /** Returns a root URL for pusher-js CDN.\n *\n * @returns {String}\n */\n getRoot(options: any): string {\n var cdn;\n var protocol = Runtime.getDocument().location.protocol;\n if ((options && options.useTLS) || protocol === 'https:') {\n cdn = this.options.cdn_https;\n } else {\n cdn = this.options.cdn_http;\n }\n // make sure there are no double slashes\n return cdn.replace(/\\/*$/, '') + '/' + this.options.version;\n }\n\n /** Returns a full path to a dependency file.\n *\n * @param {String} name\n * @returns {String}\n */\n getPath(name: string, options: any): string {\n return this.getRoot(options) + '/' + name + this.options.suffix + '.js';\n }\n}\n","import { ScriptReceiverFactory } from './script_receiver_factory';\nimport Defaults from 'core/defaults';\nimport DependencyLoader from './dependency_loader';\n\nexport var DependenciesReceivers = new ScriptReceiverFactory(\n '_pusher_dependencies',\n 'Pusher.DependenciesReceivers'\n);\n\nexport var Dependencies = new DependencyLoader({\n cdn_http: Defaults.cdn_http,\n cdn_https: Defaults.cdn_https,\n version: Defaults.VERSION,\n suffix: Defaults.dependency_suffix,\n receivers: DependenciesReceivers\n});\n","/**\n * A place to store help URLs for error messages etc\n */\n\nconst urlStore = {\n baseUrl: 'https://pusher.com',\n urls: {\n authenticationEndpoint: {\n path: '/docs/channels/server_api/authenticating_users'\n },\n authorizationEndpoint: {\n path: '/docs/channels/server_api/authorizing-users/'\n },\n javascriptQuickStart: {\n path: '/docs/javascript_quick_start'\n },\n triggeringClientEvents: {\n path: '/docs/client_api_guide/client_events#trigger-events'\n },\n encryptedChannelSupport: {\n fullUrl:\n 'https://github.com/pusher/pusher-js/tree/cc491015371a4bde5743d1c87a0fbac0feb53195#encrypted-channel-support'\n }\n }\n};\n\n/** Builds a consistent string with links to pusher documentation\n *\n * @param {string} key - relevant key in the url_store.urls object\n * @return {string} suffix string to append to log message\n */\nconst buildLogSuffix = function(key: string): string {\n const urlPrefix = 'See:';\n const urlObj = urlStore.urls[key];\n if (!urlObj) return '';\n\n let url;\n if (urlObj.fullUrl) {\n url = urlObj.fullUrl;\n } else if (urlObj.path) {\n url = urlStore.baseUrl + urlObj.path;\n }\n\n if (!url) return '';\n return `${urlPrefix} ${url}`;\n};\n\nexport default { buildLogSuffix };\n","export enum AuthRequestType {\n UserAuthentication = 'user-authentication',\n ChannelAuthorization = 'channel-authorization'\n}\n\nexport interface ChannelAuthorizationData {\n auth: string;\n channel_data?: string;\n shared_secret?: string;\n}\n\nexport type ChannelAuthorizationCallback = (\n error: Error | null,\n authData: ChannelAuthorizationData | null\n) => void;\n\nexport interface ChannelAuthorizationRequestParams {\n socketId: string;\n channelName: string;\n}\n\nexport interface ChannelAuthorizationHandler {\n (\n params: ChannelAuthorizationRequestParams,\n callback: ChannelAuthorizationCallback\n ): void;\n}\n\nexport interface UserAuthenticationData {\n auth: string;\n user_data: string;\n}\n\nexport type UserAuthenticationCallback = (\n error: Error | null,\n authData: UserAuthenticationData | null\n) => void;\n\nexport interface UserAuthenticationRequestParams {\n socketId: string;\n}\n\nexport interface UserAuthenticationHandler {\n (\n params: UserAuthenticationRequestParams,\n callback: UserAuthenticationCallback\n ): void;\n}\n\nexport type AuthTransportCallback =\n | ChannelAuthorizationCallback\n | UserAuthenticationCallback;\n\nexport interface AuthOptionsT {\n transport: 'ajax' | 'jsonp';\n endpoint: string;\n params?: any;\n headers?: any;\n paramsProvider?: () => any;\n headersProvider?: () => any;\n customHandler?: AuthHandler;\n}\n\nexport declare type UserAuthenticationOptions = AuthOptionsT<\n UserAuthenticationHandler\n>;\nexport declare type ChannelAuthorizationOptions = AuthOptionsT<\n ChannelAuthorizationHandler\n>;\n\nexport interface InternalAuthOptions {\n transport: 'ajax' | 'jsonp';\n endpoint: string;\n params?: any;\n headers?: any;\n paramsProvider?: () => any;\n headersProvider?: () => any;\n}\n","/** Error classes used throughout the library. */\n// https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\nexport class BadEventName extends Error {\n constructor(msg?: string) {\n super(msg);\n\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n\nexport class BadChannelName extends Error {\n constructor(msg?: string) {\n super(msg);\n\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n\nexport class RequestTimedOut extends Error {\n constructor(msg?: string) {\n super(msg);\n\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\nexport class TransportPriorityTooLow extends Error {\n constructor(msg?: string) {\n super(msg);\n\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\nexport class TransportClosed extends Error {\n constructor(msg?: string) {\n super(msg);\n\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\nexport class UnsupportedFeature extends Error {\n constructor(msg?: string) {\n super(msg);\n\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\nexport class UnsupportedTransport extends Error {\n constructor(msg?: string) {\n super(msg);\n\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\nexport class UnsupportedStrategy extends Error {\n constructor(msg?: string) {\n super(msg);\n\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\nexport class HTTPAuthError extends Error {\n status: number;\n constructor(status: number, msg?: string) {\n super(msg);\n this.status = status;\n\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n","import TimelineSender from 'core/timeline/timeline_sender';\nimport * as Collections from 'core/utils/collections';\nimport Util from 'core/util';\nimport Runtime from 'runtime';\nimport { AuthTransport } from 'core/auth/auth_transports';\nimport AbstractRuntime from 'runtimes/interface';\nimport UrlStore from 'core/utils/url_store';\nimport {\n AuthRequestType,\n AuthTransportCallback,\n InternalAuthOptions\n} from 'core/auth/options';\nimport { HTTPAuthError } from 'core/errors';\n\nconst ajax: AuthTransport = function(\n context: AbstractRuntime,\n query: string,\n authOptions: InternalAuthOptions,\n authRequestType: AuthRequestType,\n callback: AuthTransportCallback\n) {\n const xhr = Runtime.createXHR();\n xhr.open('POST', authOptions.endpoint, true);\n\n // add request headers\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n for (var headerName in authOptions.headers) {\n xhr.setRequestHeader(headerName, authOptions.headers[headerName]);\n }\n if (authOptions.headersProvider != null) {\n let dynamicHeaders = authOptions.headersProvider();\n for (var headerName in dynamicHeaders) {\n xhr.setRequestHeader(headerName, dynamicHeaders[headerName]);\n }\n }\n\n xhr.onreadystatechange = function() {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n let data;\n let parsed = false;\n\n try {\n data = JSON.parse(xhr.responseText);\n parsed = true;\n } catch (e) {\n callback(\n new HTTPAuthError(\n 200,\n `JSON returned from ${authRequestType.toString()} endpoint was invalid, yet status code was 200. Data was: ${\n xhr.responseText\n }`\n ),\n null\n );\n }\n\n if (parsed) {\n // prevents double execution.\n callback(null, data);\n }\n } else {\n let suffix = '';\n switch (authRequestType) {\n case AuthRequestType.UserAuthentication:\n suffix = UrlStore.buildLogSuffix('authenticationEndpoint');\n break;\n case AuthRequestType.ChannelAuthorization:\n suffix = `Clients must be authorized to join private or presence channels. ${UrlStore.buildLogSuffix(\n 'authorizationEndpoint'\n )}`;\n break;\n }\n callback(\n new HTTPAuthError(\n xhr.status,\n `Unable to retrieve auth string from ${authRequestType.toString()} endpoint - ` +\n `received status: ${xhr.status} from ${authOptions.endpoint}. ${suffix}`\n ),\n null\n );\n }\n }\n };\n\n xhr.send(query);\n return xhr;\n};\n\nexport default ajax;\n","export default function encode(s: any): string {\n return btoa(utob(s));\n}\n\nvar fromCharCode = String.fromCharCode;\n\nvar b64chars =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nvar b64tab = {};\n\nfor (var i = 0, l = b64chars.length; i < l; i++) {\n b64tab[b64chars.charAt(i)] = i;\n}\n\nvar cb_utob = function(c) {\n var cc = c.charCodeAt(0);\n return cc < 0x80\n ? c\n : cc < 0x800\n ? fromCharCode(0xc0 | (cc >>> 6)) + fromCharCode(0x80 | (cc & 0x3f))\n : fromCharCode(0xe0 | ((cc >>> 12) & 0x0f)) +\n fromCharCode(0x80 | ((cc >>> 6) & 0x3f)) +\n fromCharCode(0x80 | (cc & 0x3f));\n};\n\nvar utob = function(u) {\n return u.replace(/[^\\x00-\\x7F]/g, cb_utob);\n};\n\nvar cb_encode = function(ccc) {\n var padlen = [0, 2, 1][ccc.length % 3];\n var ord =\n (ccc.charCodeAt(0) << 16) |\n ((ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8) |\n (ccc.length > 2 ? ccc.charCodeAt(2) : 0);\n var chars = [\n b64chars.charAt(ord >>> 18),\n b64chars.charAt((ord >>> 12) & 63),\n padlen >= 2 ? '=' : b64chars.charAt((ord >>> 6) & 63),\n padlen >= 1 ? '=' : b64chars.charAt(ord & 63)\n ];\n return chars.join('');\n};\n\nvar btoa =\n global.btoa ||\n function(b) {\n return b.replace(/[\\s\\S]{1,3}/g, cb_encode);\n };\n","import TimedCallback from './timed_callback';\nimport { Delay, Scheduler, Canceller } from './scheduling';\n\nabstract class Timer {\n protected clear: Canceller;\n protected timer: number | void;\n\n constructor(\n set: Scheduler,\n clear: Canceller,\n delay: Delay,\n callback: TimedCallback\n ) {\n this.clear = clear;\n this.timer = set(() => {\n if (this.timer) {\n this.timer = callback(this.timer);\n }\n }, delay);\n }\n\n /** Returns whether the timer is still running.\n *\n * @return {Boolean}\n */\n isRunning(): boolean {\n return this.timer !== null;\n }\n\n /** Aborts a timer when it's running. */\n ensureAborted() {\n if (this.timer) {\n this.clear(this.timer);\n this.timer = null;\n }\n }\n}\n\nexport default Timer;\n","import Timer from './abstract_timer';\nimport TimedCallback from './timed_callback';\nimport { Delay } from './scheduling';\n\n// We need to bind clear functions this way to avoid exceptions on IE8\nfunction clearTimeout(timer) {\n global.clearTimeout(timer);\n}\nfunction clearInterval(timer) {\n global.clearInterval(timer);\n}\n\n/** Cross-browser compatible one-off timer abstraction.\n *\n * @param {Number} delay\n * @param {Function} callback\n */\nexport class OneOffTimer extends Timer {\n constructor(delay: Delay, callback: TimedCallback) {\n super(setTimeout, clearTimeout, delay, function(timer) {\n callback();\n return null;\n });\n }\n}\n\n/** Cross-browser compatible periodic timer abstraction.\n *\n * @param {Number} delay\n * @param {Function} callback\n */\nexport class PeriodicTimer extends Timer {\n constructor(delay: Delay, callback: TimedCallback) {\n super(setInterval, clearInterval, delay, function(timer) {\n callback();\n return timer;\n });\n }\n}\n","import * as Collections from './utils/collections';\nimport TimedCallback from './utils/timers/timed_callback';\nimport { OneOffTimer, PeriodicTimer } from './utils/timers';\n\nvar Util = {\n now(): number {\n if (Date.now) {\n return Date.now();\n } else {\n return new Date().valueOf();\n }\n },\n\n defer(callback: TimedCallback): OneOffTimer {\n return new OneOffTimer(0, callback);\n },\n\n /** Builds a function that will proxy a method call to its first argument.\n *\n * Allows partial application of arguments, so additional arguments are\n * prepended to the argument list.\n *\n * @param {String} name method name\n * @return {Function} proxy function\n */\n method(name: string, ...args: any[]): Function {\n var boundArguments = Array.prototype.slice.call(arguments, 1);\n return function(object) {\n return object[name].apply(object, boundArguments.concat(arguments));\n };\n }\n};\n\nexport default Util;\n","import base64encode from '../base64';\nimport Util from '../util';\n\n/** Merges multiple objects into the target argument.\n *\n * For properties that are plain Objects, performs a deep-merge. For the\n * rest it just copies the value of the property.\n *\n * To extend prototypes use it as following:\n * Pusher.Util.extend(Target.prototype, Base.prototype)\n *\n * You can also use it to merge objects without altering them:\n * Pusher.Util.extend({}, object1, object2)\n *\n * @param {Object} target\n * @return {Object} the target argument\n */\nexport function extend(target: any, ...sources: any[]): T {\n for (var i = 0; i < sources.length; i++) {\n var extensions = sources[i];\n for (var property in extensions) {\n if (\n extensions[property] &&\n extensions[property].constructor &&\n extensions[property].constructor === Object\n ) {\n target[property] = extend(target[property] || {}, extensions[property]);\n } else {\n target[property] = extensions[property];\n }\n }\n }\n return target;\n}\n\nexport function stringify(): string {\n var m = ['Pusher'];\n for (var i = 0; i < arguments.length; i++) {\n if (typeof arguments[i] === 'string') {\n m.push(arguments[i]);\n } else {\n m.push(safeJSONStringify(arguments[i]));\n }\n }\n return m.join(' : ');\n}\n\nexport function arrayIndexOf(array: any[], item: any): number {\n // MSIE doesn't have array.indexOf\n var nativeIndexOf = Array.prototype.indexOf;\n if (array === null) {\n return -1;\n }\n if (nativeIndexOf && array.indexOf === nativeIndexOf) {\n return array.indexOf(item);\n }\n for (var i = 0, l = array.length; i < l; i++) {\n if (array[i] === item) {\n return i;\n }\n }\n return -1;\n}\n\n/** Applies a function f to all properties of an object.\n *\n * Function f gets 3 arguments passed:\n * - element from the object\n * - key of the element\n * - reference to the object\n *\n * @param {Object} object\n * @param {Function} f\n */\nexport function objectApply(object: any, f: Function) {\n for (var key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n f(object[key], key, object);\n }\n }\n}\n\n/** Return a list of objects own proerty keys\n *\n * @param {Object} object\n * @returns {Array}\n */\nexport function keys(object: any): string[] {\n var keys = [];\n objectApply(object, function(_, key) {\n keys.push(key);\n });\n return keys;\n}\n\n/** Return a list of object's own property values\n *\n * @param {Object} object\n * @returns {Array}\n */\nexport function values(object: any): any[] {\n var values = [];\n objectApply(object, function(value) {\n values.push(value);\n });\n return values;\n}\n\n/** Applies a function f to all elements of an array.\n *\n * Function f gets 3 arguments passed:\n * - element from the array\n * - index of the element\n * - reference to the array\n *\n * @param {Array} array\n * @param {Function} f\n */\nexport function apply(array: any[], f: Function, context?: any) {\n for (var i = 0; i < array.length; i++) {\n f.call(context || global, array[i], i, array);\n }\n}\n\n/** Maps all elements of the array and returns the result.\n *\n * Function f gets 4 arguments passed:\n * - element from the array\n * - index of the element\n * - reference to the source array\n * - reference to the destination array\n *\n * @param {Array} array\n * @param {Function} f\n */\nexport function map(array: any[], f: Function): any[] {\n var result = [];\n for (var i = 0; i < array.length; i++) {\n result.push(f(array[i], i, array, result));\n }\n return result;\n}\n\n/** Maps all elements of the object and returns the result.\n *\n * Function f gets 4 arguments passed:\n * - element from the object\n * - key of the element\n * - reference to the source object\n * - reference to the destination object\n *\n * @param {Object} object\n * @param {Function} f\n */\nexport function mapObject(object: any, f: Function): any {\n var result = {};\n objectApply(object, function(value, key) {\n result[key] = f(value);\n });\n return result;\n}\n\n/** Filters elements of the array using a test function.\n *\n * Function test gets 4 arguments passed:\n * - element from the array\n * - index of the element\n * - reference to the source array\n * - reference to the destination array\n *\n * @param {Array} array\n * @param {Function} f\n */\nexport function filter(array: any[], test: Function): any[] {\n test =\n test ||\n function(value) {\n return !!value;\n };\n\n var result = [];\n for (var i = 0; i < array.length; i++) {\n if (test(array[i], i, array, result)) {\n result.push(array[i]);\n }\n }\n return result;\n}\n\n/** Filters properties of the object using a test function.\n *\n * Function test gets 4 arguments passed:\n * - element from the object\n * - key of the element\n * - reference to the source object\n * - reference to the destination object\n *\n * @param {Object} object\n * @param {Function} f\n */\nexport function filterObject(object: Object, test: Function) {\n var result = {};\n objectApply(object, function(value, key) {\n if ((test && test(value, key, object, result)) || Boolean(value)) {\n result[key] = value;\n }\n });\n return result;\n}\n\n/** Flattens an object into a two-dimensional array.\n *\n * @param {Object} object\n * @return {Array} resulting array of [key, value] pairs\n */\nexport function flatten(object: Object): any[] {\n var result = [];\n objectApply(object, function(value, key) {\n result.push([key, value]);\n });\n return result;\n}\n\n/** Checks whether any element of the array passes the test.\n *\n * Function test gets 3 arguments passed:\n * - element from the array\n * - index of the element\n * - reference to the source array\n *\n * @param {Array} array\n * @param {Function} f\n */\nexport function any(array: any[], test: Function): boolean {\n for (var i = 0; i < array.length; i++) {\n if (test(array[i], i, array)) {\n return true;\n }\n }\n return false;\n}\n\n/** Checks whether all elements of the array pass the test.\n *\n * Function test gets 3 arguments passed:\n * - element from the array\n * - index of the element\n * - reference to the source array\n *\n * @param {Array} array\n * @param {Function} f\n */\nexport function all(array: any[], test: Function): boolean {\n for (var i = 0; i < array.length; i++) {\n if (!test(array[i], i, array)) {\n return false;\n }\n }\n return true;\n}\n\nexport function encodeParamsObject(data): string {\n return mapObject(data, function(value) {\n if (typeof value === 'object') {\n value = safeJSONStringify(value);\n }\n return encodeURIComponent(base64encode(value.toString()));\n });\n}\n\nexport function buildQueryString(data: any): string {\n var params = filterObject(data, function(value) {\n return value !== undefined;\n });\n\n var query = map(\n flatten(encodeParamsObject(params)),\n Util.method('join', '=')\n ).join('&');\n\n return query;\n}\n\n/**\n * See https://github.com/douglascrockford/JSON-js/blob/master/cycle.js\n *\n * Remove circular references from an object. Required for JSON.stringify in\n * React Native, which tends to blow up a lot.\n *\n * @param {any} object\n * @return {any} Decycled object\n */\nexport function decycleObject(object: any): any {\n var objects = [],\n paths = [];\n\n return (function derez(value, path) {\n var i, name, nu;\n\n switch (typeof value) {\n case 'object':\n if (!value) {\n return null;\n }\n for (i = 0; i < objects.length; i += 1) {\n if (objects[i] === value) {\n return { $ref: paths[i] };\n }\n }\n\n objects.push(value);\n paths.push(path);\n\n if (Object.prototype.toString.apply(value) === '[object Array]') {\n nu = [];\n for (i = 0; i < value.length; i += 1) {\n nu[i] = derez(value[i], path + '[' + i + ']');\n }\n } else {\n nu = {};\n for (name in value) {\n if (Object.prototype.hasOwnProperty.call(value, name)) {\n nu[name] = derez(\n value[name],\n path + '[' + JSON.stringify(name) + ']'\n );\n }\n }\n }\n return nu;\n case 'number':\n case 'string':\n case 'boolean':\n return value;\n }\n })(object, '$');\n}\n\n/**\n * Provides a cross-browser and cross-platform way to safely stringify objects\n * into JSON. This is particularly necessary for ReactNative, where circular JSON\n * structures throw an exception.\n *\n * @param {any} source The object to stringify\n * @return {string} The serialized output.\n */\nexport function safeJSONStringify(source: any): string {\n try {\n return JSON.stringify(source);\n } catch (e) {\n return JSON.stringify(decycleObject(source));\n }\n}\n","import { stringify } from './utils/collections';\nimport Pusher from './pusher';\n\nclass Logger {\n debug(...args: any[]) {\n this.log(this.globalLog, args);\n }\n\n warn(...args: any[]) {\n this.log(this.globalLogWarn, args);\n }\n\n error(...args: any[]) {\n this.log(this.globalLogError, args);\n }\n\n private globalLog = (message: string) => {\n if (global.console && global.console.log) {\n global.console.log(message);\n }\n };\n\n private globalLogWarn(message: string) {\n if (global.console && global.console.warn) {\n global.console.warn(message);\n } else {\n this.globalLog(message);\n }\n }\n\n private globalLogError(message: string) {\n if (global.console && global.console.error) {\n global.console.error(message);\n } else {\n this.globalLogWarn(message);\n }\n }\n\n private log(\n defaultLoggingFunction: (message: string) => void,\n ...args: any[]\n ) {\n var message = stringify.apply(this, arguments);\n if (Pusher.log) {\n Pusher.log(message);\n } else if (Pusher.logToConsole) {\n const log = defaultLoggingFunction.bind(this);\n log(message);\n }\n }\n}\n\nexport default new Logger();\n","import Browser from '../browser';\nimport Logger from 'core/logger';\nimport JSONPRequest from '../dom/jsonp_request';\nimport { ScriptReceivers } from '../dom/script_receiver_factory';\nimport { AuthTransport } from 'core/auth/auth_transports';\nimport {\n AuthRequestType,\n AuthTransportCallback,\n InternalAuthOptions\n} from 'core/auth/options';\n\nvar jsonp: AuthTransport = function(\n context: Browser,\n query: string,\n authOptions: InternalAuthOptions,\n authRequestType: AuthRequestType,\n callback: AuthTransportCallback\n) {\n if (\n authOptions.headers !== undefined ||\n authOptions.headersProvider != null\n ) {\n Logger.warn(\n `To send headers with the ${authRequestType.toString()} request, you must use AJAX, rather than JSONP.`\n );\n }\n\n var callbackName = context.nextAuthCallbackID.toString();\n context.nextAuthCallbackID++;\n\n var document = context.getDocument();\n var script = document.createElement('script');\n // Hacked wrapper.\n context.auth_callbacks[callbackName] = function(data) {\n callback(null, data);\n };\n\n var callback_name = \"Pusher.auth_callbacks['\" + callbackName + \"']\";\n script.src =\n authOptions.endpoint +\n '?callback=' +\n encodeURIComponent(callback_name) +\n '&' +\n query;\n\n var head =\n document.getElementsByTagName('head')[0] || document.documentElement;\n head.insertBefore(script, head.firstChild);\n};\n\nexport default jsonp;\n","import ScriptReceiver from './script_receiver';\n\n/** Sends a generic HTTP GET request using a script tag.\n *\n * By constructing URL in a specific way, it can be used for loading\n * JavaScript resources or JSONP requests. It can notify about errors, but\n * only in certain environments. Please take care of monitoring the state of\n * the request yourself.\n *\n * @param {String} src\n */\nexport default class ScriptRequest {\n src: string;\n script: any;\n errorScript: any;\n\n constructor(src: string) {\n this.src = src;\n }\n\n send(receiver: ScriptReceiver) {\n var self = this;\n var errorString = 'Error loading ' + self.src;\n\n self.script = document.createElement('script');\n self.script.id = receiver.id;\n self.script.src = self.src;\n self.script.type = 'text/javascript';\n self.script.charset = 'UTF-8';\n\n if (self.script.addEventListener) {\n self.script.onerror = function() {\n receiver.callback(errorString);\n };\n self.script.onload = function() {\n receiver.callback(null);\n };\n } else {\n self.script.onreadystatechange = function() {\n if (\n self.script.readyState === 'loaded' ||\n self.script.readyState === 'complete'\n ) {\n receiver.callback(null);\n }\n };\n }\n\n // Opera<11.6 hack for missing onerror callback\n if (\n self.script.async === undefined &&\n (document).attachEvent &&\n /opera/i.test(navigator.userAgent)\n ) {\n self.errorScript = document.createElement('script');\n self.errorScript.id = receiver.id + '_error';\n self.errorScript.text = receiver.name + \"('\" + errorString + \"');\";\n self.script.async = self.errorScript.async = false;\n } else {\n self.script.async = true;\n }\n\n var head = document.getElementsByTagName('head')[0];\n head.insertBefore(self.script, head.firstChild);\n if (self.errorScript) {\n head.insertBefore(self.errorScript, self.script.nextSibling);\n }\n }\n\n /** Cleans up the DOM remains of the script request. */\n cleanup() {\n if (this.script) {\n this.script.onload = this.script.onerror = null;\n this.script.onreadystatechange = null;\n }\n if (this.script && this.script.parentNode) {\n this.script.parentNode.removeChild(this.script);\n }\n if (this.errorScript && this.errorScript.parentNode) {\n this.errorScript.parentNode.removeChild(this.errorScript);\n }\n this.script = null;\n this.errorScript = null;\n }\n}\n","import ScriptReceiver from './script_receiver';\nimport ScriptRequest from './script_request';\nimport * as Collections from 'core/utils/collections';\nimport Util from 'core/util';\nimport Runtime from '../runtime';\n\n/** Sends data via JSONP.\n *\n * Data is a key-value map. Its values are JSON-encoded and then passed\n * through base64. Finally, keys and encoded values are appended to the query\n * string.\n *\n * The class itself does not guarantee raising errors on failures, as it's not\n * possible to support such feature on all browsers. Instead, JSONP endpoint\n * should call back in a way that's easy to distinguish from browser calls,\n * for example by passing a second argument to the receiver.\n *\n * @param {String} url\n * @param {Object} data key-value map of data to be submitted\n */\nexport default class JSONPRequest {\n url: string;\n data: any;\n request: ScriptRequest;\n\n constructor(url: string, data: any) {\n this.url = url;\n this.data = data;\n }\n\n /** Sends the actual JSONP request.\n *\n * @param {ScriptReceiver} receiver\n */\n send(receiver: ScriptReceiver) {\n if (this.request) {\n return;\n }\n\n var query = Collections.buildQueryString(this.data);\n var url = this.url + '/' + receiver.number + '?' + query;\n this.request = Runtime.createScriptRequest(url);\n this.request.send(receiver);\n }\n\n /** Cleans up the DOM remains of the JSONP request. */\n cleanup() {\n if (this.request) {\n this.request.cleanup();\n }\n }\n}\n","import TimelineSender from 'core/timeline/timeline_sender';\nimport TimelineTransport from 'core/timeline/timeline_transport';\nimport Browser from 'runtime';\nimport { AuthTransport } from 'core/auth/auth_transports';\nimport { ScriptReceivers } from '../dom/script_receiver_factory';\n\nvar getAgent = function(sender: TimelineSender, useTLS: boolean) {\n return function(data: any, callback: Function) {\n var scheme = 'http' + (useTLS ? 's' : '') + '://';\n var url =\n scheme + (sender.host || sender.options.host) + sender.options.path;\n var request = Browser.createJSONPRequest(url, data);\n\n var receiver = Browser.ScriptReceivers.create(function(error, result) {\n ScriptReceivers.remove(receiver);\n request.cleanup();\n\n if (result && result.host) {\n sender.host = result.host;\n }\n if (callback) {\n callback(error, result);\n }\n });\n request.send(receiver);\n };\n};\n\nvar jsonp = {\n name: 'jsonp',\n getAgent\n};\n\nexport default jsonp;\n","import Defaults from '../defaults';\nimport { default as URLScheme, URLSchemeParams } from './url_scheme';\n\nfunction getGenericURL(\n baseScheme: string,\n params: URLSchemeParams,\n path: string\n): string {\n var scheme = baseScheme + (params.useTLS ? 's' : '');\n var host = params.useTLS ? params.hostTLS : params.hostNonTLS;\n return scheme + '://' + host + path;\n}\n\nfunction getGenericPath(key: string, queryString?: string): string {\n var path = '/app/' + key;\n var query =\n '?protocol=' +\n Defaults.PROTOCOL +\n '&client=js' +\n '&version=' +\n Defaults.VERSION +\n (queryString ? '&' + queryString : '');\n return path + query;\n}\n\nexport var ws: URLScheme = {\n getInitial: function(key: string, params: URLSchemeParams): string {\n var path = (params.httpPath || '') + getGenericPath(key, 'flash=false');\n return getGenericURL('ws', params, path);\n }\n};\n\nexport var http: URLScheme = {\n getInitial: function(key: string, params: URLSchemeParams): string {\n var path = (params.httpPath || '/pusher') + getGenericPath(key);\n return getGenericURL('http', params, path);\n }\n};\n\nexport var sockjs: URLScheme = {\n getInitial: function(key: string, params: URLSchemeParams): string {\n return getGenericURL('http', params, params.httpPath || '/pusher');\n },\n getPath: function(key: string, params: URLSchemeParams): string {\n return getGenericPath(key);\n }\n};\n","import Callback from './callback';\nimport * as Collections from '../utils/collections';\nimport CallbackTable from './callback_table';\n\nexport default class CallbackRegistry {\n _callbacks: CallbackTable;\n\n constructor() {\n this._callbacks = {};\n }\n\n get(name: string): Callback[] {\n return this._callbacks[prefix(name)];\n }\n\n add(name: string, callback: Function, context: any) {\n var prefixedEventName = prefix(name);\n this._callbacks[prefixedEventName] =\n this._callbacks[prefixedEventName] || [];\n this._callbacks[prefixedEventName].push({\n fn: callback,\n context: context\n });\n }\n\n remove(name?: string, callback?: Function, context?: any) {\n if (!name && !callback && !context) {\n this._callbacks = {};\n return;\n }\n\n var names = name ? [prefix(name)] : Collections.keys(this._callbacks);\n\n if (callback || context) {\n this.removeCallback(names, callback, context);\n } else {\n this.removeAllCallbacks(names);\n }\n }\n\n private removeCallback(names: string[], callback: Function, context: any) {\n Collections.apply(\n names,\n function(name) {\n this._callbacks[name] = Collections.filter(\n this._callbacks[name] || [],\n function(binding) {\n return (\n (callback && callback !== binding.fn) ||\n (context && context !== binding.context)\n );\n }\n );\n if (this._callbacks[name].length === 0) {\n delete this._callbacks[name];\n }\n },\n this\n );\n }\n\n private removeAllCallbacks(names: string[]) {\n Collections.apply(\n names,\n function(name) {\n delete this._callbacks[name];\n },\n this\n );\n }\n}\n\nfunction prefix(name: string): string {\n return '_' + name;\n}\n","import * as Collections from '../utils/collections';\nimport Callback from './callback';\nimport Metadata from '../channels/metadata';\nimport CallbackRegistry from './callback_registry';\n\n/** Manages callback bindings and event emitting.\n *\n * @param Function failThrough called when no listeners are bound to an event\n */\nexport default class Dispatcher {\n callbacks: CallbackRegistry;\n global_callbacks: Function[];\n failThrough: Function;\n\n constructor(failThrough?: Function) {\n this.callbacks = new CallbackRegistry();\n this.global_callbacks = [];\n this.failThrough = failThrough;\n }\n\n bind(eventName: string, callback: Function, context?: any) {\n this.callbacks.add(eventName, callback, context);\n return this;\n }\n\n bind_global(callback: Function) {\n this.global_callbacks.push(callback);\n return this;\n }\n\n unbind(eventName?: string, callback?: Function, context?: any) {\n this.callbacks.remove(eventName, callback, context);\n return this;\n }\n\n unbind_global(callback?: Function) {\n if (!callback) {\n this.global_callbacks = [];\n return this;\n }\n\n this.global_callbacks = Collections.filter(\n this.global_callbacks || [],\n c => c !== callback\n );\n\n return this;\n }\n\n unbind_all() {\n this.unbind();\n this.unbind_global();\n return this;\n }\n\n emit(eventName: string, data?: any, metadata?: Metadata): Dispatcher {\n for (var i = 0; i < this.global_callbacks.length; i++) {\n this.global_callbacks[i](eventName, data);\n }\n\n var callbacks = this.callbacks.get(eventName);\n var args = [];\n\n if (metadata) {\n // if there's a metadata argument, we need to call the callback with both\n // data and metadata regardless of whether data is undefined\n args.push(data, metadata);\n } else if (data) {\n // metadata is undefined, so we only need to call the callback with data\n // if data exists\n args.push(data);\n }\n\n if (callbacks && callbacks.length > 0) {\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i].fn.apply(callbacks[i].context || global, args);\n }\n } else if (this.failThrough) {\n this.failThrough(eventName, data);\n }\n\n return this;\n }\n}\n","import Util from '../util';\nimport * as Collections from '../utils/collections';\nimport { default as EventsDispatcher } from '../events/dispatcher';\nimport Logger from '../logger';\nimport TransportHooks from './transport_hooks';\nimport Socket from '../socket';\nimport Runtime from 'runtime';\nimport Timeline from '../timeline/timeline';\nimport TransportConnectionOptions from './transport_connection_options';\n\n/** Provides universal API for transport connections.\n *\n * Transport connection is a low-level object that wraps a connection method\n * and exposes a simple evented interface for the connection state and\n * messaging. It does not implement Pusher-specific WebSocket protocol.\n *\n * Additionally, it fetches resources needed for transport to work and exposes\n * an interface for querying transport features.\n *\n * States:\n * - new - initial state after constructing the object\n * - initializing - during initialization phase, usually fetching resources\n * - intialized - ready to establish a connection\n * - connection - when connection is being established\n * - open - when connection ready to be used\n * - closed - after connection was closed be either side\n *\n * Emits:\n * - error - after the connection raised an error\n *\n * Options:\n * - useTLS - whether connection should be over TLS\n * - hostTLS - host to connect to when connection is over TLS\n * - hostNonTLS - host to connect to when connection is over TLS\n *\n * @param {String} key application key\n * @param {Object} options\n */\nexport default class TransportConnection extends EventsDispatcher {\n hooks: TransportHooks;\n name: string;\n priority: number;\n key: string;\n options: TransportConnectionOptions;\n state: string;\n timeline: Timeline;\n activityTimeout: number;\n id: number;\n socket: Socket;\n beforeOpen: Function;\n initialize: Function;\n\n constructor(\n hooks: TransportHooks,\n name: string,\n priority: number,\n key: string,\n options: TransportConnectionOptions\n ) {\n super();\n this.initialize = Runtime.transportConnectionInitializer;\n this.hooks = hooks;\n this.name = name;\n this.priority = priority;\n this.key = key;\n this.options = options;\n\n this.state = 'new';\n this.timeline = options.timeline;\n this.activityTimeout = options.activityTimeout;\n this.id = this.timeline.generateUniqueID();\n }\n\n /** Checks whether the transport handles activity checks by itself.\n *\n * @return {Boolean}\n */\n handlesActivityChecks(): boolean {\n return Boolean(this.hooks.handlesActivityChecks);\n }\n\n /** Checks whether the transport supports the ping/pong API.\n *\n * @return {Boolean}\n */\n supportsPing(): boolean {\n return Boolean(this.hooks.supportsPing);\n }\n\n /** Tries to establish a connection.\n *\n * @returns {Boolean} false if transport is in invalid state\n */\n connect(): boolean {\n if (this.socket || this.state !== 'initialized') {\n return false;\n }\n\n var url = this.hooks.urls.getInitial(this.key, this.options);\n try {\n this.socket = this.hooks.getSocket(url, this.options);\n } catch (e) {\n Util.defer(() => {\n this.onError(e);\n this.changeState('closed');\n });\n return false;\n }\n\n this.bindListeners();\n\n Logger.debug('Connecting', { transport: this.name, url });\n this.changeState('connecting');\n return true;\n }\n\n /** Closes the connection.\n *\n * @return {Boolean} true if there was a connection to close\n */\n close(): boolean {\n if (this.socket) {\n this.socket.close();\n return true;\n } else {\n return false;\n }\n }\n\n /** Sends data over the open connection.\n *\n * @param {String} data\n * @return {Boolean} true only when in the \"open\" state\n */\n send(data: any): boolean {\n if (this.state === 'open') {\n // Workaround for MobileSafari bug (see https://gist.github.com/2052006)\n Util.defer(() => {\n if (this.socket) {\n this.socket.send(data);\n }\n });\n return true;\n } else {\n return false;\n }\n }\n\n /** Sends a ping if the connection is open and transport supports it. */\n ping() {\n if (this.state === 'open' && this.supportsPing()) {\n this.socket.ping();\n }\n }\n\n private onOpen() {\n if (this.hooks.beforeOpen) {\n this.hooks.beforeOpen(\n this.socket,\n this.hooks.urls.getPath(this.key, this.options)\n );\n }\n this.changeState('open');\n this.socket.onopen = undefined;\n }\n\n private onError(error) {\n this.emit('error', { type: 'WebSocketError', error: error });\n this.timeline.error(this.buildTimelineMessage({ error: error.toString() }));\n }\n\n private onClose(closeEvent?: any) {\n if (closeEvent) {\n this.changeState('closed', {\n code: closeEvent.code,\n reason: closeEvent.reason,\n wasClean: closeEvent.wasClean\n });\n } else {\n this.changeState('closed');\n }\n this.unbindListeners();\n this.socket = undefined;\n }\n\n private onMessage(message) {\n this.emit('message', message);\n }\n\n private onActivity() {\n this.emit('activity');\n }\n\n private bindListeners() {\n this.socket.onopen = () => {\n this.onOpen();\n };\n this.socket.onerror = error => {\n this.onError(error);\n };\n this.socket.onclose = closeEvent => {\n this.onClose(closeEvent);\n };\n this.socket.onmessage = message => {\n this.onMessage(message);\n };\n\n if (this.supportsPing()) {\n this.socket.onactivity = () => {\n this.onActivity();\n };\n }\n }\n\n private unbindListeners() {\n if (this.socket) {\n this.socket.onopen = undefined;\n this.socket.onerror = undefined;\n this.socket.onclose = undefined;\n this.socket.onmessage = undefined;\n if (this.supportsPing()) {\n this.socket.onactivity = undefined;\n }\n }\n }\n\n private changeState(state: string, params?: any) {\n this.state = state;\n this.timeline.info(\n this.buildTimelineMessage({\n state: state,\n params: params\n })\n );\n this.emit(state, params);\n }\n\n buildTimelineMessage(message): any {\n return Collections.extend({ cid: this.id }, message);\n }\n}\n","import Factory from '../utils/factory';\nimport TransportHooks from './transport_hooks';\nimport TransportConnection from './transport_connection';\nimport TransportConnectionOptions from './transport_connection_options';\n\n/** Provides interface for transport connection instantiation.\n *\n * Takes transport-specific hooks as the only argument, which allow checking\n * for transport support and creating its connections.\n *\n * Supported hooks: * - file - the name of the file to be fetched during initialization\n * - urls - URL scheme to be used by transport\n * - handlesActivityCheck - true when the transport handles activity checks\n * - supportsPing - true when the transport has a ping/activity API\n * - isSupported - tells whether the transport is supported in the environment\n * - getSocket - creates a WebSocket-compatible transport socket\n *\n * See transports.js for specific implementations.\n *\n * @param {Object} hooks object containing all needed transport hooks\n */\nexport default class Transport {\n hooks: TransportHooks;\n\n constructor(hooks: TransportHooks) {\n this.hooks = hooks;\n }\n\n /** Returns whether the transport is supported in the environment.\n *\n * @param {Object} envronment te environment details (encryption, settings)\n * @returns {Boolean} true when the transport is supported\n */\n isSupported(environment: any): boolean {\n return this.hooks.isSupported(environment);\n }\n\n /** Creates a transport connection.\n *\n * @param {String} name\n * @param {Number} priority\n * @param {String} key the application key\n * @param {Object} options\n * @returns {TransportConnection}\n */\n createConnection(\n name: string,\n priority: number,\n key: string,\n options: any\n ): TransportConnection {\n return new TransportConnection(this.hooks, name, priority, key, options);\n }\n}\n","import * as URLSchemes from 'core/transports/url_schemes';\nimport URLScheme from 'core/transports/url_scheme';\nimport Transport from 'core/transports/transport';\nimport Util from 'core/util';\nimport * as Collections from 'core/utils/collections';\nimport TransportHooks from 'core/transports/transport_hooks';\nimport TransportsTable from 'core/transports/transports_table';\nimport Runtime from 'runtime';\n\n/** WebSocket transport.\n *\n * Uses native WebSocket implementation, including MozWebSocket supported by\n * earlier Firefox versions.\n */\nvar WSTransport = new Transport({\n urls: URLSchemes.ws,\n handlesActivityChecks: false,\n supportsPing: false,\n\n isInitialized: function() {\n return Boolean(Runtime.getWebSocketAPI());\n },\n isSupported: function(): boolean {\n return Boolean(Runtime.getWebSocketAPI());\n },\n getSocket: function(url) {\n return Runtime.createWebSocket(url);\n }\n});\n\nvar httpConfiguration = {\n urls: URLSchemes.http,\n handlesActivityChecks: false,\n supportsPing: true,\n isInitialized: function() {\n return true;\n }\n};\n\nexport var streamingConfiguration = Collections.extend(\n {\n getSocket: function(url) {\n return Runtime.HTTPFactory.createStreamingSocket(url);\n }\n },\n httpConfiguration\n);\nexport var pollingConfiguration = Collections.extend(\n {\n getSocket: function(url) {\n return Runtime.HTTPFactory.createPollingSocket(url);\n }\n },\n httpConfiguration\n);\n\nvar xhrConfiguration = {\n isSupported: function(): boolean {\n return Runtime.isXHRSupported();\n }\n};\n\n/** HTTP streaming transport using CORS-enabled XMLHttpRequest. */\nvar XHRStreamingTransport = new Transport(\n (\n Collections.extend({}, streamingConfiguration, xhrConfiguration)\n )\n);\n\n/** HTTP long-polling transport using CORS-enabled XMLHttpRequest. */\nvar XHRPollingTransport = new Transport(\n Collections.extend({}, pollingConfiguration, xhrConfiguration)\n);\n\nvar Transports: TransportsTable = {\n ws: WSTransport,\n xhr_streaming: XHRStreamingTransport,\n xhr_polling: XHRPollingTransport\n};\n\nexport default Transports;\n","import {\n default as Transports,\n streamingConfiguration,\n pollingConfiguration\n} from 'isomorphic/transports/transports';\nimport Transport from 'core/transports/transport';\nimport TransportHooks from 'core/transports/transport_hooks';\nimport * as URLSchemes from 'core/transports/url_schemes';\nimport Runtime from 'runtime';\nimport { Dependencies } from '../dom/dependencies';\nimport * as Collections from 'core/utils/collections';\n\nvar SockJSTransport = new Transport({\n file: 'sockjs',\n urls: URLSchemes.sockjs,\n handlesActivityChecks: true,\n supportsPing: false,\n\n isSupported: function() {\n return true;\n },\n isInitialized: function() {\n return window.SockJS !== undefined;\n },\n getSocket: function(url, options) {\n return new window.SockJS(url, null, {\n js_path: Dependencies.getPath('sockjs', {\n useTLS: options.useTLS\n }),\n ignore_null_origin: options.ignoreNullOrigin\n });\n },\n beforeOpen: function(socket, path) {\n socket.send(\n JSON.stringify({\n path: path\n })\n );\n }\n});\n\nvar xdrConfiguration = {\n isSupported: function(environment): boolean {\n var yes = Runtime.isXDRSupported(environment.useTLS);\n return yes;\n }\n};\n\n/** HTTP streaming transport using XDomainRequest (IE 8,9). */\nvar XDRStreamingTransport = new Transport(\n (\n Collections.extend({}, streamingConfiguration, xdrConfiguration)\n )\n);\n\n/** HTTP long-polling transport using XDomainRequest (IE 8,9). */\nvar XDRPollingTransport = new Transport(\n Collections.extend({}, pollingConfiguration, xdrConfiguration)\n);\n\nTransports.xdr_streaming = XDRStreamingTransport;\nTransports.xdr_polling = XDRPollingTransport;\nTransports.sockjs = SockJSTransport;\n\nexport default Transports;\n","import Reachability from 'core/reachability';\nimport { default as EventsDispatcher } from 'core/events/dispatcher';\n\n/** Really basic interface providing network availability info.\n *\n * Emits:\n * - online - when browser goes online\n * - offline - when browser goes offline\n */\nexport class NetInfo extends EventsDispatcher implements Reachability {\n constructor() {\n super();\n var self = this;\n // This is okay, as IE doesn't support this stuff anyway.\n if (window.addEventListener !== undefined) {\n window.addEventListener(\n 'online',\n function() {\n self.emit('online');\n },\n false\n );\n window.addEventListener(\n 'offline',\n function() {\n self.emit('offline');\n },\n false\n );\n }\n }\n\n /** Returns whether browser is online or not\n *\n * Offline means definitely offline (no connection to router).\n * Inverse does NOT mean definitely online (only currently supported in Safari\n * and even there only means the device has a connection to the router).\n *\n * @return {Boolean}\n */\n isOnline(): boolean {\n if (window.navigator.onLine === undefined) {\n return true;\n } else {\n return window.navigator.onLine;\n }\n }\n}\n\nexport var Network = new NetInfo();\n","import Util from '../util';\nimport * as Collections from '../utils/collections';\nimport TransportManager from './transport_manager';\nimport TransportConnection from './transport_connection';\nimport Transport from './transport';\nimport PingDelayOptions from './ping_delay_options';\n\n/** Creates transport connections monitored by a transport manager.\n *\n * When a transport is closed, it might mean the environment does not support\n * it. It's possible that messages get stuck in an intermediate buffer or\n * proxies terminate inactive connections. To combat these problems,\n * assistants monitor the connection lifetime, report unclean exits and\n * adjust ping timeouts to keep the connection active. The decision to disable\n * a transport is the manager's responsibility.\n *\n * @param {TransportManager} manager\n * @param {TransportConnection} transport\n * @param {Object} options\n */\nexport default class AssistantToTheTransportManager {\n manager: TransportManager;\n transport: Transport;\n minPingDelay: number;\n maxPingDelay: number;\n pingDelay: number;\n\n constructor(\n manager: TransportManager,\n transport: Transport,\n options: PingDelayOptions\n ) {\n this.manager = manager;\n this.transport = transport;\n this.minPingDelay = options.minPingDelay;\n this.maxPingDelay = options.maxPingDelay;\n this.pingDelay = undefined;\n }\n\n /** Creates a transport connection.\n *\n * This function has the same API as Transport#createConnection.\n *\n * @param {String} name\n * @param {Number} priority\n * @param {String} key the application key\n * @param {Object} options\n * @returns {TransportConnection}\n */\n createConnection(\n name: string,\n priority: number,\n key: string,\n options: Object\n ): TransportConnection {\n options = Collections.extend({}, options, {\n activityTimeout: this.pingDelay\n });\n var connection = this.transport.createConnection(\n name,\n priority,\n key,\n options\n );\n\n var openTimestamp = null;\n\n var onOpen = function() {\n connection.unbind('open', onOpen);\n connection.bind('closed', onClosed);\n openTimestamp = Util.now();\n };\n var onClosed = closeEvent => {\n connection.unbind('closed', onClosed);\n\n if (closeEvent.code === 1002 || closeEvent.code === 1003) {\n // we don't want to use transports not obeying the protocol\n this.manager.reportDeath();\n } else if (!closeEvent.wasClean && openTimestamp) {\n // report deaths only for short-living transport\n var lifespan = Util.now() - openTimestamp;\n if (lifespan < 2 * this.maxPingDelay) {\n this.manager.reportDeath();\n this.pingDelay = Math.max(lifespan / 2, this.minPingDelay);\n }\n }\n };\n\n connection.bind('open', onOpen);\n return connection;\n }\n\n /** Returns whether the transport is supported in the environment.\n *\n * This function has the same API as Transport#isSupported. Might return false\n * when the manager decides to kill the transport.\n *\n * @param {Object} environment the environment details (encryption, settings)\n * @returns {Boolean} true when the transport is supported\n */\n isSupported(environment: string): boolean {\n return this.manager.isAlive() && this.transport.isSupported(environment);\n }\n}\n","import Action from './action';\nimport { PusherEvent } from './message-types';\n/**\n * Provides functions for handling Pusher protocol-specific messages.\n */\n\nconst Protocol = {\n /**\n * Decodes a message in a Pusher format.\n *\n * The MessageEvent we receive from the transport should contain a pusher event\n * (https://pusher.com/docs/pusher_protocol#events) serialized as JSON in the\n * data field\n *\n * The pusher event may contain a data field too, and it may also be\n * serialised as JSON\n *\n * Throws errors when messages are not parse'able.\n *\n * @param {MessageEvent} messageEvent\n * @return {PusherEvent}\n */\n decodeMessage: function(messageEvent: MessageEvent): PusherEvent {\n try {\n var messageData = JSON.parse(messageEvent.data);\n var pusherEventData = messageData.data;\n if (typeof pusherEventData === 'string') {\n try {\n pusherEventData = JSON.parse(messageData.data);\n } catch (e) {}\n }\n var pusherEvent: PusherEvent = {\n event: messageData.event,\n channel: messageData.channel,\n data: pusherEventData\n };\n if (messageData.user_id) {\n pusherEvent.user_id = messageData.user_id;\n }\n return pusherEvent;\n } catch (e) {\n throw { type: 'MessageParseError', error: e, data: messageEvent.data };\n }\n },\n\n /**\n * Encodes a message to be sent.\n *\n * @param {PusherEvent} event\n * @return {String}\n */\n encodeMessage: function(event: PusherEvent): string {\n return JSON.stringify(event);\n },\n\n /**\n * Processes a handshake message and returns appropriate actions.\n *\n * Returns an object with an 'action' and other action-specific properties.\n *\n * There are three outcomes when calling this function. First is a successful\n * connection attempt, when pusher:connection_established is received, which\n * results in a 'connected' action with an 'id' property. When passed a\n * pusher:error event, it returns a result with action appropriate to the\n * close code and an error. Otherwise, it raises an exception.\n *\n * @param {String} message\n * @result Object\n */\n processHandshake: function(messageEvent: MessageEvent): Action {\n var message = Protocol.decodeMessage(messageEvent);\n\n if (message.event === 'pusher:connection_established') {\n if (!message.data.activity_timeout) {\n throw 'No activity timeout specified in handshake';\n }\n return {\n action: 'connected',\n id: message.data.socket_id,\n activityTimeout: message.data.activity_timeout * 1000\n };\n } else if (message.event === 'pusher:error') {\n // From protocol 6 close codes are sent only once, so this only\n // happens when connection does not support close codes\n return {\n action: this.getCloseAction(message.data),\n error: this.getCloseError(message.data)\n };\n } else {\n throw 'Invalid handshake';\n }\n },\n\n /**\n * Dispatches the close event and returns an appropriate action name.\n *\n * See:\n * 1. https://developer.mozilla.org/en-US/docs/WebSockets/WebSockets_reference/CloseEvent\n * 2. http://pusher.com/docs/pusher_protocol\n *\n * @param {CloseEvent} closeEvent\n * @return {String} close action name\n */\n getCloseAction: function(closeEvent): string {\n if (closeEvent.code < 4000) {\n // ignore 1000 CLOSE_NORMAL, 1001 CLOSE_GOING_AWAY,\n // 1005 CLOSE_NO_STATUS, 1006 CLOSE_ABNORMAL\n // ignore 1007...3999\n // handle 1002 CLOSE_PROTOCOL_ERROR, 1003 CLOSE_UNSUPPORTED,\n // 1004 CLOSE_TOO_LARGE\n if (closeEvent.code >= 1002 && closeEvent.code <= 1004) {\n return 'backoff';\n } else {\n return null;\n }\n } else if (closeEvent.code === 4000) {\n return 'tls_only';\n } else if (closeEvent.code < 4100) {\n return 'refused';\n } else if (closeEvent.code < 4200) {\n return 'backoff';\n } else if (closeEvent.code < 4300) {\n return 'retry';\n } else {\n // unknown error\n return 'refused';\n }\n },\n\n /**\n * Returns an error or null basing on the close event.\n *\n * Null is returned when connection was closed cleanly. Otherwise, an object\n * with error details is returned.\n *\n * @param {CloseEvent} closeEvent\n * @return {Object} error object\n */\n getCloseError: function(closeEvent): any {\n if (closeEvent.code !== 1000 && closeEvent.code !== 1001) {\n return {\n type: 'PusherError',\n data: {\n code: closeEvent.code,\n message: closeEvent.reason || closeEvent.message\n }\n };\n } else {\n return null;\n }\n }\n};\n\nexport default Protocol;\n","import * as Collections from '../utils/collections';\nimport { default as EventsDispatcher } from '../events/dispatcher';\nimport Protocol from './protocol/protocol';\nimport { PusherEvent } from './protocol/message-types';\nimport Logger from '../logger';\nimport TransportConnection from '../transports/transport_connection';\nimport Socket from '../socket';\n/**\n * Provides Pusher protocol interface for transports.\n *\n * Emits following events:\n * - message - on received messages\n * - ping - on ping requests\n * - pong - on pong responses\n * - error - when the transport emits an error\n * - closed - after closing the transport\n *\n * It also emits more events when connection closes with a code.\n * See Protocol.getCloseAction to get more details.\n *\n * @param {Number} id\n * @param {AbstractTransport} transport\n */\nexport default class Connection extends EventsDispatcher implements Socket {\n id: string;\n transport: TransportConnection;\n activityTimeout: number;\n\n constructor(id: string, transport: TransportConnection) {\n super();\n this.id = id;\n this.transport = transport;\n this.activityTimeout = transport.activityTimeout;\n this.bindListeners();\n }\n\n /** Returns whether used transport handles activity checks by itself\n *\n * @returns {Boolean} true if activity checks are handled by the transport\n */\n handlesActivityChecks() {\n return this.transport.handlesActivityChecks();\n }\n\n /** Sends raw data.\n *\n * @param {String} data\n */\n send(data: any): boolean {\n return this.transport.send(data);\n }\n\n /** Sends an event.\n *\n * @param {String} name\n * @param {String} data\n * @param {String} [channel]\n * @returns {Boolean} whether message was sent or not\n */\n send_event(name: string, data: any, channel?: string): boolean {\n var event: PusherEvent = { event: name, data: data };\n if (channel) {\n event.channel = channel;\n }\n Logger.debug('Event sent', event);\n return this.send(Protocol.encodeMessage(event));\n }\n\n /** Sends a ping message to the server.\n *\n * Basing on the underlying transport, it might send either transport's\n * protocol-specific ping or pusher:ping event.\n */\n ping() {\n if (this.transport.supportsPing()) {\n this.transport.ping();\n } else {\n this.send_event('pusher:ping', {});\n }\n }\n\n /** Closes the connection. */\n close() {\n this.transport.close();\n }\n\n private bindListeners() {\n var listeners = {\n message: (messageEvent: MessageEvent) => {\n var pusherEvent;\n try {\n pusherEvent = Protocol.decodeMessage(messageEvent);\n } catch (e) {\n this.emit('error', {\n type: 'MessageParseError',\n error: e,\n data: messageEvent.data\n });\n }\n\n if (pusherEvent !== undefined) {\n Logger.debug('Event recd', pusherEvent);\n\n switch (pusherEvent.event) {\n case 'pusher:error':\n this.emit('error', {\n type: 'PusherError',\n data: pusherEvent.data\n });\n break;\n case 'pusher:ping':\n this.emit('ping');\n break;\n case 'pusher:pong':\n this.emit('pong');\n break;\n }\n this.emit('message', pusherEvent);\n }\n },\n activity: () => {\n this.emit('activity');\n },\n error: error => {\n this.emit('error', error);\n },\n closed: closeEvent => {\n unbindListeners();\n\n if (closeEvent && closeEvent.code) {\n this.handleCloseEvent(closeEvent);\n }\n\n this.transport = null;\n this.emit('closed');\n }\n };\n\n var unbindListeners = () => {\n Collections.objectApply(listeners, (listener, event) => {\n this.transport.unbind(event, listener);\n });\n };\n\n Collections.objectApply(listeners, (listener, event) => {\n this.transport.bind(event, listener);\n });\n }\n\n private handleCloseEvent(closeEvent: any) {\n var action = Protocol.getCloseAction(closeEvent);\n var error = Protocol.getCloseError(closeEvent);\n if (error) {\n this.emit('error', error);\n }\n if (action) {\n this.emit(action, { action: action, error: error });\n }\n }\n}\n","import Util from '../../util';\nimport * as Collections from '../../utils/collections';\nimport Protocol from '../protocol/protocol';\nimport Connection from '../connection';\nimport TransportConnection from '../../transports/transport_connection';\nimport HandshakePayload from './handshake_payload';\n\n/**\n * Handles Pusher protocol handshakes for transports.\n *\n * Calls back with a result object after handshake is completed. Results\n * always have two fields:\n * - action - string describing action to be taken after the handshake\n * - transport - the transport object passed to the constructor\n *\n * Different actions can set different additional properties on the result.\n * In the case of 'connected' action, there will be a 'connection' property\n * containing a Connection object for the transport. Other actions should\n * carry an 'error' property.\n *\n * @param {AbstractTransport} transport\n * @param {Function} callback\n */\nexport default class Handshake {\n transport: TransportConnection;\n callback: (HandshakePayload) => void;\n onMessage: Function;\n onClosed: Function;\n\n constructor(\n transport: TransportConnection,\n callback: (HandshakePayload) => void\n ) {\n this.transport = transport;\n this.callback = callback;\n this.bindListeners();\n }\n\n close() {\n this.unbindListeners();\n this.transport.close();\n }\n\n private bindListeners() {\n this.onMessage = m => {\n this.unbindListeners();\n\n var result;\n try {\n result = Protocol.processHandshake(m);\n } catch (e) {\n this.finish('error', { error: e });\n this.transport.close();\n return;\n }\n\n if (result.action === 'connected') {\n this.finish('connected', {\n connection: new Connection(result.id, this.transport),\n activityTimeout: result.activityTimeout\n });\n } else {\n this.finish(result.action, { error: result.error });\n this.transport.close();\n }\n };\n\n this.onClosed = closeEvent => {\n this.unbindListeners();\n\n var action = Protocol.getCloseAction(closeEvent) || 'backoff';\n var error = Protocol.getCloseError(closeEvent);\n this.finish(action, { error: error });\n };\n\n this.transport.bind('message', this.onMessage);\n this.transport.bind('closed', this.onClosed);\n }\n\n private unbindListeners() {\n this.transport.unbind('message', this.onMessage);\n this.transport.unbind('closed', this.onClosed);\n }\n\n private finish(action: string, params: any) {\n this.callback(\n Collections.extend({ transport: this.transport, action: action }, params)\n );\n }\n}\n","import * as Collections from '../utils/collections';\nimport Util from '../util';\nimport base64encode from '../base64';\nimport Timeline from './timeline';\nimport Runtime from 'runtime';\n\nexport interface TimelineSenderOptions {\n host?: string;\n port?: number;\n path?: string;\n}\n\nexport default class TimelineSender {\n timeline: Timeline;\n options: TimelineSenderOptions;\n host: string;\n\n constructor(timeline: Timeline, options: TimelineSenderOptions) {\n this.timeline = timeline;\n this.options = options || {};\n }\n\n send(useTLS: boolean, callback?: Function) {\n if (this.timeline.isEmpty()) {\n return;\n }\n\n this.timeline.send(\n Runtime.TimelineTransport.getAgent(this, useTLS),\n callback\n );\n }\n}\n","import { default as EventsDispatcher } from '../events/dispatcher';\nimport * as Errors from '../errors';\nimport Logger from '../logger';\nimport Pusher from '../pusher';\nimport { PusherEvent } from '../connection/protocol/message-types';\nimport Metadata from './metadata';\nimport UrlStore from '../utils/url_store';\nimport {\n ChannelAuthorizationData,\n ChannelAuthorizationCallback\n} from '../auth/options';\nimport { HTTPAuthError } from '../errors';\n\n/** Provides base public channel interface with an event emitter.\n *\n * Emits:\n * - pusher:subscription_succeeded - after subscribing successfully\n * - other non-internal events\n *\n * @param {String} name\n * @param {Pusher} pusher\n */\nexport default class Channel extends EventsDispatcher {\n name: string;\n pusher: Pusher;\n subscribed: boolean;\n subscriptionPending: boolean;\n subscriptionCancelled: boolean;\n subscriptionCount: null;\n\n constructor(name: string, pusher: Pusher) {\n super(function(event, data) {\n Logger.debug('No callbacks on ' + name + ' for ' + event);\n });\n\n this.name = name;\n this.pusher = pusher;\n this.subscribed = false;\n this.subscriptionPending = false;\n this.subscriptionCancelled = false;\n }\n\n /** Skips authorization, since public channels don't require it.\n *\n * @param {Function} callback\n */\n authorize(socketId: string, callback: ChannelAuthorizationCallback) {\n return callback(null, { auth: '' });\n }\n\n /** Triggers an event */\n trigger(event: string, data: any) {\n if (event.indexOf('client-') !== 0) {\n throw new Errors.BadEventName(\n \"Event '\" + event + \"' does not start with 'client-'\"\n );\n }\n if (!this.subscribed) {\n var suffix = UrlStore.buildLogSuffix('triggeringClientEvents');\n Logger.warn(\n `Client event triggered before channel 'subscription_succeeded' event . ${suffix}`\n );\n }\n return this.pusher.send_event(event, data, this.name);\n }\n\n /** Signals disconnection to the channel. For internal use only. */\n disconnect() {\n this.subscribed = false;\n this.subscriptionPending = false;\n }\n\n /** Handles a PusherEvent. For internal use only.\n *\n * @param {PusherEvent} event\n */\n handleEvent(event: PusherEvent) {\n var eventName = event.event;\n var data = event.data;\n if (eventName === 'pusher_internal:subscription_succeeded') {\n this.handleSubscriptionSucceededEvent(event);\n } else if (eventName === 'pusher_internal:subscription_count') {\n this.handleSubscriptionCountEvent(event);\n } else if (eventName.indexOf('pusher_internal:') !== 0) {\n var metadata: Metadata = {};\n this.emit(eventName, data, metadata);\n }\n }\n\n handleSubscriptionSucceededEvent(event: PusherEvent) {\n this.subscriptionPending = false;\n this.subscribed = true;\n if (this.subscriptionCancelled) {\n this.pusher.unsubscribe(this.name);\n } else {\n this.emit('pusher:subscription_succeeded', event.data);\n }\n }\n\n handleSubscriptionCountEvent(event: PusherEvent) {\n if (event.data.subscription_count) {\n this.subscriptionCount = event.data.subscription_count;\n }\n\n this.emit('pusher:subscription_count', event.data);\n }\n\n /** Sends a subscription request. For internal use only. */\n subscribe() {\n if (this.subscribed) {\n return;\n }\n this.subscriptionPending = true;\n this.subscriptionCancelled = false;\n this.authorize(\n this.pusher.connection.socket_id,\n (error: Error | null, data: ChannelAuthorizationData) => {\n if (error) {\n this.subscriptionPending = false;\n // Why not bind to 'pusher:subscription_error' a level up, and log there?\n // Binding to this event would cause the warning about no callbacks being\n // bound (see constructor) to be suppressed, that's not what we want.\n Logger.error(error.toString());\n this.emit(\n 'pusher:subscription_error',\n Object.assign(\n {},\n {\n type: 'AuthError',\n error: error.message\n },\n error instanceof HTTPAuthError ? { status: error.status } : {}\n )\n );\n } else {\n this.pusher.send_event('pusher:subscribe', {\n auth: data.auth,\n channel_data: data.channel_data,\n channel: this.name\n });\n }\n }\n );\n }\n\n /** Sends an unsubscription request. For internal use only. */\n unsubscribe() {\n this.subscribed = false;\n this.pusher.send_event('pusher:unsubscribe', {\n channel: this.name\n });\n }\n\n /** Cancels an in progress subscription. For internal use only. */\n cancelSubscription() {\n this.subscriptionCancelled = true;\n }\n\n /** Reinstates an in progress subscripiton. For internal use only. */\n reinstateSubscription() {\n this.subscriptionCancelled = false;\n }\n}\n","import Factory from '../utils/factory';\nimport Channel from './channel';\nimport { ChannelAuthorizationCallback } from '../auth/options';\n\n/** Extends public channels to provide private channel interface.\n *\n * @param {String} name\n * @param {Pusher} pusher\n */\nexport default class PrivateChannel extends Channel {\n /** Authorizes the connection to use the channel.\n *\n * @param {String} socketId\n * @param {Function} callback\n */\n authorize(socketId: string, callback: ChannelAuthorizationCallback) {\n return this.pusher.config.channelAuthorizer(\n {\n channelName: this.name,\n socketId: socketId\n },\n callback\n );\n }\n}\n","import * as Collections from '../utils/collections';\n\n/** Represents a collection of members of a presence channel. */\nexport default class Members {\n members: any;\n count: number;\n myID: any;\n me: any;\n\n constructor() {\n this.reset();\n }\n\n /** Returns member's info for given id.\n *\n * Resulting object containts two fields - id and info.\n *\n * @param {Number} id\n * @return {Object} member's info or null\n */\n get(id: string): any {\n if (Object.prototype.hasOwnProperty.call(this.members, id)) {\n return {\n id: id,\n info: this.members[id]\n };\n } else {\n return null;\n }\n }\n\n /** Calls back for each member in unspecified order.\n *\n * @param {Function} callback\n */\n each(callback: Function) {\n Collections.objectApply(this.members, (member, id) => {\n callback(this.get(id));\n });\n }\n\n /** Updates the id for connected member. For internal use only. */\n setMyID(id: string) {\n this.myID = id;\n }\n\n /** Handles subscription data. For internal use only. */\n onSubscription(subscriptionData: any) {\n this.members = subscriptionData.presence.hash;\n this.count = subscriptionData.presence.count;\n this.me = this.get(this.myID);\n }\n\n /** Adds a new member to the collection. For internal use only. */\n addMember(memberData: any) {\n if (this.get(memberData.user_id) === null) {\n this.count++;\n }\n this.members[memberData.user_id] = memberData.user_info;\n return this.get(memberData.user_id);\n }\n\n /** Adds a member from the collection. For internal use only. */\n removeMember(memberData: any) {\n var member = this.get(memberData.user_id);\n if (member) {\n delete this.members[memberData.user_id];\n this.count--;\n }\n return member;\n }\n\n /** Resets the collection to the initial state. For internal use only. */\n reset() {\n this.members = {};\n this.count = 0;\n this.myID = null;\n this.me = null;\n }\n}\n","import PrivateChannel from './private_channel';\nimport Logger from '../logger';\nimport Members from './members';\nimport Pusher from '../pusher';\nimport UrlStore from 'core/utils/url_store';\nimport { PusherEvent } from '../connection/protocol/message-types';\nimport Metadata from './metadata';\nimport { ChannelAuthorizationData } from '../auth/options';\n\nexport default class PresenceChannel extends PrivateChannel {\n members: Members;\n\n /** Adds presence channel functionality to private channels.\n *\n * @param {String} name\n * @param {Pusher} pusher\n */\n constructor(name: string, pusher: Pusher) {\n super(name, pusher);\n this.members = new Members();\n }\n\n /** Authorizes the connection as a member of the channel.\n *\n * @param {String} socketId\n * @param {Function} callback\n */\n authorize(socketId: string, callback: Function) {\n super.authorize(socketId, async (error, authData) => {\n if (!error) {\n authData = authData as ChannelAuthorizationData;\n if (authData.channel_data != null) {\n var channelData = JSON.parse(authData.channel_data);\n this.members.setMyID(channelData.user_id);\n } else {\n await this.pusher.user.signinDonePromise;\n if (this.pusher.user.user_data != null) {\n // If the user is signed in, get the id of the authenticated user\n // and allow the presence authorization to continue.\n this.members.setMyID(this.pusher.user.user_data.id);\n } else {\n let suffix = UrlStore.buildLogSuffix('authorizationEndpoint');\n Logger.error(\n `Invalid auth response for channel '${this.name}', ` +\n `expected 'channel_data' field. ${suffix}, ` +\n `or the user should be signed in.`\n );\n callback('Invalid auth response');\n return;\n }\n }\n }\n callback(error, authData);\n });\n }\n\n /** Handles presence and subscription events. For internal use only.\n *\n * @param {PusherEvent} event\n */\n handleEvent(event: PusherEvent) {\n var eventName = event.event;\n if (eventName.indexOf('pusher_internal:') === 0) {\n this.handleInternalEvent(event);\n } else {\n var data = event.data;\n var metadata: Metadata = {};\n if (event.user_id) {\n metadata.user_id = event.user_id;\n }\n this.emit(eventName, data, metadata);\n }\n }\n handleInternalEvent(event: PusherEvent) {\n var eventName = event.event;\n var data = event.data;\n switch (eventName) {\n case 'pusher_internal:subscription_succeeded':\n this.handleSubscriptionSucceededEvent(event);\n break;\n case 'pusher_internal:subscription_count':\n this.handleSubscriptionCountEvent(event);\n break;\n case 'pusher_internal:member_added':\n var addedMember = this.members.addMember(data);\n this.emit('pusher:member_added', addedMember);\n break;\n case 'pusher_internal:member_removed':\n var removedMember = this.members.removeMember(data);\n if (removedMember) {\n this.emit('pusher:member_removed', removedMember);\n }\n break;\n }\n }\n\n handleSubscriptionSucceededEvent(event: PusherEvent) {\n this.subscriptionPending = false;\n this.subscribed = true;\n if (this.subscriptionCancelled) {\n this.pusher.unsubscribe(this.name);\n } else {\n this.members.onSubscription(event.data);\n this.emit('pusher:subscription_succeeded', this.members);\n }\n }\n\n /** Resets the channel state, including members map. For internal use only. */\n disconnect() {\n this.members.reset();\n super.disconnect();\n }\n}\n","import PrivateChannel from './private_channel';\nimport * as Errors from '../errors';\nimport Logger from '../logger';\nimport Pusher from '../pusher';\nimport { decode as encodeUTF8 } from '@stablelib/utf8';\nimport { decode as decodeBase64 } from '@stablelib/base64';\nimport Dispatcher from '../events/dispatcher';\nimport { PusherEvent } from '../connection/protocol/message-types';\nimport {\n ChannelAuthorizationData,\n ChannelAuthorizationCallback\n} from '../auth/options';\nimport * as nacl from 'tweetnacl';\n\n/** Extends private channels to provide encrypted channel interface.\n *\n * @param {String} name\n * @param {Pusher} pusher\n */\nexport default class EncryptedChannel extends PrivateChannel {\n key: Uint8Array = null;\n nacl: nacl;\n\n constructor(name: string, pusher: Pusher, nacl: nacl) {\n super(name, pusher);\n this.nacl = nacl;\n }\n\n /** Authorizes the connection to use the channel.\n *\n * @param {String} socketId\n * @param {Function} callback\n */\n authorize(socketId: string, callback: ChannelAuthorizationCallback) {\n super.authorize(\n socketId,\n (error: Error | null, authData: ChannelAuthorizationData) => {\n if (error) {\n callback(error, authData);\n return;\n }\n let sharedSecret = authData['shared_secret'];\n if (!sharedSecret) {\n callback(\n new Error(\n `No shared_secret key in auth payload for encrypted channel: ${this.name}`\n ),\n null\n );\n return;\n }\n this.key = decodeBase64(sharedSecret);\n delete authData['shared_secret'];\n callback(null, authData);\n }\n );\n }\n\n trigger(event: string, data: any): boolean {\n throw new Errors.UnsupportedFeature(\n 'Client events are not currently supported for encrypted channels'\n );\n }\n\n /** Handles an event. For internal use only.\n *\n * @param {PusherEvent} event\n */\n handleEvent(event: PusherEvent) {\n var eventName = event.event;\n var data = event.data;\n if (\n eventName.indexOf('pusher_internal:') === 0 ||\n eventName.indexOf('pusher:') === 0\n ) {\n super.handleEvent(event);\n return;\n }\n this.handleEncryptedEvent(eventName, data);\n }\n\n private handleEncryptedEvent(event: string, data: any): void {\n if (!this.key) {\n Logger.debug(\n 'Received encrypted event before key has been retrieved from the authEndpoint'\n );\n return;\n }\n if (!data.ciphertext || !data.nonce) {\n Logger.error(\n 'Unexpected format for encrypted event, expected object with `ciphertext` and `nonce` fields, got: ' +\n data\n );\n return;\n }\n let cipherText = decodeBase64(data.ciphertext);\n if (cipherText.length < this.nacl.secretbox.overheadLength) {\n Logger.error(\n `Expected encrypted event ciphertext length to be ${this.nacl.secretbox.overheadLength}, got: ${cipherText.length}`\n );\n return;\n }\n let nonce = decodeBase64(data.nonce);\n if (nonce.length < this.nacl.secretbox.nonceLength) {\n Logger.error(\n `Expected encrypted event nonce length to be ${this.nacl.secretbox.nonceLength}, got: ${nonce.length}`\n );\n return;\n }\n\n let bytes = this.nacl.secretbox.open(cipherText, nonce, this.key);\n if (bytes === null) {\n Logger.debug(\n 'Failed to decrypt an event, probably because it was encrypted with a different key. Fetching a new key from the authEndpoint...'\n );\n // Try a single time to retrieve a new auth key and decrypt the event with it\n // If this fails, a new key will be requested when a new message is received\n this.authorize(this.pusher.connection.socket_id, (error, authData) => {\n if (error) {\n Logger.error(\n `Failed to make a request to the authEndpoint: ${authData}. Unable to fetch new key, so dropping encrypted event`\n );\n return;\n }\n bytes = this.nacl.secretbox.open(cipherText, nonce, this.key);\n if (bytes === null) {\n Logger.error(\n `Failed to decrypt event with new key. Dropping encrypted event`\n );\n return;\n }\n this.emit(event, this.getDataToEmit(bytes));\n return;\n });\n return;\n }\n this.emit(event, this.getDataToEmit(bytes));\n }\n\n // Try and parse the decrypted bytes as JSON. If we can't parse it, just\n // return the utf-8 string\n getDataToEmit(bytes: Uint8Array): string {\n let raw = encodeUTF8(bytes);\n try {\n return JSON.parse(raw);\n } catch {\n return raw;\n }\n }\n}\n","import { default as EventsDispatcher } from '../events/dispatcher';\nimport { OneOffTimer as Timer } from '../utils/timers';\nimport { Config } from '../config';\nimport Logger from '../logger';\nimport HandshakePayload from './handshake/handshake_payload';\nimport Connection from './connection';\nimport Strategy from '../strategies/strategy';\nimport StrategyRunner from '../strategies/strategy_runner';\nimport * as Collections from '../utils/collections';\nimport Timeline from '../timeline/timeline';\nimport ConnectionManagerOptions from './connection_manager_options';\nimport Runtime from 'runtime';\n\nimport {\n ErrorCallbacks,\n HandshakeCallbacks,\n ConnectionCallbacks\n} from './callbacks';\nimport Action from './protocol/action';\n\n/** Manages connection to Pusher.\n *\n * Uses a strategy (currently only default), timers and network availability\n * info to establish a connection and export its state. In case of failures,\n * manages reconnection attempts.\n *\n * Exports state changes as following events:\n * - \"state_change\", { previous: p, current: state }\n * - state\n *\n * States:\n * - initialized - initial state, never transitioned to\n * - connecting - connection is being established\n * - connected - connection has been fully established\n * - disconnected - on requested disconnection\n * - unavailable - after connection timeout or when there's no network\n * - failed - when the connection strategy is not supported\n *\n * Options:\n * - unavailableTimeout - time to transition to unavailable state\n * - activityTimeout - time after which ping message should be sent\n * - pongTimeout - time for Pusher to respond with pong before reconnecting\n *\n * @param {String} key application key\n * @param {Object} options\n */\nexport default class ConnectionManager extends EventsDispatcher {\n key: string;\n options: ConnectionManagerOptions;\n state: string;\n connection: Connection;\n usingTLS: boolean;\n timeline: Timeline;\n socket_id: string;\n unavailableTimer: Timer;\n activityTimer: Timer;\n retryTimer: Timer;\n activityTimeout: number;\n strategy: Strategy;\n runner: StrategyRunner;\n errorCallbacks: ErrorCallbacks;\n handshakeCallbacks: HandshakeCallbacks;\n connectionCallbacks: ConnectionCallbacks;\n\n constructor(key: string, options: ConnectionManagerOptions) {\n super();\n this.state = 'initialized';\n this.connection = null;\n\n this.key = key;\n this.options = options;\n this.timeline = this.options.timeline;\n this.usingTLS = this.options.useTLS;\n\n this.errorCallbacks = this.buildErrorCallbacks();\n this.connectionCallbacks = this.buildConnectionCallbacks(\n this.errorCallbacks\n );\n this.handshakeCallbacks = this.buildHandshakeCallbacks(this.errorCallbacks);\n\n var Network = Runtime.getNetwork();\n\n Network.bind('online', () => {\n this.timeline.info({ netinfo: 'online' });\n if (this.state === 'connecting' || this.state === 'unavailable') {\n this.retryIn(0);\n }\n });\n Network.bind('offline', () => {\n this.timeline.info({ netinfo: 'offline' });\n if (this.connection) {\n this.sendActivityCheck();\n }\n });\n\n this.updateStrategy();\n }\n\n /** Establishes a connection to Pusher.\n *\n * Does nothing when connection is already established. See top-level doc\n * to find events emitted on connection attempts.\n */\n connect() {\n if (this.connection || this.runner) {\n return;\n }\n if (!this.strategy.isSupported()) {\n this.updateState('failed');\n return;\n }\n this.updateState('connecting');\n this.startConnecting();\n this.setUnavailableTimer();\n }\n\n /** Sends raw data.\n *\n * @param {String} data\n */\n send(data) {\n if (this.connection) {\n return this.connection.send(data);\n } else {\n return false;\n }\n }\n\n /** Sends an event.\n *\n * @param {String} name\n * @param {String} data\n * @param {String} [channel]\n * @returns {Boolean} whether message was sent or not\n */\n send_event(name: string, data: any, channel?: string) {\n if (this.connection) {\n return this.connection.send_event(name, data, channel);\n } else {\n return false;\n }\n }\n\n /** Closes the connection. */\n disconnect() {\n this.disconnectInternally();\n this.updateState('disconnected');\n }\n\n isUsingTLS() {\n return this.usingTLS;\n }\n\n private startConnecting() {\n var callback = (error, handshake) => {\n if (error) {\n this.runner = this.strategy.connect(0, callback);\n } else {\n if (handshake.action === 'error') {\n this.emit('error', {\n type: 'HandshakeError',\n error: handshake.error\n });\n this.timeline.error({ handshakeError: handshake.error });\n } else {\n this.abortConnecting(); // we don't support switching connections yet\n this.handshakeCallbacks[handshake.action](handshake);\n }\n }\n };\n this.runner = this.strategy.connect(0, callback);\n }\n\n private abortConnecting() {\n if (this.runner) {\n this.runner.abort();\n this.runner = null;\n }\n }\n\n private disconnectInternally() {\n this.abortConnecting();\n this.clearRetryTimer();\n this.clearUnavailableTimer();\n if (this.connection) {\n var connection = this.abandonConnection();\n connection.close();\n }\n }\n\n private updateStrategy() {\n this.strategy = this.options.getStrategy({\n key: this.key,\n timeline: this.timeline,\n useTLS: this.usingTLS\n });\n }\n\n private retryIn(delay) {\n this.timeline.info({ action: 'retry', delay: delay });\n if (delay > 0) {\n this.emit('connecting_in', Math.round(delay / 1000));\n }\n this.retryTimer = new Timer(delay || 0, () => {\n this.disconnectInternally();\n this.connect();\n });\n }\n\n private clearRetryTimer() {\n if (this.retryTimer) {\n this.retryTimer.ensureAborted();\n this.retryTimer = null;\n }\n }\n\n private setUnavailableTimer() {\n this.unavailableTimer = new Timer(this.options.unavailableTimeout, () => {\n this.updateState('unavailable');\n });\n }\n\n private clearUnavailableTimer() {\n if (this.unavailableTimer) {\n this.unavailableTimer.ensureAborted();\n }\n }\n\n private sendActivityCheck() {\n this.stopActivityCheck();\n this.connection.ping();\n // wait for pong response\n this.activityTimer = new Timer(this.options.pongTimeout, () => {\n this.timeline.error({ pong_timed_out: this.options.pongTimeout });\n this.retryIn(0);\n });\n }\n\n private resetActivityCheck() {\n this.stopActivityCheck();\n // send ping after inactivity\n if (this.connection && !this.connection.handlesActivityChecks()) {\n this.activityTimer = new Timer(this.activityTimeout, () => {\n this.sendActivityCheck();\n });\n }\n }\n\n private stopActivityCheck() {\n if (this.activityTimer) {\n this.activityTimer.ensureAborted();\n }\n }\n\n private buildConnectionCallbacks(\n errorCallbacks: ErrorCallbacks\n ): ConnectionCallbacks {\n return Collections.extend({}, errorCallbacks, {\n message: message => {\n // includes pong messages from server\n this.resetActivityCheck();\n this.emit('message', message);\n },\n ping: () => {\n this.send_event('pusher:pong', {});\n },\n activity: () => {\n this.resetActivityCheck();\n },\n error: error => {\n // just emit error to user - socket will already be closed by browser\n this.emit('error', error);\n },\n closed: () => {\n this.abandonConnection();\n if (this.shouldRetry()) {\n this.retryIn(1000);\n }\n }\n });\n }\n\n private buildHandshakeCallbacks(\n errorCallbacks: ErrorCallbacks\n ): HandshakeCallbacks {\n return Collections.extend({}, errorCallbacks, {\n connected: (handshake: HandshakePayload) => {\n this.activityTimeout = Math.min(\n this.options.activityTimeout,\n handshake.activityTimeout,\n handshake.connection.activityTimeout || Infinity\n );\n this.clearUnavailableTimer();\n this.setConnection(handshake.connection);\n this.socket_id = this.connection.id;\n this.updateState('connected', { socket_id: this.socket_id });\n }\n });\n }\n\n private buildErrorCallbacks(): ErrorCallbacks {\n let withErrorEmitted = callback => {\n return (result: Action | HandshakePayload) => {\n if (result.error) {\n this.emit('error', { type: 'WebSocketError', error: result.error });\n }\n callback(result);\n };\n };\n\n return {\n tls_only: withErrorEmitted(() => {\n this.usingTLS = true;\n this.updateStrategy();\n this.retryIn(0);\n }),\n refused: withErrorEmitted(() => {\n this.disconnect();\n }),\n backoff: withErrorEmitted(() => {\n this.retryIn(1000);\n }),\n retry: withErrorEmitted(() => {\n this.retryIn(0);\n })\n };\n }\n\n private setConnection(connection) {\n this.connection = connection;\n for (var event in this.connectionCallbacks) {\n this.connection.bind(event, this.connectionCallbacks[event]);\n }\n this.resetActivityCheck();\n }\n\n private abandonConnection() {\n if (!this.connection) {\n return;\n }\n this.stopActivityCheck();\n for (var event in this.connectionCallbacks) {\n this.connection.unbind(event, this.connectionCallbacks[event]);\n }\n var connection = this.connection;\n this.connection = null;\n return connection;\n }\n\n private updateState(newState: string, data?: any) {\n var previousState = this.state;\n this.state = newState;\n if (previousState !== newState) {\n var newStateDescription = newState;\n if (newStateDescription === 'connected') {\n newStateDescription += ' with new socket ID ' + data.socket_id;\n }\n Logger.debug(\n 'State changed',\n previousState + ' -> ' + newStateDescription\n );\n this.timeline.info({ state: newState, params: data });\n this.emit('state_change', { previous: previousState, current: newState });\n this.emit(newState, data);\n }\n }\n\n private shouldRetry(): boolean {\n return this.state === 'connecting' || this.state === 'connected';\n }\n}\n","import Channel from './channel';\nimport * as Collections from '../utils/collections';\nimport ChannelTable from './channel_table';\nimport Factory from '../utils/factory';\nimport Pusher from '../pusher';\nimport Logger from '../logger';\nimport * as Errors from '../errors';\nimport urlStore from '../utils/url_store';\n\n/** Handles a channel map. */\nexport default class Channels {\n channels: ChannelTable;\n\n constructor() {\n this.channels = {};\n }\n\n /** Creates or retrieves an existing channel by its name.\n *\n * @param {String} name\n * @param {Pusher} pusher\n * @return {Channel}\n */\n add(name: string, pusher: Pusher) {\n if (!this.channels[name]) {\n this.channels[name] = createChannel(name, pusher);\n }\n return this.channels[name];\n }\n\n /** Returns a list of all channels\n *\n * @return {Array}\n */\n all(): Channel[] {\n return Collections.values(this.channels);\n }\n\n /** Finds a channel by its name.\n *\n * @param {String} name\n * @return {Channel} channel or null if it doesn't exist\n */\n find(name: string) {\n return this.channels[name];\n }\n\n /** Removes a channel from the map.\n *\n * @param {String} name\n */\n remove(name: string) {\n var channel = this.channels[name];\n delete this.channels[name];\n return channel;\n }\n\n /** Proxies disconnection signal to all channels. */\n disconnect() {\n Collections.objectApply(this.channels, function(channel) {\n channel.disconnect();\n });\n }\n}\n\nfunction createChannel(name: string, pusher: Pusher): Channel {\n if (name.indexOf('private-encrypted-') === 0) {\n if (pusher.config.nacl) {\n return Factory.createEncryptedChannel(name, pusher, pusher.config.nacl);\n }\n let errMsg =\n 'Tried to subscribe to a private-encrypted- channel but no nacl implementation available';\n let suffix = urlStore.buildLogSuffix('encryptedChannelSupport');\n throw new Errors.UnsupportedFeature(`${errMsg}. ${suffix}`);\n } else if (name.indexOf('private-') === 0) {\n return Factory.createPrivateChannel(name, pusher);\n } else if (name.indexOf('presence-') === 0) {\n return Factory.createPresenceChannel(name, pusher);\n } else if (name.indexOf('#') === 0) {\n throw new Errors.BadChannelName(\n 'Cannot create a channel with name \"' + name + '\".'\n );\n } else {\n return Factory.createChannel(name, pusher);\n }\n}\n","import AssistantToTheTransportManager from '../transports/assistant_to_the_transport_manager';\nimport PingDelayOptions from '../transports/ping_delay_options';\nimport Transport from '../transports/transport';\nimport TransportManager from '../transports/transport_manager';\nimport Handshake from '../connection/handshake';\nimport TransportConnection from '../transports/transport_connection';\nimport SocketHooks from '../http/socket_hooks';\nimport HTTPSocket from '../http/http_socket';\n\nimport Timeline from '../timeline/timeline';\nimport {\n default as TimelineSender,\n TimelineSenderOptions\n} from '../timeline/timeline_sender';\nimport PresenceChannel from '../channels/presence_channel';\nimport PrivateChannel from '../channels/private_channel';\nimport EncryptedChannel from '../channels/encrypted_channel';\nimport Channel from '../channels/channel';\nimport ConnectionManager from '../connection/connection_manager';\nimport ConnectionManagerOptions from '../connection/connection_manager_options';\nimport Ajax from '../http/ajax';\nimport Channels from '../channels/channels';\nimport Pusher from '../pusher';\nimport { Config } from '../config';\nimport * as nacl from 'tweetnacl';\n\nvar Factory = {\n createChannels(): Channels {\n return new Channels();\n },\n\n createConnectionManager(\n key: string,\n options: ConnectionManagerOptions\n ): ConnectionManager {\n return new ConnectionManager(key, options);\n },\n\n createChannel(name: string, pusher: Pusher): Channel {\n return new Channel(name, pusher);\n },\n\n createPrivateChannel(name: string, pusher: Pusher): PrivateChannel {\n return new PrivateChannel(name, pusher);\n },\n\n createPresenceChannel(name: string, pusher: Pusher): PresenceChannel {\n return new PresenceChannel(name, pusher);\n },\n\n createEncryptedChannel(\n name: string,\n pusher: Pusher,\n nacl: nacl\n ): EncryptedChannel {\n return new EncryptedChannel(name, pusher, nacl);\n },\n\n createTimelineSender(timeline: Timeline, options: TimelineSenderOptions) {\n return new TimelineSender(timeline, options);\n },\n\n createHandshake(\n transport: TransportConnection,\n callback: (HandshakePayload) => void\n ): Handshake {\n return new Handshake(transport, callback);\n },\n\n createAssistantToTheTransportManager(\n manager: TransportManager,\n transport: Transport,\n options: PingDelayOptions\n ): AssistantToTheTransportManager {\n return new AssistantToTheTransportManager(manager, transport, options);\n }\n};\n\nexport default Factory;\n","import AssistantToTheTransportManager from './assistant_to_the_transport_manager';\nimport Transport from './transport';\nimport PingDelayOptions from './ping_delay_options';\nimport Factory from '../utils/factory';\n\nexport interface TransportManagerOptions extends PingDelayOptions {\n lives?: number;\n}\n\n/** Keeps track of the number of lives left for a transport.\n *\n * In the beginning of a session, transports may be assigned a number of\n * lives. When an AssistantToTheTransportManager instance reports a transport\n * connection closed uncleanly, the transport loses a life. When the number\n * of lives drops to zero, the transport gets disabled by its manager.\n *\n * @param {Object} options\n */\nexport default class TransportManager {\n options: TransportManagerOptions;\n livesLeft: number;\n\n constructor(options: TransportManagerOptions) {\n this.options = options || {};\n this.livesLeft = this.options.lives || Infinity;\n }\n\n /** Creates a assistant for the transport.\n *\n * @param {Transport} transport\n * @returns {AssistantToTheTransportManager}\n */\n getAssistant(transport: Transport): AssistantToTheTransportManager {\n return Factory.createAssistantToTheTransportManager(this, transport, {\n minPingDelay: this.options.minPingDelay,\n maxPingDelay: this.options.maxPingDelay\n });\n }\n\n /** Returns whether the transport has any lives left.\n *\n * @returns {Boolean}\n */\n isAlive(): boolean {\n return this.livesLeft > 0;\n }\n\n /** Takes one life from the transport. */\n reportDeath() {\n this.livesLeft -= 1;\n }\n}\n","import * as Collections from '../utils/collections';\nimport Util from '../util';\nimport { OneOffTimer as Timer } from '../utils/timers';\nimport Strategy from './strategy';\nimport StrategyOptions from './strategy_options';\n\n/** Loops through strategies with optional timeouts.\n *\n * Options:\n * - loop - whether it should loop through the substrategy list\n * - timeout - initial timeout for a single substrategy\n * - timeoutLimit - maximum timeout\n *\n * @param {Strategy[]} strategies\n * @param {Object} options\n */\nexport default class SequentialStrategy implements Strategy {\n strategies: Strategy[];\n loop: boolean;\n failFast: boolean;\n timeout: number;\n timeoutLimit: number;\n\n constructor(strategies: Strategy[], options: StrategyOptions) {\n this.strategies = strategies;\n this.loop = Boolean(options.loop);\n this.failFast = Boolean(options.failFast);\n this.timeout = options.timeout;\n this.timeoutLimit = options.timeoutLimit;\n }\n\n isSupported(): boolean {\n return Collections.any(this.strategies, Util.method('isSupported'));\n }\n\n connect(minPriority: number, callback: Function) {\n var strategies = this.strategies;\n var current = 0;\n var timeout = this.timeout;\n var runner = null;\n\n var tryNextStrategy = (error, handshake) => {\n if (handshake) {\n callback(null, handshake);\n } else {\n current = current + 1;\n if (this.loop) {\n current = current % strategies.length;\n }\n\n if (current < strategies.length) {\n if (timeout) {\n timeout = timeout * 2;\n if (this.timeoutLimit) {\n timeout = Math.min(timeout, this.timeoutLimit);\n }\n }\n runner = this.tryStrategy(\n strategies[current],\n minPriority,\n { timeout, failFast: this.failFast },\n tryNextStrategy\n );\n } else {\n callback(true);\n }\n }\n };\n\n runner = this.tryStrategy(\n strategies[current],\n minPriority,\n { timeout: timeout, failFast: this.failFast },\n tryNextStrategy\n );\n\n return {\n abort: function() {\n runner.abort();\n },\n forceMinPriority: function(p) {\n minPriority = p;\n if (runner) {\n runner.forceMinPriority(p);\n }\n }\n };\n }\n\n private tryStrategy(\n strategy: Strategy,\n minPriority: number,\n options: StrategyOptions,\n callback: Function\n ) {\n var timer = null;\n var runner = null;\n\n if (options.timeout > 0) {\n timer = new Timer(options.timeout, function() {\n runner.abort();\n callback(true);\n });\n }\n\n runner = strategy.connect(minPriority, function(error, handshake) {\n if (error && timer && timer.isRunning() && !options.failFast) {\n // advance to the next strategy after the timeout\n return;\n }\n if (timer) {\n timer.ensureAborted();\n }\n callback(error, handshake);\n });\n\n return {\n abort: function() {\n if (timer) {\n timer.ensureAborted();\n }\n runner.abort();\n },\n forceMinPriority: function(p) {\n runner.forceMinPriority(p);\n }\n };\n }\n}\n","import * as Collections from '../utils/collections';\nimport Util from '../util';\nimport Strategy from './strategy';\n\n/** Launches all substrategies and emits prioritized connected transports.\n *\n * @param {Array} strategies\n */\nexport default class BestConnectedEverStrategy implements Strategy {\n strategies: Strategy[];\n\n constructor(strategies: Strategy[]) {\n this.strategies = strategies;\n }\n\n isSupported(): boolean {\n return Collections.any(this.strategies, Util.method('isSupported'));\n }\n\n connect(minPriority: number, callback: Function) {\n return connect(this.strategies, minPriority, function(i, runners) {\n return function(error, handshake) {\n runners[i].error = error;\n if (error) {\n if (allRunnersFailed(runners)) {\n callback(true);\n }\n return;\n }\n Collections.apply(runners, function(runner) {\n runner.forceMinPriority(handshake.transport.priority);\n });\n callback(null, handshake);\n };\n });\n }\n}\n\n/** Connects to all strategies in parallel.\n *\n * Callback builder should be a function that takes two arguments: index\n * and a list of runners. It should return another function that will be\n * passed to the substrategy with given index. Runners can be aborted using\n * abortRunner(s) functions from this class.\n *\n * @param {Array} strategies\n * @param {Function} callbackBuilder\n * @return {Object} strategy runner\n */\nfunction connect(\n strategies: Strategy[],\n minPriority: number,\n callbackBuilder: Function\n) {\n var runners = Collections.map(strategies, function(strategy, i, _, rs) {\n return strategy.connect(minPriority, callbackBuilder(i, rs));\n });\n return {\n abort: function() {\n Collections.apply(runners, abortRunner);\n },\n forceMinPriority: function(p) {\n Collections.apply(runners, function(runner) {\n runner.forceMinPriority(p);\n });\n }\n };\n}\n\nfunction allRunnersFailed(runners): boolean {\n return Collections.all(runners, function(runner) {\n return Boolean(runner.error);\n });\n}\n\nfunction abortRunner(runner) {\n if (!runner.error && !runner.aborted) {\n runner.abort();\n runner.aborted = true;\n }\n}\n","import Util from '../util';\nimport Runtime from 'runtime';\nimport Strategy from './strategy';\nimport SequentialStrategy from './sequential_strategy';\nimport StrategyOptions from './strategy_options';\nimport TransportStrategy from './transport_strategy';\nimport Timeline from '../timeline/timeline';\nimport * as Collections from '../utils/collections';\n\nexport interface TransportStrategyDictionary {\n [key: string]: TransportStrategy;\n}\n\n/** Caches last successful transport and uses it for following attempts.\n *\n * @param {Strategy} strategy\n * @param {Object} transports\n * @param {Object} options\n */\nexport default class CachedStrategy implements Strategy {\n strategy: Strategy;\n transports: TransportStrategyDictionary;\n ttl: number;\n usingTLS: boolean;\n timeline: Timeline;\n\n constructor(\n strategy: Strategy,\n transports: TransportStrategyDictionary,\n options: StrategyOptions\n ) {\n this.strategy = strategy;\n this.transports = transports;\n this.ttl = options.ttl || 1800 * 1000;\n this.usingTLS = options.useTLS;\n this.timeline = options.timeline;\n }\n\n isSupported(): boolean {\n return this.strategy.isSupported();\n }\n\n connect(minPriority: number, callback: Function) {\n var usingTLS = this.usingTLS;\n var info = fetchTransportCache(usingTLS);\n\n var strategies = [this.strategy];\n if (info && info.timestamp + this.ttl >= Util.now()) {\n var transport = this.transports[info.transport];\n if (transport) {\n this.timeline.info({\n cached: true,\n transport: info.transport,\n latency: info.latency\n });\n strategies.push(\n new SequentialStrategy([transport], {\n timeout: info.latency * 2 + 1000,\n failFast: true\n })\n );\n }\n }\n\n var startTimestamp = Util.now();\n var runner = strategies\n .pop()\n .connect(minPriority, function cb(error, handshake) {\n if (error) {\n flushTransportCache(usingTLS);\n if (strategies.length > 0) {\n startTimestamp = Util.now();\n runner = strategies.pop().connect(minPriority, cb);\n } else {\n callback(error);\n }\n } else {\n storeTransportCache(\n usingTLS,\n handshake.transport.name,\n Util.now() - startTimestamp\n );\n callback(null, handshake);\n }\n });\n\n return {\n abort: function() {\n runner.abort();\n },\n forceMinPriority: function(p) {\n minPriority = p;\n if (runner) {\n runner.forceMinPriority(p);\n }\n }\n };\n }\n}\n\nfunction getTransportCacheKey(usingTLS: boolean): string {\n return 'pusherTransport' + (usingTLS ? 'TLS' : 'NonTLS');\n}\n\nfunction fetchTransportCache(usingTLS: boolean): any {\n var storage = Runtime.getLocalStorage();\n if (storage) {\n try {\n var serializedCache = storage[getTransportCacheKey(usingTLS)];\n if (serializedCache) {\n return JSON.parse(serializedCache);\n }\n } catch (e) {\n flushTransportCache(usingTLS);\n }\n }\n return null;\n}\n\nfunction storeTransportCache(\n usingTLS: boolean,\n transport: TransportStrategy,\n latency: number\n) {\n var storage = Runtime.getLocalStorage();\n if (storage) {\n try {\n storage[getTransportCacheKey(usingTLS)] = Collections.safeJSONStringify({\n timestamp: Util.now(),\n transport: transport,\n latency: latency\n });\n } catch (e) {\n // catch over quota exceptions raised by localStorage\n }\n }\n}\n\nfunction flushTransportCache(usingTLS: boolean) {\n var storage = Runtime.getLocalStorage();\n if (storage) {\n try {\n delete storage[getTransportCacheKey(usingTLS)];\n } catch (e) {\n // catch exceptions raised by localStorage\n }\n }\n}\n","import { OneOffTimer as Timer } from '../utils/timers';\nimport Strategy from './strategy';\nimport StrategyOptions from './strategy_options';\n\n/** Runs substrategy after specified delay.\n *\n * Options:\n * - delay - time in miliseconds to delay the substrategy attempt\n *\n * @param {Strategy} strategy\n * @param {Object} options\n */\nexport default class DelayedStrategy implements Strategy {\n strategy: Strategy;\n options: { delay: number };\n\n constructor(strategy: Strategy, { delay: number }) {\n this.strategy = strategy;\n this.options = { delay: number };\n }\n\n isSupported(): boolean {\n return this.strategy.isSupported();\n }\n\n connect(minPriority: number, callback: Function) {\n var strategy = this.strategy;\n var runner;\n var timer = new Timer(this.options.delay, function() {\n runner = strategy.connect(minPriority, callback);\n });\n\n return {\n abort: function() {\n timer.ensureAborted();\n if (runner) {\n runner.abort();\n }\n },\n forceMinPriority: function(p) {\n minPriority = p;\n if (runner) {\n runner.forceMinPriority(p);\n }\n }\n };\n }\n}\n","import Strategy from './strategy';\nimport StrategyRunner from './strategy_runner';\n\n/** Proxies method calls to one of substrategies basing on the test function.\n *\n * @param {Function} test\n * @param {Strategy} trueBranch strategy used when test returns true\n * @param {Strategy} falseBranch strategy used when test returns false\n */\nexport default class IfStrategy implements Strategy {\n test: () => boolean;\n trueBranch: Strategy;\n falseBranch: Strategy;\n\n constructor(\n test: () => boolean,\n trueBranch: Strategy,\n falseBranch: Strategy\n ) {\n this.test = test;\n this.trueBranch = trueBranch;\n this.falseBranch = falseBranch;\n }\n\n isSupported(): boolean {\n var branch = this.test() ? this.trueBranch : this.falseBranch;\n return branch.isSupported();\n }\n\n connect(minPriority: number, callback: Function): StrategyRunner {\n var branch = this.test() ? this.trueBranch : this.falseBranch;\n return branch.connect(minPriority, callback);\n }\n}\n","import Strategy from './strategy';\nimport StrategyRunner from './strategy_runner';\n\n/** Launches the substrategy and terminates on the first open connection.\n *\n * @param {Strategy} strategy\n */\nexport default class FirstConnectedStrategy implements Strategy {\n strategy: Strategy;\n\n constructor(strategy: Strategy) {\n this.strategy = strategy;\n }\n\n isSupported(): boolean {\n return this.strategy.isSupported();\n }\n\n connect(minPriority: number, callback: Function): StrategyRunner {\n var runner = this.strategy.connect(minPriority, function(error, handshake) {\n if (handshake) {\n runner.abort();\n }\n callback(error, handshake);\n });\n return runner;\n }\n}\n","import * as Collections from 'core/utils/collections';\nimport TransportManager from 'core/transports/transport_manager';\nimport Strategy from 'core/strategies/strategy';\nimport StrategyOptions from 'core/strategies/strategy_options';\nimport SequentialStrategy from 'core/strategies/sequential_strategy';\nimport BestConnectedEverStrategy from 'core/strategies/best_connected_ever_strategy';\nimport CachedStrategy, {\n TransportStrategyDictionary\n} from 'core/strategies/cached_strategy';\nimport DelayedStrategy from 'core/strategies/delayed_strategy';\nimport IfStrategy from 'core/strategies/if_strategy';\nimport FirstConnectedStrategy from 'core/strategies/first_connected_strategy';\nimport { Config } from 'core/config';\n\nfunction testSupportsStrategy(strategy: Strategy) {\n return function() {\n return strategy.isSupported();\n };\n}\n\nvar getDefaultStrategy = function(\n config: Config,\n baseOptions: StrategyOptions,\n defineTransport: Function\n): Strategy {\n var definedTransports = {};\n\n function defineTransportStrategy(\n name: string,\n type: string,\n priority: number,\n options: StrategyOptions,\n manager?: TransportManager\n ) {\n var transport = defineTransport(\n config,\n name,\n type,\n priority,\n options,\n manager\n );\n\n definedTransports[name] = transport;\n\n return transport;\n }\n\n var ws_options: StrategyOptions = Object.assign({}, baseOptions, {\n hostNonTLS: config.wsHost + ':' + config.wsPort,\n hostTLS: config.wsHost + ':' + config.wssPort,\n httpPath: config.wsPath\n });\n var wss_options: StrategyOptions = Object.assign({}, ws_options, {\n useTLS: true\n });\n var sockjs_options: StrategyOptions = Object.assign({}, baseOptions, {\n hostNonTLS: config.httpHost + ':' + config.httpPort,\n hostTLS: config.httpHost + ':' + config.httpsPort,\n httpPath: config.httpPath\n });\n\n var timeouts = {\n loop: true,\n timeout: 15000,\n timeoutLimit: 60000\n };\n\n var ws_manager = new TransportManager({\n lives: 2,\n minPingDelay: 10000,\n maxPingDelay: config.activityTimeout\n });\n var streaming_manager = new TransportManager({\n lives: 2,\n minPingDelay: 10000,\n maxPingDelay: config.activityTimeout\n });\n\n var ws_transport = defineTransportStrategy(\n 'ws',\n 'ws',\n 3,\n ws_options,\n ws_manager\n );\n var wss_transport = defineTransportStrategy(\n 'wss',\n 'ws',\n 3,\n wss_options,\n ws_manager\n );\n var sockjs_transport = defineTransportStrategy(\n 'sockjs',\n 'sockjs',\n 1,\n sockjs_options\n );\n var xhr_streaming_transport = defineTransportStrategy(\n 'xhr_streaming',\n 'xhr_streaming',\n 1,\n sockjs_options,\n streaming_manager\n );\n var xdr_streaming_transport = defineTransportStrategy(\n 'xdr_streaming',\n 'xdr_streaming',\n 1,\n sockjs_options,\n streaming_manager\n );\n var xhr_polling_transport = defineTransportStrategy(\n 'xhr_polling',\n 'xhr_polling',\n 1,\n sockjs_options\n );\n var xdr_polling_transport = defineTransportStrategy(\n 'xdr_polling',\n 'xdr_polling',\n 1,\n sockjs_options\n );\n\n var ws_loop = new SequentialStrategy([ws_transport], timeouts);\n var wss_loop = new SequentialStrategy([wss_transport], timeouts);\n var sockjs_loop = new SequentialStrategy([sockjs_transport], timeouts);\n var streaming_loop = new SequentialStrategy(\n [\n new IfStrategy(\n testSupportsStrategy(xhr_streaming_transport),\n xhr_streaming_transport,\n xdr_streaming_transport\n )\n ],\n timeouts\n );\n var polling_loop = new SequentialStrategy(\n [\n new IfStrategy(\n testSupportsStrategy(xhr_polling_transport),\n xhr_polling_transport,\n xdr_polling_transport\n )\n ],\n timeouts\n );\n\n var http_loop = new SequentialStrategy(\n [\n new IfStrategy(\n testSupportsStrategy(streaming_loop),\n new BestConnectedEverStrategy([\n streaming_loop,\n new DelayedStrategy(polling_loop, { delay: 4000 })\n ]),\n polling_loop\n )\n ],\n timeouts\n );\n\n var http_fallback_loop = new IfStrategy(\n testSupportsStrategy(http_loop),\n http_loop,\n sockjs_loop\n );\n\n var wsStrategy;\n if (baseOptions.useTLS) {\n wsStrategy = new BestConnectedEverStrategy([\n ws_loop,\n new DelayedStrategy(http_fallback_loop, { delay: 2000 })\n ]);\n } else {\n wsStrategy = new BestConnectedEverStrategy([\n ws_loop,\n new DelayedStrategy(wss_loop, { delay: 2000 }),\n new DelayedStrategy(http_fallback_loop, { delay: 5000 })\n ]);\n }\n\n return new CachedStrategy(\n new FirstConnectedStrategy(\n new IfStrategy(\n testSupportsStrategy(ws_transport),\n wsStrategy,\n http_fallback_loop\n )\n ),\n definedTransports,\n {\n ttl: 1800000,\n timeline: baseOptions.timeline,\n useTLS: baseOptions.useTLS\n }\n );\n};\n\nexport default getDefaultStrategy;\n","import { Dependencies } from '../dom/dependencies';\n\n/** Initializes the transport.\n *\n * Fetches resources if needed and then transitions to initialized.\n */\nexport default function() {\n var self = this;\n\n self.timeline.info(\n self.buildTimelineMessage({\n transport: self.name + (self.options.useTLS ? 's' : '')\n })\n );\n\n if (self.hooks.isInitialized()) {\n self.changeState('initialized');\n } else if (self.hooks.file) {\n self.changeState('initializing');\n Dependencies.load(\n self.hooks.file,\n { useTLS: self.options.useTLS },\n function(error, callback) {\n if (self.hooks.isInitialized()) {\n self.changeState('initialized');\n callback(true);\n } else {\n if (error) {\n self.onError(error);\n }\n self.onClose();\n callback(false);\n }\n }\n );\n } else {\n self.onClose();\n }\n}\n","import HTTPRequest from 'core/http/http_request';\nimport RequestHooks from 'core/http/request_hooks';\nimport Ajax from 'core/http/ajax';\nimport * as Errors from 'core/errors';\n\nvar hooks: RequestHooks = {\n getRequest: function(socket: HTTPRequest): Ajax {\n var xdr = new (window).XDomainRequest();\n xdr.ontimeout = function() {\n socket.emit('error', new Errors.RequestTimedOut());\n socket.close();\n };\n xdr.onerror = function(e) {\n socket.emit('error', e);\n socket.close();\n };\n xdr.onprogress = function() {\n if (xdr.responseText && xdr.responseText.length > 0) {\n socket.onChunk(200, xdr.responseText);\n }\n };\n xdr.onload = function() {\n if (xdr.responseText && xdr.responseText.length > 0) {\n socket.onChunk(200, xdr.responseText);\n }\n socket.emit('finished', 200);\n socket.close();\n };\n return xdr;\n },\n abortRequest: function(xdr: Ajax) {\n xdr.ontimeout = xdr.onerror = xdr.onprogress = xdr.onload = null;\n xdr.abort();\n }\n};\n\nexport default hooks;\n","import Runtime from 'runtime';\nimport RequestHooks from './request_hooks';\nimport Ajax from './ajax';\nimport { default as EventsDispatcher } from '../events/dispatcher';\n\nconst MAX_BUFFER_LENGTH = 256 * 1024;\n\nexport default class HTTPRequest extends EventsDispatcher {\n hooks: RequestHooks;\n method: string;\n url: string;\n position: number;\n xhr: Ajax;\n unloader: Function;\n\n constructor(hooks: RequestHooks, method: string, url: string) {\n super();\n this.hooks = hooks;\n this.method = method;\n this.url = url;\n }\n\n start(payload?: any) {\n this.position = 0;\n this.xhr = this.hooks.getRequest(this);\n\n this.unloader = () => {\n this.close();\n };\n Runtime.addUnloadListener(this.unloader);\n\n this.xhr.open(this.method, this.url, true);\n\n if (this.xhr.setRequestHeader) {\n this.xhr.setRequestHeader('Content-Type', 'application/json'); // ReactNative doesn't set this header by default.\n }\n this.xhr.send(payload);\n }\n\n close() {\n if (this.unloader) {\n Runtime.removeUnloadListener(this.unloader);\n this.unloader = null;\n }\n if (this.xhr) {\n this.hooks.abortRequest(this.xhr);\n this.xhr = null;\n }\n }\n\n onChunk(status: number, data: any) {\n while (true) {\n var chunk = this.advanceBuffer(data);\n if (chunk) {\n this.emit('chunk', { status: status, data: chunk });\n } else {\n break;\n }\n }\n if (this.isBufferTooLong(data)) {\n this.emit('buffer_too_long');\n }\n }\n\n private advanceBuffer(buffer: any[]): any {\n var unreadData = buffer.slice(this.position);\n var endOfLinePosition = unreadData.indexOf('\\n');\n\n if (endOfLinePosition !== -1) {\n this.position += endOfLinePosition + 1;\n return unreadData.slice(0, endOfLinePosition);\n } else {\n // chunk is not finished yet, don't move the buffer pointer\n return null;\n }\n }\n\n private isBufferTooLong(buffer: any): boolean {\n return this.position === buffer.length && buffer.length > MAX_BUFFER_LENGTH;\n }\n}\n","enum State {\n CONNECTING = 0,\n OPEN = 1,\n CLOSED = 3\n}\n\nexport default State;\n","import URLLocation from './url_location';\nimport State from './state';\nimport Socket from '../socket';\nimport SocketHooks from './socket_hooks';\nimport Util from '../util';\nimport Ajax from './ajax';\nimport HTTPRequest from './http_request';\nimport Runtime from 'runtime';\n\nvar autoIncrement = 1;\n\nclass HTTPSocket implements Socket {\n hooks: SocketHooks;\n session: string;\n location: URLLocation;\n readyState: State;\n stream: HTTPRequest;\n\n onopen: () => void;\n onerror: (error: any) => void;\n onclose: (closeEvent: any) => void;\n onmessage: (message: any) => void;\n onactivity: () => void;\n\n constructor(hooks: SocketHooks, url: string) {\n this.hooks = hooks;\n this.session = randomNumber(1000) + '/' + randomString(8);\n this.location = getLocation(url);\n this.readyState = State.CONNECTING;\n this.openStream();\n }\n\n send(payload: any) {\n return this.sendRaw(JSON.stringify([payload]));\n }\n\n ping() {\n this.hooks.sendHeartbeat(this);\n }\n\n close(code: any, reason: any) {\n this.onClose(code, reason, true);\n }\n\n /** For internal use only */\n sendRaw(payload: any): boolean {\n if (this.readyState === State.OPEN) {\n try {\n Runtime.createSocketRequest(\n 'POST',\n getUniqueURL(getSendURL(this.location, this.session))\n ).start(payload);\n return true;\n } catch (e) {\n return false;\n }\n } else {\n return false;\n }\n }\n\n /** For internal use only */\n reconnect() {\n this.closeStream();\n this.openStream();\n }\n\n /** For internal use only */\n onClose(code, reason, wasClean) {\n this.closeStream();\n this.readyState = State.CLOSED;\n if (this.onclose) {\n this.onclose({\n code: code,\n reason: reason,\n wasClean: wasClean\n });\n }\n }\n\n private onChunk(chunk) {\n if (chunk.status !== 200) {\n return;\n }\n if (this.readyState === State.OPEN) {\n this.onActivity();\n }\n\n var payload;\n var type = chunk.data.slice(0, 1);\n switch (type) {\n case 'o':\n payload = JSON.parse(chunk.data.slice(1) || '{}');\n this.onOpen(payload);\n break;\n case 'a':\n payload = JSON.parse(chunk.data.slice(1) || '[]');\n for (var i = 0; i < payload.length; i++) {\n this.onEvent(payload[i]);\n }\n break;\n case 'm':\n payload = JSON.parse(chunk.data.slice(1) || 'null');\n this.onEvent(payload);\n break;\n case 'h':\n this.hooks.onHeartbeat(this);\n break;\n case 'c':\n payload = JSON.parse(chunk.data.slice(1) || '[]');\n this.onClose(payload[0], payload[1], true);\n break;\n }\n }\n\n private onOpen(options) {\n if (this.readyState === State.CONNECTING) {\n if (options && options.hostname) {\n this.location.base = replaceHost(this.location.base, options.hostname);\n }\n this.readyState = State.OPEN;\n\n if (this.onopen) {\n this.onopen();\n }\n } else {\n this.onClose(1006, 'Server lost session', true);\n }\n }\n\n private onEvent(event) {\n if (this.readyState === State.OPEN && this.onmessage) {\n this.onmessage({ data: event });\n }\n }\n\n private onActivity() {\n if (this.onactivity) {\n this.onactivity();\n }\n }\n\n private onError(error) {\n if (this.onerror) {\n this.onerror(error);\n }\n }\n\n private openStream() {\n this.stream = Runtime.createSocketRequest(\n 'POST',\n getUniqueURL(this.hooks.getReceiveURL(this.location, this.session))\n );\n\n this.stream.bind('chunk', chunk => {\n this.onChunk(chunk);\n });\n this.stream.bind('finished', status => {\n this.hooks.onFinished(this, status);\n });\n this.stream.bind('buffer_too_long', () => {\n this.reconnect();\n });\n\n try {\n this.stream.start();\n } catch (error) {\n Util.defer(() => {\n this.onError(error);\n this.onClose(1006, 'Could not start streaming', false);\n });\n }\n }\n\n private closeStream() {\n if (this.stream) {\n this.stream.unbind_all();\n this.stream.close();\n this.stream = null;\n }\n }\n}\n\nfunction getLocation(url): URLLocation {\n var parts = /([^\\?]*)\\/*(\\??.*)/.exec(url);\n return {\n base: parts[1],\n queryString: parts[2]\n };\n}\n\nfunction getSendURL(url: URLLocation, session: string): string {\n return url.base + '/' + session + '/xhr_send';\n}\n\nfunction getUniqueURL(url: string): string {\n var separator = url.indexOf('?') === -1 ? '?' : '&';\n return url + separator + 't=' + +new Date() + '&n=' + autoIncrement++;\n}\n\nfunction replaceHost(url: string, hostname: string): string {\n var urlParts = /(https?:\\/\\/)([^\\/:]+)((\\/|:)?.*)/.exec(url);\n return urlParts[1] + hostname + urlParts[3];\n}\n\nfunction randomNumber(max: number): number {\n return Runtime.randomInt(max);\n}\n\nfunction randomString(length: number): string {\n var result = [];\n\n for (var i = 0; i < length; i++) {\n result.push(randomNumber(32).toString(32));\n }\n\n return result.join('');\n}\n\nexport default HTTPSocket;\n","import SocketHooks from './socket_hooks';\nimport HTTPSocket from './http_socket';\n\nvar hooks: SocketHooks = {\n getReceiveURL: function(url, session) {\n return url.base + '/' + session + '/xhr_streaming' + url.queryString;\n },\n onHeartbeat: function(socket) {\n socket.sendRaw('[]');\n },\n sendHeartbeat: function(socket) {\n socket.sendRaw('[]');\n },\n onFinished: function(socket, status) {\n socket.onClose(1006, 'Connection interrupted (' + status + ')', false);\n }\n};\n\nexport default hooks;\n","import SocketHooks from './socket_hooks';\nimport URLLocation from './url_location';\nimport HTTPSocket from './http_socket';\n\nvar hooks: SocketHooks = {\n getReceiveURL: function(url: URLLocation, session: string): string {\n return url.base + '/' + session + '/xhr' + url.queryString;\n },\n onHeartbeat: function() {\n // next HTTP request will reset server's activity timer\n },\n sendHeartbeat: function(socket) {\n socket.sendRaw('[]');\n },\n onFinished: function(socket, status) {\n if (status === 200) {\n socket.reconnect();\n } else {\n socket.onClose(1006, 'Connection interrupted (' + status + ')', false);\n }\n }\n};\n\nexport default hooks;\n","import HTTPRequest from 'core/http/http_request';\nimport RequestHooks from 'core/http/request_hooks';\nimport Ajax from 'core/http/ajax';\nimport Runtime from 'runtime';\n\nvar hooks: RequestHooks = {\n getRequest: function(socket: HTTPRequest): Ajax {\n var Constructor = Runtime.getXHRAPI();\n var xhr = new Constructor();\n xhr.onreadystatechange = xhr.onprogress = function() {\n switch (xhr.readyState) {\n case 3:\n if (xhr.responseText && xhr.responseText.length > 0) {\n socket.onChunk(xhr.status, xhr.responseText);\n }\n break;\n case 4:\n // this happens only on errors, never after calling close\n if (xhr.responseText && xhr.responseText.length > 0) {\n socket.onChunk(xhr.status, xhr.responseText);\n }\n socket.emit('finished', xhr.status);\n socket.close();\n break;\n }\n };\n return xhr;\n },\n abortRequest: function(xhr: Ajax) {\n xhr.onreadystatechange = null;\n xhr.abort();\n }\n};\n\nexport default hooks;\n","import HTTPRequest from 'core/http/http_request';\nimport HTTPSocket from 'core/http/http_socket';\nimport SocketHooks from 'core/http/socket_hooks';\nimport RequestHooks from 'core/http/request_hooks';\nimport streamingHooks from 'core/http/http_streaming_socket';\nimport pollingHooks from 'core/http/http_polling_socket';\nimport xhrHooks from './http_xhr_request';\nimport HTTPFactory from 'core/http/http_factory';\n\nvar HTTP: HTTPFactory = {\n createStreamingSocket(url: string): HTTPSocket {\n return this.createSocket(streamingHooks, url);\n },\n\n createPollingSocket(url: string): HTTPSocket {\n return this.createSocket(pollingHooks, url);\n },\n\n createSocket(hooks: SocketHooks, url: string): HTTPSocket {\n return new HTTPSocket(hooks, url);\n },\n\n createXHR(method: string, url: string): HTTPRequest {\n return this.createRequest(xhrHooks, method, url);\n },\n\n createRequest(hooks: RequestHooks, method: string, url: string): HTTPRequest {\n return new HTTPRequest(hooks, method, url);\n }\n};\n\nexport default HTTP;\n","import xdrHooks from './http_xdomain_request';\nimport HTTP from 'isomorphic/http/http';\n\nHTTP.createXDR = function(method, url) {\n return this.createRequest(xdrHooks, method, url);\n};\n\nexport default HTTP;\n","import Browser from './browser';\nimport { Dependencies, DependenciesReceivers } from './dom/dependencies';\nimport { AuthTransport, AuthTransports } from 'core/auth/auth_transports';\nimport xhrAuth from 'isomorphic/auth/xhr_auth';\nimport jsonpAuth from './auth/jsonp_auth';\nimport TimelineTransport from 'core/timeline/timeline_transport';\nimport TimelineSender from 'core/timeline/timeline_sender';\nimport ScriptRequest from './dom/script_request';\nimport JSONPRequest from './dom/jsonp_request';\nimport * as Collections from 'core/utils/collections';\nimport { ScriptReceivers } from './dom/script_receiver_factory';\nimport jsonpTimeline from './timeline/jsonp_timeline';\nimport Transports from './transports/transports';\nimport Ajax from 'core/http/ajax';\nimport { Network } from './net_info';\nimport getDefaultStrategy from './default_strategy';\nimport transportConnectionInitializer from './transports/transport_connection_initializer';\nimport HTTPFactory from './http/http';\nimport HTTPRequest from 'core/http/http_request';\n\nvar Runtime: Browser = {\n // for jsonp auth\n nextAuthCallbackID: 1,\n auth_callbacks: {},\n ScriptReceivers,\n DependenciesReceivers,\n getDefaultStrategy,\n Transports,\n transportConnectionInitializer,\n HTTPFactory,\n\n TimelineTransport: jsonpTimeline,\n\n getXHRAPI() {\n return window.XMLHttpRequest;\n },\n\n getWebSocketAPI() {\n return window.WebSocket || window.MozWebSocket;\n },\n\n setup(PusherClass): void {\n (window).Pusher = PusherClass; // JSONp requires Pusher to be in the global scope.\n var initializeOnDocumentBody = () => {\n this.onDocumentBody(PusherClass.ready);\n };\n if (!(window).JSON) {\n Dependencies.load('json2', {}, initializeOnDocumentBody);\n } else {\n initializeOnDocumentBody();\n }\n },\n\n getDocument(): Document {\n return document;\n },\n\n getProtocol(): string {\n return this.getDocument().location.protocol;\n },\n\n getAuthorizers(): AuthTransports {\n return { ajax: xhrAuth, jsonp: jsonpAuth };\n },\n\n onDocumentBody(callback: Function) {\n if (document.body) {\n callback();\n } else {\n setTimeout(() => {\n this.onDocumentBody(callback);\n }, 0);\n }\n },\n\n createJSONPRequest(url: string, data: any): JSONPRequest {\n return new JSONPRequest(url, data);\n },\n\n createScriptRequest(src: string): ScriptRequest {\n return new ScriptRequest(src);\n },\n\n getLocalStorage() {\n try {\n return window.localStorage;\n } catch (e) {\n return undefined;\n }\n },\n\n createXHR(): Ajax {\n if (this.getXHRAPI()) {\n return this.createXMLHttpRequest();\n } else {\n return this.createMicrosoftXHR();\n }\n },\n\n createXMLHttpRequest(): Ajax {\n var Constructor = this.getXHRAPI();\n return new Constructor();\n },\n\n createMicrosoftXHR(): Ajax {\n return new ActiveXObject('Microsoft.XMLHTTP');\n },\n\n getNetwork() {\n return Network;\n },\n\n createWebSocket(url: string): any {\n var Constructor = this.getWebSocketAPI();\n return new Constructor(url);\n },\n\n createSocketRequest(method: string, url: string): HTTPRequest {\n if (this.isXHRSupported()) {\n return this.HTTPFactory.createXHR(method, url);\n } else if (this.isXDRSupported(url.indexOf('https:') === 0)) {\n return this.HTTPFactory.createXDR(method, url);\n } else {\n throw 'Cross-origin HTTP requests are not supported';\n }\n },\n\n isXHRSupported(): boolean {\n var Constructor = this.getXHRAPI();\n return (\n Boolean(Constructor) && new Constructor().withCredentials !== undefined\n );\n },\n\n isXDRSupported(useTLS?: boolean): boolean {\n var protocol = useTLS ? 'https:' : 'http:';\n var documentProtocol = this.getProtocol();\n return (\n Boolean(window['XDomainRequest']) && documentProtocol === protocol\n );\n },\n\n addUnloadListener(listener: any) {\n if (window.addEventListener !== undefined) {\n window.addEventListener('unload', listener, false);\n } else if (window.attachEvent !== undefined) {\n window.attachEvent('onunload', listener);\n }\n },\n\n removeUnloadListener(listener: any) {\n if (window.addEventListener !== undefined) {\n window.removeEventListener('unload', listener, false);\n } else if (window.detachEvent !== undefined) {\n window.detachEvent('onunload', listener);\n }\n },\n\n randomInt(max: number): number {\n /**\n * Return values in the range of [0, 1[\n */\n const random = function() {\n const crypto = window.crypto || window['msCrypto'];\n const random = crypto.getRandomValues(new Uint32Array(1))[0];\n\n return random / 2 ** 32;\n };\n\n return Math.floor(random() * max);\n }\n};\n\nexport default Runtime;\n","enum TimelineLevel {\n ERROR = 3,\n INFO = 6,\n DEBUG = 7\n}\n\nexport default TimelineLevel;\n","import * as Collections from '../utils/collections';\nimport Util from '../util';\nimport { default as Level } from './level';\n\nexport interface TimelineOptions {\n level?: Level;\n limit?: number;\n version?: string;\n cluster?: string;\n features?: string[];\n params?: any;\n}\n\nexport default class Timeline {\n key: string;\n session: number;\n events: any[];\n options: TimelineOptions;\n sent: number;\n uniqueID: number;\n\n constructor(key: string, session: number, options: TimelineOptions) {\n this.key = key;\n this.session = session;\n this.events = [];\n this.options = options || {};\n this.sent = 0;\n this.uniqueID = 0;\n }\n\n log(level, event) {\n if (level <= this.options.level) {\n this.events.push(\n Collections.extend({}, event, { timestamp: Util.now() })\n );\n if (this.options.limit && this.events.length > this.options.limit) {\n this.events.shift();\n }\n }\n }\n\n error(event) {\n this.log(Level.ERROR, event);\n }\n\n info(event) {\n this.log(Level.INFO, event);\n }\n\n debug(event) {\n this.log(Level.DEBUG, event);\n }\n\n isEmpty() {\n return this.events.length === 0;\n }\n\n send(sendfn, callback) {\n var data = Collections.extend(\n {\n session: this.session,\n bundle: this.sent + 1,\n key: this.key,\n lib: 'js',\n version: this.options.version,\n cluster: this.options.cluster,\n features: this.options.features,\n timeline: this.events\n },\n this.options.params\n );\n\n this.events = [];\n sendfn(data, (error, result) => {\n if (!error) {\n this.sent++;\n }\n if (callback) {\n callback(error, result);\n }\n });\n\n return true;\n }\n\n generateUniqueID(): number {\n this.uniqueID++;\n return this.uniqueID;\n }\n}\n","import Factory from '../utils/factory';\nimport Util from '../util';\nimport * as Errors from '../errors';\nimport * as Collections from '../utils/collections';\nimport Strategy from './strategy';\nimport Transport from '../transports/transport';\nimport StrategyOptions from './strategy_options';\nimport Handshake from '../connection/handshake';\n\n/** Provides a strategy interface for transports.\n *\n * @param {String} name\n * @param {Number} priority\n * @param {Class} transport\n * @param {Object} options\n */\nexport default class TransportStrategy implements Strategy {\n name: string;\n priority: number;\n transport: Transport;\n options: StrategyOptions;\n\n constructor(\n name: string,\n priority: number,\n transport: Transport,\n options: StrategyOptions\n ) {\n this.name = name;\n this.priority = priority;\n this.transport = transport;\n this.options = options || {};\n }\n\n /** Returns whether the transport is supported in the browser.\n *\n * @returns {Boolean}\n */\n isSupported(): boolean {\n return this.transport.isSupported({\n useTLS: this.options.useTLS\n });\n }\n\n /** Launches a connection attempt and returns a strategy runner.\n *\n * @param {Function} callback\n * @return {Object} strategy runner\n */\n connect(minPriority: number, callback: Function) {\n if (!this.isSupported()) {\n return failAttempt(new Errors.UnsupportedStrategy(), callback);\n } else if (this.priority < minPriority) {\n return failAttempt(new Errors.TransportPriorityTooLow(), callback);\n }\n\n var connected = false;\n var transport = this.transport.createConnection(\n this.name,\n this.priority,\n this.options.key,\n this.options\n );\n var handshake = null;\n\n var onInitialized = function() {\n transport.unbind('initialized', onInitialized);\n transport.connect();\n };\n var onOpen = function() {\n handshake = Factory.createHandshake(transport, function(result) {\n connected = true;\n unbindListeners();\n callback(null, result);\n });\n };\n var onError = function(error) {\n unbindListeners();\n callback(error);\n };\n var onClosed = function() {\n unbindListeners();\n var serializedTransport;\n\n // The reason for this try/catch block is that on React Native\n // the WebSocket object is circular. Therefore transport.socket will\n // throw errors upon stringification. Collections.safeJSONStringify\n // discards circular references when serializing.\n serializedTransport = Collections.safeJSONStringify(transport);\n callback(new Errors.TransportClosed(serializedTransport));\n };\n\n var unbindListeners = function() {\n transport.unbind('initialized', onInitialized);\n transport.unbind('open', onOpen);\n transport.unbind('error', onError);\n transport.unbind('closed', onClosed);\n };\n\n transport.bind('initialized', onInitialized);\n transport.bind('open', onOpen);\n transport.bind('error', onError);\n transport.bind('closed', onClosed);\n\n // connect will be called automatically after initialization\n transport.initialize();\n\n return {\n abort: () => {\n if (connected) {\n return;\n }\n unbindListeners();\n if (handshake) {\n handshake.close();\n } else {\n transport.close();\n }\n },\n forceMinPriority: p => {\n if (connected) {\n return;\n }\n if (this.priority < p) {\n if (handshake) {\n handshake.close();\n } else {\n transport.close();\n }\n }\n }\n };\n }\n}\n\nfunction failAttempt(error: Error, callback: Function) {\n Util.defer(function() {\n callback(error);\n });\n return {\n abort: function() {},\n forceMinPriority: function() {}\n };\n}\n","import * as Collections from '../utils/collections';\nimport Util from '../util';\nimport TransportManager from '../transports/transport_manager';\nimport * as Errors from '../errors';\nimport Strategy from './strategy';\nimport TransportStrategy from './transport_strategy';\nimport StrategyOptions from '../strategies/strategy_options';\nimport { Config } from '../config';\nimport Runtime from 'runtime';\n\nconst { Transports } = Runtime;\n\nexport var defineTransport = function(\n config: Config,\n name: string,\n type: string,\n priority: number,\n options: StrategyOptions,\n manager?: TransportManager\n): Strategy {\n var transportClass = Transports[type];\n if (!transportClass) {\n throw new Errors.UnsupportedTransport(type);\n }\n\n var enabled =\n (!config.enabledTransports ||\n Collections.arrayIndexOf(config.enabledTransports, name) !== -1) &&\n (!config.disabledTransports ||\n Collections.arrayIndexOf(config.disabledTransports, name) === -1);\n\n var transport;\n if (enabled) {\n options = Object.assign(\n { ignoreNullOrigin: config.ignoreNullOrigin },\n options\n );\n\n transport = new TransportStrategy(\n name,\n priority,\n manager ? manager.getAssistant(transportClass) : transportClass,\n options\n );\n } else {\n transport = UnsupportedStrategy;\n }\n\n return transport;\n};\n\nvar UnsupportedStrategy: Strategy = {\n isSupported: function() {\n return false;\n },\n connect: function(_, callback) {\n var deferred = Util.defer(function() {\n callback(new Errors.UnsupportedStrategy());\n });\n return {\n abort: function() {\n deferred.ensureAborted();\n },\n forceMinPriority: function() {}\n };\n }\n};\n","import {\n UserAuthenticationCallback,\n InternalAuthOptions,\n UserAuthenticationHandler,\n UserAuthenticationRequestParams,\n AuthRequestType\n} from './options';\n\nimport Runtime from 'runtime';\n\nconst composeChannelQuery = (\n params: UserAuthenticationRequestParams,\n authOptions: InternalAuthOptions\n) => {\n var query = 'socket_id=' + encodeURIComponent(params.socketId);\n\n for (var key in authOptions.params) {\n query +=\n '&' +\n encodeURIComponent(key) +\n '=' +\n encodeURIComponent(authOptions.params[key]);\n }\n\n if (authOptions.paramsProvider != null) {\n let dynamicParams = authOptions.paramsProvider();\n for (var key in dynamicParams) {\n query +=\n '&' +\n encodeURIComponent(key) +\n '=' +\n encodeURIComponent(dynamicParams[key]);\n }\n }\n\n return query;\n};\n\nconst UserAuthenticator = (\n authOptions: InternalAuthOptions\n): UserAuthenticationHandler => {\n if (typeof Runtime.getAuthorizers()[authOptions.transport] === 'undefined') {\n throw `'${authOptions.transport}' is not a recognized auth transport`;\n }\n\n return (\n params: UserAuthenticationRequestParams,\n callback: UserAuthenticationCallback\n ) => {\n const query = composeChannelQuery(params, authOptions);\n\n Runtime.getAuthorizers()[authOptions.transport](\n Runtime,\n query,\n authOptions,\n AuthRequestType.UserAuthentication,\n callback\n );\n };\n};\n\nexport default UserAuthenticator;\n","import {\n AuthRequestType,\n InternalAuthOptions,\n ChannelAuthorizationHandler,\n ChannelAuthorizationRequestParams,\n ChannelAuthorizationCallback\n} from './options';\n\nimport Runtime from 'runtime';\n\nconst composeChannelQuery = (\n params: ChannelAuthorizationRequestParams,\n authOptions: InternalAuthOptions\n) => {\n var query = 'socket_id=' + encodeURIComponent(params.socketId);\n\n query += '&channel_name=' + encodeURIComponent(params.channelName);\n\n for (var key in authOptions.params) {\n query +=\n '&' +\n encodeURIComponent(key) +\n '=' +\n encodeURIComponent(authOptions.params[key]);\n }\n\n if (authOptions.paramsProvider != null) {\n let dynamicParams = authOptions.paramsProvider();\n for (var key in dynamicParams) {\n query +=\n '&' +\n encodeURIComponent(key) +\n '=' +\n encodeURIComponent(dynamicParams[key]);\n }\n }\n\n return query;\n};\n\nconst ChannelAuthorizer = (\n authOptions: InternalAuthOptions\n): ChannelAuthorizationHandler => {\n if (typeof Runtime.getAuthorizers()[authOptions.transport] === 'undefined') {\n throw `'${authOptions.transport}' is not a recognized auth transport`;\n }\n\n return (\n params: ChannelAuthorizationRequestParams,\n callback: ChannelAuthorizationCallback\n ) => {\n const query = composeChannelQuery(params, authOptions);\n\n Runtime.getAuthorizers()[authOptions.transport](\n Runtime,\n query,\n authOptions,\n AuthRequestType.ChannelAuthorization,\n callback\n );\n };\n};\n\nexport default ChannelAuthorizer;\n","import Channel from '../channels/channel';\nimport {\n ChannelAuthorizationCallback,\n ChannelAuthorizationHandler,\n ChannelAuthorizationRequestParams,\n InternalAuthOptions\n} from './options';\n\nexport interface DeprecatedChannelAuthorizer {\n authorize(socketId: string, callback: ChannelAuthorizationCallback): void;\n}\n\nexport interface ChannelAuthorizerGenerator {\n (\n channel: Channel,\n options: DeprecatedAuthorizerOptions\n ): DeprecatedChannelAuthorizer;\n}\n\nexport interface DeprecatedAuthOptions {\n params?: any;\n headers?: any;\n}\n\nexport interface DeprecatedAuthorizerOptions {\n authTransport: 'ajax' | 'jsonp';\n authEndpoint: string;\n auth?: DeprecatedAuthOptions;\n}\n\nexport const ChannelAuthorizerProxy = (\n pusher,\n authOptions: InternalAuthOptions,\n channelAuthorizerGenerator: ChannelAuthorizerGenerator\n): ChannelAuthorizationHandler => {\n const deprecatedAuthorizerOptions: DeprecatedAuthorizerOptions = {\n authTransport: authOptions.transport,\n authEndpoint: authOptions.endpoint,\n auth: {\n params: authOptions.params,\n headers: authOptions.headers\n }\n };\n return (\n params: ChannelAuthorizationRequestParams,\n callback: ChannelAuthorizationCallback\n ) => {\n const channel = pusher.channel(params.channelName);\n // This line creates a new channel authorizer every time.\n // In the past, this was only done once per channel and reused.\n // We can do that again if we want to keep this behavior intact.\n const channelAuthorizer: DeprecatedChannelAuthorizer = channelAuthorizerGenerator(\n channel,\n deprecatedAuthorizerOptions\n );\n channelAuthorizer.authorize(params.socketId, callback);\n };\n};\n","import { Options } from './options';\nimport Defaults from './defaults';\nimport {\n ChannelAuthorizationHandler,\n UserAuthenticationHandler,\n ChannelAuthorizationOptions\n} from './auth/options';\nimport UserAuthenticator from './auth/user_authenticator';\nimport ChannelAuthorizer from './auth/channel_authorizer';\nimport { ChannelAuthorizerProxy } from './auth/deprecated_channel_authorizer';\nimport Runtime from 'runtime';\nimport * as nacl from 'tweetnacl';\nimport Logger from './logger';\n\nexport type AuthTransport = 'ajax' | 'jsonp';\nexport type Transport =\n | 'ws'\n | 'wss'\n | 'xhr_streaming'\n | 'xhr_polling'\n | 'sockjs';\n\nexport interface Config {\n // these are all 'required' config parameters, it's not necessary for the user\n // to set them, but they have configured defaults.\n activityTimeout: number;\n enableStats: boolean;\n httpHost: string;\n httpPath: string;\n httpPort: number;\n httpsPort: number;\n pongTimeout: number;\n statsHost: string;\n unavailableTimeout: number;\n useTLS: boolean;\n wsHost: string;\n wsPath: string;\n wsPort: number;\n wssPort: number;\n userAuthenticator: UserAuthenticationHandler;\n channelAuthorizer: ChannelAuthorizationHandler;\n\n // these are all optional parameters or overrrides. The customer can set these\n // but it's not strictly necessary\n forceTLS?: boolean;\n cluster?: string;\n disabledTransports?: Transport[];\n enabledTransports?: Transport[];\n ignoreNullOrigin?: boolean;\n nacl?: nacl;\n timelineParams?: any;\n}\n\n// getConfig mainly sets the defaults for the options that are not provided\nexport function getConfig(opts: Options, pusher): Config {\n let config: Config = {\n activityTimeout: opts.activityTimeout || Defaults.activityTimeout,\n cluster: opts.cluster || Defaults.cluster,\n httpPath: opts.httpPath || Defaults.httpPath,\n httpPort: opts.httpPort || Defaults.httpPort,\n httpsPort: opts.httpsPort || Defaults.httpsPort,\n pongTimeout: opts.pongTimeout || Defaults.pongTimeout,\n statsHost: opts.statsHost || Defaults.stats_host,\n unavailableTimeout: opts.unavailableTimeout || Defaults.unavailableTimeout,\n wsPath: opts.wsPath || Defaults.wsPath,\n wsPort: opts.wsPort || Defaults.wsPort,\n wssPort: opts.wssPort || Defaults.wssPort,\n\n enableStats: getEnableStatsConfig(opts),\n httpHost: getHttpHost(opts),\n useTLS: shouldUseTLS(opts),\n wsHost: getWebsocketHost(opts),\n\n userAuthenticator: buildUserAuthenticator(opts),\n channelAuthorizer: buildChannelAuthorizer(opts, pusher)\n };\n\n if ('disabledTransports' in opts)\n config.disabledTransports = opts.disabledTransports;\n if ('enabledTransports' in opts)\n config.enabledTransports = opts.enabledTransports;\n if ('ignoreNullOrigin' in opts)\n config.ignoreNullOrigin = opts.ignoreNullOrigin;\n if ('timelineParams' in opts) config.timelineParams = opts.timelineParams;\n if ('nacl' in opts) {\n config.nacl = opts.nacl;\n }\n\n return config;\n}\n\nfunction getHttpHost(opts: Options): string {\n if (opts.httpHost) {\n return opts.httpHost;\n }\n if (opts.cluster) {\n return `sockjs-${opts.cluster}.pusher.com`;\n }\n return Defaults.httpHost;\n}\n\nfunction getWebsocketHost(opts: Options): string {\n if (opts.wsHost) {\n return opts.wsHost;\n }\n if (opts.cluster) {\n return getWebsocketHostFromCluster(opts.cluster);\n }\n return getWebsocketHostFromCluster(Defaults.cluster);\n}\n\nfunction getWebsocketHostFromCluster(cluster: string): string {\n return `ws-${cluster}.pusher.com`;\n}\n\nfunction shouldUseTLS(opts: Options): boolean {\n if (Runtime.getProtocol() === 'https:') {\n return true;\n } else if (opts.forceTLS === false) {\n return false;\n }\n return true;\n}\n\n// if enableStats is set take the value\n// if disableStats is set take the inverse\n// otherwise default to false\nfunction getEnableStatsConfig(opts: Options): boolean {\n if ('enableStats' in opts) {\n return opts.enableStats;\n }\n if ('disableStats' in opts) {\n return !opts.disableStats;\n }\n return false;\n}\n\nfunction buildUserAuthenticator(opts: Options): UserAuthenticationHandler {\n const userAuthentication = {\n ...Defaults.userAuthentication,\n ...opts.userAuthentication\n };\n if (\n 'customHandler' in userAuthentication &&\n userAuthentication['customHandler'] != null\n ) {\n return userAuthentication['customHandler'];\n }\n\n return UserAuthenticator(userAuthentication);\n}\n\nfunction buildChannelAuth(opts: Options, pusher): ChannelAuthorizationOptions {\n let channelAuthorization: ChannelAuthorizationOptions;\n if ('channelAuthorization' in opts) {\n channelAuthorization = {\n ...Defaults.channelAuthorization,\n ...opts.channelAuthorization\n };\n } else {\n channelAuthorization = {\n transport: opts.authTransport || Defaults.authTransport,\n endpoint: opts.authEndpoint || Defaults.authEndpoint\n };\n if ('auth' in opts) {\n if ('params' in opts.auth) channelAuthorization.params = opts.auth.params;\n if ('headers' in opts.auth)\n channelAuthorization.headers = opts.auth.headers;\n }\n if ('authorizer' in opts)\n channelAuthorization.customHandler = ChannelAuthorizerProxy(\n pusher,\n channelAuthorization,\n opts.authorizer\n );\n }\n return channelAuthorization;\n}\n\nfunction buildChannelAuthorizer(\n opts: Options,\n pusher\n): ChannelAuthorizationHandler {\n const channelAuthorization = buildChannelAuth(opts, pusher);\n if (\n 'customHandler' in channelAuthorization &&\n channelAuthorization['customHandler'] != null\n ) {\n return channelAuthorization['customHandler'];\n }\n\n return ChannelAuthorizer(channelAuthorization);\n}\n","import Logger from './logger';\nimport Pusher from './pusher';\nimport EventsDispatcher from './events/dispatcher';\n\nexport default class WatchlistFacade extends EventsDispatcher {\n private pusher: Pusher;\n\n public constructor(pusher: Pusher) {\n super(function(eventName, data) {\n Logger.debug(`No callbacks on watchlist events for ${eventName}`);\n });\n\n this.pusher = pusher;\n this.bindWatchlistInternalEvent();\n }\n\n handleEvent(pusherEvent) {\n pusherEvent.data.events.forEach(watchlistEvent => {\n this.emit(watchlistEvent.name, watchlistEvent);\n });\n }\n\n private bindWatchlistInternalEvent() {\n this.pusher.connection.bind('message', pusherEvent => {\n var eventName = pusherEvent.event;\n if (eventName === 'pusher_internal:watchlist_events') {\n this.handleEvent(pusherEvent);\n }\n });\n }\n}\n","function flatPromise() {\n let resolve, reject;\n const promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return { promise, resolve, reject };\n}\n\nexport default flatPromise;\n","import Pusher from './pusher';\nimport Logger from './logger';\nimport {\n UserAuthenticationData,\n UserAuthenticationCallback\n} from './auth/options';\nimport Channel from './channels/channel';\nimport WatchlistFacade from './watchlist';\nimport EventsDispatcher from './events/dispatcher';\nimport flatPromise from './utils/flat_promise';\n\nexport default class UserFacade extends EventsDispatcher {\n pusher: Pusher;\n signin_requested: boolean = false;\n user_data: any = null;\n serverToUserChannel: Channel = null;\n signinDonePromise: Promise = null;\n watchlist: WatchlistFacade;\n private _signinDoneResolve: Function = null;\n\n public constructor(pusher: Pusher) {\n super(function(eventName, data) {\n Logger.debug('No callbacks on user for ' + eventName);\n });\n this.pusher = pusher;\n this.pusher.connection.bind('state_change', ({ previous, current }) => {\n if (previous !== 'connected' && current === 'connected') {\n this._signin();\n }\n if (previous === 'connected' && current !== 'connected') {\n this._cleanup();\n this._newSigninPromiseIfNeeded();\n }\n });\n\n this.watchlist = new WatchlistFacade(pusher);\n\n this.pusher.connection.bind('message', event => {\n var eventName = event.event;\n if (eventName === 'pusher:signin_success') {\n this._onSigninSuccess(event.data);\n }\n if (\n this.serverToUserChannel &&\n this.serverToUserChannel.name === event.channel\n ) {\n this.serverToUserChannel.handleEvent(event);\n }\n });\n }\n\n public signin() {\n if (this.signin_requested) {\n return;\n }\n\n this.signin_requested = true;\n this._signin();\n }\n\n private _signin() {\n if (!this.signin_requested) {\n return;\n }\n\n this._newSigninPromiseIfNeeded();\n\n if (this.pusher.connection.state !== 'connected') {\n // Signin will be attempted when the connection is connected\n return;\n }\n\n this.pusher.config.userAuthenticator(\n {\n socketId: this.pusher.connection.socket_id\n },\n this._onAuthorize\n );\n }\n\n private _onAuthorize: UserAuthenticationCallback = (\n err,\n authData: UserAuthenticationData\n ) => {\n if (err) {\n Logger.warn(`Error during signin: ${err}`);\n this._cleanup();\n return;\n }\n\n this.pusher.send_event('pusher:signin', {\n auth: authData.auth,\n user_data: authData.user_data\n });\n\n // Later when we get pusher:singin_success event, the user will be marked as signed in\n };\n\n private _onSigninSuccess(data: any) {\n try {\n this.user_data = JSON.parse(data.user_data);\n } catch (e) {\n Logger.error(`Failed parsing user data after signin: ${data.user_data}`);\n this._cleanup();\n return;\n }\n\n if (typeof this.user_data.id !== 'string' || this.user_data.id === '') {\n Logger.error(\n `user_data doesn't contain an id. user_data: ${this.user_data}`\n );\n this._cleanup();\n return;\n }\n\n // Signin succeeded\n this._signinDoneResolve();\n this._subscribeChannels();\n }\n\n private _subscribeChannels() {\n const ensure_subscribed = channel => {\n if (channel.subscriptionPending && channel.subscriptionCancelled) {\n channel.reinstateSubscription();\n } else if (\n !channel.subscriptionPending &&\n this.pusher.connection.state === 'connected'\n ) {\n channel.subscribe();\n }\n };\n\n this.serverToUserChannel = new Channel(\n `#server-to-user-${this.user_data.id}`,\n this.pusher\n );\n this.serverToUserChannel.bind_global((eventName, data) => {\n if (\n eventName.indexOf('pusher_internal:') === 0 ||\n eventName.indexOf('pusher:') === 0\n ) {\n // ignore internal events\n return;\n }\n this.emit(eventName, data);\n });\n ensure_subscribed(this.serverToUserChannel);\n }\n\n private _cleanup() {\n this.user_data = null;\n if (this.serverToUserChannel) {\n this.serverToUserChannel.unbind_all();\n this.serverToUserChannel.disconnect();\n this.serverToUserChannel = null;\n }\n\n if (this.signin_requested) {\n // If signin is in progress and cleanup is called,\n // Mark the current signin process as done.\n this._signinDoneResolve();\n }\n }\n\n private _newSigninPromiseIfNeeded() {\n if (!this.signin_requested) {\n return;\n }\n\n // If there is a promise and it is not resolved, return without creating a new one.\n if (this.signinDonePromise && !(this.signinDonePromise as any).done) {\n return;\n }\n\n // This promise is never rejected.\n // It gets resolved when the signin process is done whether it failed or succeeded\n const { promise, resolve, reject: _ } = flatPromise();\n (promise as any).done = false;\n const setDone = () => {\n (promise as any).done = true;\n };\n promise.then(setDone).catch(setDone);\n this.signinDonePromise = promise;\n this._signinDoneResolve = resolve;\n }\n}\n","import AbstractRuntime from '../runtimes/interface';\nimport Runtime from 'runtime';\nimport Util from './util';\nimport * as Collections from './utils/collections';\nimport Channels from './channels/channels';\nimport Channel from './channels/channel';\nimport { default as EventsDispatcher } from './events/dispatcher';\nimport Timeline from './timeline/timeline';\nimport TimelineSender from './timeline/timeline_sender';\nimport TimelineLevel from './timeline/level';\nimport { defineTransport } from './strategies/strategy_builder';\nimport ConnectionManager from './connection/connection_manager';\nimport ConnectionManagerOptions from './connection/connection_manager_options';\nimport { PeriodicTimer } from './utils/timers';\nimport Defaults from './defaults';\nimport * as DefaultConfig from './config';\nimport Logger from './logger';\nimport Factory from './utils/factory';\nimport UrlStore from 'core/utils/url_store';\nimport { Options } from './options';\nimport { Config, getConfig } from './config';\nimport StrategyOptions from './strategies/strategy_options';\nimport UserFacade from './user';\n\nexport default class Pusher {\n /* STATIC PROPERTIES */\n static instances: Pusher[] = [];\n static isReady: boolean = false;\n static logToConsole: boolean = false;\n\n // for jsonp\n static Runtime: AbstractRuntime = Runtime;\n static ScriptReceivers: any = (Runtime).ScriptReceivers;\n static DependenciesReceivers: any = (Runtime).DependenciesReceivers;\n static auth_callbacks: any = (Runtime).auth_callbacks;\n\n static ready() {\n Pusher.isReady = true;\n for (var i = 0, l = Pusher.instances.length; i < l; i++) {\n Pusher.instances[i].connect();\n }\n }\n\n static log: (message: any) => void;\n\n private static getClientFeatures(): string[] {\n return Collections.keys(\n Collections.filterObject({ ws: Runtime.Transports.ws }, function(t) {\n return t.isSupported({});\n })\n );\n }\n\n /* INSTANCE PROPERTIES */\n key: string;\n config: Config;\n channels: Channels;\n global_emitter: EventsDispatcher;\n sessionID: number;\n timeline: Timeline;\n timelineSender: TimelineSender;\n connection: ConnectionManager;\n timelineSenderTimer: PeriodicTimer;\n user: UserFacade;\n constructor(app_key: string, options?: Options) {\n checkAppKey(app_key);\n options = options || {};\n if (!options.cluster && !(options.wsHost || options.httpHost)) {\n let suffix = UrlStore.buildLogSuffix('javascriptQuickStart');\n Logger.warn(\n `You should always specify a cluster when connecting. ${suffix}`\n );\n }\n if ('disableStats' in options) {\n Logger.warn(\n 'The disableStats option is deprecated in favor of enableStats'\n );\n }\n\n this.key = app_key;\n this.config = getConfig(options, this);\n\n this.channels = Factory.createChannels();\n this.global_emitter = new EventsDispatcher();\n this.sessionID = Runtime.randomInt(1000000000);\n\n this.timeline = new Timeline(this.key, this.sessionID, {\n cluster: this.config.cluster,\n features: Pusher.getClientFeatures(),\n params: this.config.timelineParams || {},\n limit: 50,\n level: TimelineLevel.INFO,\n version: Defaults.VERSION\n });\n if (this.config.enableStats) {\n this.timelineSender = Factory.createTimelineSender(this.timeline, {\n host: this.config.statsHost,\n path: '/timeline/v2/' + Runtime.TimelineTransport.name\n });\n }\n\n var getStrategy = (options: StrategyOptions) => {\n return Runtime.getDefaultStrategy(this.config, options, defineTransport);\n };\n\n this.connection = Factory.createConnectionManager(this.key, {\n getStrategy: getStrategy,\n timeline: this.timeline,\n activityTimeout: this.config.activityTimeout,\n pongTimeout: this.config.pongTimeout,\n unavailableTimeout: this.config.unavailableTimeout,\n useTLS: Boolean(this.config.useTLS)\n });\n\n this.connection.bind('connected', () => {\n this.subscribeAll();\n if (this.timelineSender) {\n this.timelineSender.send(this.connection.isUsingTLS());\n }\n });\n\n this.connection.bind('message', event => {\n var eventName = event.event;\n var internal = eventName.indexOf('pusher_internal:') === 0;\n if (event.channel) {\n var channel = this.channel(event.channel);\n if (channel) {\n channel.handleEvent(event);\n }\n }\n // Emit globally [deprecated]\n if (!internal) {\n this.global_emitter.emit(event.event, event.data);\n }\n });\n this.connection.bind('connecting', () => {\n this.channels.disconnect();\n });\n this.connection.bind('disconnected', () => {\n this.channels.disconnect();\n });\n this.connection.bind('error', err => {\n Logger.warn(err);\n });\n\n Pusher.instances.push(this);\n this.timeline.info({ instances: Pusher.instances.length });\n\n this.user = new UserFacade(this);\n\n if (Pusher.isReady) {\n this.connect();\n }\n }\n\n channel(name: string): Channel {\n return this.channels.find(name);\n }\n\n allChannels(): Channel[] {\n return this.channels.all();\n }\n\n connect() {\n this.connection.connect();\n\n if (this.timelineSender) {\n if (!this.timelineSenderTimer) {\n var usingTLS = this.connection.isUsingTLS();\n var timelineSender = this.timelineSender;\n this.timelineSenderTimer = new PeriodicTimer(60000, function() {\n timelineSender.send(usingTLS);\n });\n }\n }\n }\n\n disconnect() {\n this.connection.disconnect();\n\n if (this.timelineSenderTimer) {\n this.timelineSenderTimer.ensureAborted();\n this.timelineSenderTimer = null;\n }\n }\n\n bind(event_name: string, callback: Function, context?: any): Pusher {\n this.global_emitter.bind(event_name, callback, context);\n return this;\n }\n\n unbind(event_name?: string, callback?: Function, context?: any): Pusher {\n this.global_emitter.unbind(event_name, callback, context);\n return this;\n }\n\n bind_global(callback: Function): Pusher {\n this.global_emitter.bind_global(callback);\n return this;\n }\n\n unbind_global(callback?: Function): Pusher {\n this.global_emitter.unbind_global(callback);\n return this;\n }\n\n unbind_all(callback?: Function): Pusher {\n this.global_emitter.unbind_all();\n return this;\n }\n\n subscribeAll() {\n var channelName;\n for (channelName in this.channels.channels) {\n if (this.channels.channels.hasOwnProperty(channelName)) {\n this.subscribe(channelName);\n }\n }\n }\n\n subscribe(channel_name: string) {\n var channel = this.channels.add(channel_name, this);\n if (channel.subscriptionPending && channel.subscriptionCancelled) {\n channel.reinstateSubscription();\n } else if (\n !channel.subscriptionPending &&\n this.connection.state === 'connected'\n ) {\n channel.subscribe();\n }\n return channel;\n }\n\n unsubscribe(channel_name: string) {\n var channel = this.channels.find(channel_name);\n if (channel && channel.subscriptionPending) {\n channel.cancelSubscription();\n } else {\n channel = this.channels.remove(channel_name);\n if (channel && channel.subscribed) {\n channel.unsubscribe();\n }\n }\n }\n\n send_event(event_name: string, data: any, channel?: string) {\n return this.connection.send_event(event_name, data, channel);\n }\n\n shouldUseTLS(): boolean {\n return this.config.useTLS;\n }\n\n signin() {\n this.user.signin();\n }\n}\n\nfunction checkAppKey(key) {\n if (key === null || key === undefined) {\n throw 'You must pass your app key when you instantiate Pusher.';\n }\n}\n\nRuntime.setup(Pusher);\n","import React, { useState } from \"react\";\nimport queryString from \"query-string\";\n\nimport \"./FakeHelperOptionsModal.scss\";\nimport DebugJSON from \"../DebugJSON/DebugJSON.js\";\n\nconst generateRandomUserId = () => {\n return `FAKE_${Math.round(Math.random() * 99999)}`;\n};\n\nconst FakeHelperOptionsModal = () => {\n const savedOptions = localStorage.getItem(\"fakeHelperOptions\")\n ? JSON.parse(localStorage.getItem(\"fakeHelperOptions\"))\n : {};\n const [options, setOptions] = useState({\n channel_id: savedOptions.channel_id || \"DEBUG_CHANNEL\",\n user_id: savedOptions.user_id || generateRandomUserId(),\n role: \"viewer\",\n is_linked: true,\n });\n\n const handleChangeInput = (e) => {\n setOptions((options) => ({\n ...options,\n [e.target.name]:\n e.target.type === \"checkbox\" ? e.target.checked : e.target.value,\n }));\n };\n\n const handleGenerateRandomUserId = () => {\n setOptions((options) => ({\n ...options,\n user_id: generateRandomUserId(),\n }));\n };\n\n const handleSaveChanges = () => {\n window.location.search = queryString.stringify(options);\n };\n\n return (\n
\n

Testing options

\n\n

\n \n The extension is being tested outside of Twitch. To continue testing,\n please enter the following options to simulate the extension being\n used by a Twitch viewer or broadcaster.\n \n

\n\n

\n \n \n To change these options, press F2 while the extension is active.\n \n \n

\n\n \n\n \n\n \n\n

Identity

\n \n\n
\n
\n \n
\n
\n );\n};\n\nexport default FakeHelperOptionsModal;\n","import React from \"react\";\n\nconst DebugJSON = ({ value }) => {\n console.log(value);\n return
{JSON.stringify(value, null, 2)}
;\n};\n\nexport default DebugJSON;\n","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport { useState, useEffect, useContext, useRef } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context';\nimport { warnOnce, loadNamespaces, hasLoadedNamespace } from './utils';\n\nvar usePrevious = function usePrevious(value, ignore) {\n var ref = useRef();\n useEffect(function () {\n ref.current = ignore ? ref.current : value;\n }, [value, ignore]);\n return ref.current;\n};\n\nexport function useTranslation(ns) {\n var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var i18nFromProps = props.i18n;\n\n var _ref = useContext(I18nContext) || {},\n i18nFromContext = _ref.i18n,\n defaultNSFromContext = _ref.defaultNS;\n\n var i18n = i18nFromProps || i18nFromContext || getI18n();\n if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n\n if (!i18n) {\n warnOnce('You will need to pass in an i18next instance by using initReactI18next');\n\n var notReadyT = function notReadyT(k) {\n return Array.isArray(k) ? k[k.length - 1] : k;\n };\n\n var retNotReady = [notReadyT, {}, false];\n retNotReady.t = notReadyT;\n retNotReady.i18n = {};\n retNotReady.ready = false;\n return retNotReady;\n }\n\n if (i18n.options.react && i18n.options.react.wait !== undefined) warnOnce('It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n\n var i18nOptions = _objectSpread(_objectSpread(_objectSpread({}, getDefaults()), i18n.options.react), props);\n\n var useSuspense = i18nOptions.useSuspense,\n keyPrefix = i18nOptions.keyPrefix;\n var namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;\n namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];\n if (i18n.reportNamespaces.addUsedNamespaces) i18n.reportNamespaces.addUsedNamespaces(namespaces);\n var ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(function (n) {\n return hasLoadedNamespace(n, i18n, i18nOptions);\n });\n\n function getT() {\n return i18n.getFixedT(null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n }\n\n var _useState = useState(getT),\n _useState2 = _slicedToArray(_useState, 2),\n t = _useState2[0],\n setT = _useState2[1];\n\n var joinedNS = namespaces.join();\n var previousJoinedNS = usePrevious(joinedNS);\n var isMounted = useRef(true);\n useEffect(function () {\n var bindI18n = i18nOptions.bindI18n,\n bindI18nStore = i18nOptions.bindI18nStore;\n isMounted.current = true;\n\n if (!ready && !useSuspense) {\n loadNamespaces(i18n, namespaces, function () {\n if (isMounted.current) setT(getT);\n });\n }\n\n if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {\n setT(getT);\n }\n\n function boundReset() {\n if (isMounted.current) setT(getT);\n }\n\n if (bindI18n && i18n) i18n.on(bindI18n, boundReset);\n if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset);\n return function () {\n isMounted.current = false;\n if (bindI18n && i18n) bindI18n.split(' ').forEach(function (e) {\n return i18n.off(e, boundReset);\n });\n if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(function (e) {\n return i18n.store.off(e, boundReset);\n });\n };\n }, [i18n, joinedNS]);\n var isInitial = useRef(true);\n useEffect(function () {\n if (isMounted.current && !isInitial.current) {\n setT(getT);\n }\n\n isInitial.current = false;\n }, [i18n, keyPrefix]);\n var ret = [t, i18n, ready];\n ret.t = t;\n ret.i18n = i18n;\n ret.ready = ready;\n if (ready) return ret;\n if (!ready && !useSuspense) return ret;\n throw new Promise(function (resolve) {\n loadNamespaces(i18n, namespaces, function () {\n resolve();\n });\n });\n}","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\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}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export function warn() {\n if (console && console.warn) {\n var _console;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (typeof args[0] === 'string') args[0] = \"react-i18next:: \".concat(args[0]);\n\n (_console = console).warn.apply(_console, args);\n }\n}\nvar alreadyWarned = {};\nexport function warnOnce() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (typeof args[0] === 'string' && alreadyWarned[args[0]]) return;\n if (typeof args[0] === 'string') alreadyWarned[args[0]] = new Date();\n warn.apply(void 0, args);\n}\nexport function loadNamespaces(i18n, ns, cb) {\n i18n.loadNamespaces(ns, function () {\n if (i18n.isInitialized) {\n cb();\n } else {\n var initialized = function initialized() {\n setTimeout(function () {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n\n i18n.on('initialized', initialized);\n }\n });\n}\n\nfunction oldI18nextHasLoadedNamespace(ns, i18n) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var lng = i18n.languages[0];\n var fallbackLng = i18n.options ? i18n.options.fallbackLng : false;\n var lastLng = i18n.languages[i18n.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = i18n.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n return loadState === -1 || loadState === 2;\n };\n\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18n.services.backendConnector.backend && i18n.isLanguageChangingTo && !loadNotPending(i18n.isLanguageChangingTo, ns)) return false;\n if (i18n.hasResourceBundle(lng, ns)) return true;\n if (!i18n.services.backendConnector.backend || i18n.options.resources && !i18n.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n}\n\nexport function hasLoadedNamespace(ns, i18n) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce('i18n.languages were undefined or empty', i18n.languages);\n return true;\n }\n\n var isNewerI18next = i18n.options.ignoreJSONStructure !== undefined;\n\n if (!isNewerI18next) {\n return oldI18nextHasLoadedNamespace(ns, i18n, options);\n }\n\n return i18n.hasLoadedNamespace(ns, {\n precheck: function precheck(i18nInstance, loadNotPending) {\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n }\n });\n}\nexport function getDisplayName(Component) {\n return Component.displayName || Component.name || (typeof Component === 'string' && Component.length > 0 ? Component : 'Unknown');\n}","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import React from \"react\";\n\nimport \"./EmbellishedHeading.scss\";\n\nconst EmbellishedHeading = ({ children }) => {\n return
{children}
;\n};\n\nexport default EmbellishedHeading;\n","import classNames from \"classnames\";\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\n\nimport styles from \"./Stack.module.scss\";\n\nconst getSpacingClassForSpacingUnit = (spacingUnit) => {\n switch (spacingUnit) {\n case \"extra-small\":\n return styles.stackSpacingExtraSmall;\n case \"small\":\n return styles.stackSpacingSmall;\n case \"large\":\n return styles.stackSpacingLarge;\n case \"default\":\n return styles.stackSpacingDefault;\n }\n};\n\nconst Stack = ({\n as = \"div\",\n children,\n className,\n horizontal,\n vertical,\n spacing = \"default\",\n ...rest\n}) => {\n const classes = classNames(\n styles.stack,\n {\n [styles.stackHorizontal]: horizontal,\n [styles.stackVertical]: vertical,\n },\n getSpacingClassForSpacingUnit(spacing),\n className\n );\n\n return React.createElement(as, {\n className: classes,\n children,\n ...rest,\n });\n};\n\nStack.propTypes = {\n className: PropTypes.string,\n horizontal: PropTypes.bool,\n vertical: PropTypes.bool,\n spacing: PropTypes.oneOf([\"extra-small\", \"small\", \"default\", \"large\"]),\n};\n\nexport default Stack;\n","$stackSpacing: (\n extra-small: 0.25rem,\n small: 0.5rem,\n default: 1rem,\n large: 2rem,\n);\n\n.stack {\n}\n\n.stackVertical {\n &.stackSpacingExtraSmall {\n & > *:not(:last-child) {\n margin-bottom: map_get($stackSpacing, \"extra-small\");\n }\n }\n\n &.stackSpacingSmall {\n & > *:not(:last-child) {\n margin-bottom: map_get($stackSpacing, \"small\");\n }\n }\n\n &.stackSpacingLarge {\n & > *:not(:last-child) {\n margin-bottom: map_get($stackSpacing, \"large\");\n }\n }\n\n &.stackSpacingDefault {\n & > *:not(:last-child) {\n margin-bottom: map_get($stackSpacing, \"default\");\n }\n }\n}\n\n.stackHorizontal {\n &.stackSpacingExtraSmall {\n & > *:not(:last-child) {\n margin-right: map_get($stackSpacing, \"extra-small\");\n }\n }\n\n &.stackSpacingSmall {\n & > *:not(:last-child) {\n margin-right: map_get($stackSpacing, \"small\");\n }\n }\n\n &.stackSpacingDefault {\n & > *:not(:last-child) {\n margin-right: map_get($stackSpacing, \"default\");\n }\n }\n}"],"names":[],"version":3,"file":"video_overlay.5ae199e9.js.map"}