@phenixrts/sdk 2022.0.2 → 2022.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/debug/channels.js +277 -135
  2. package/dist/debug/full.js +277 -135
  3. package/dist/debug/groups.js +1 -1
  4. package/dist/debug/messaging.js +1 -1
  5. package/dist/debug/publish.js +1 -1
  6. package/dist/debug.private/channels.js +277 -135
  7. package/dist/debug.private/full.js +277 -135
  8. package/dist/debug.private/groups.js +1 -1
  9. package/dist/debug.private/messaging.js +1 -1
  10. package/dist/debug.private/publish.js +1 -1
  11. package/dist/es5.debug.private/channels.js +276 -135
  12. package/dist/es5.debug.private/full.js +276 -135
  13. package/dist/es5.debug.private/groups.js +1 -1
  14. package/dist/es5.debug.private/messaging.js +1 -1
  15. package/dist/es5.debug.private/publish.js +1 -1
  16. package/dist/legacy.debug/channels.js +277 -135
  17. package/dist/legacy.debug/full.js +277 -135
  18. package/dist/legacy.debug/groups.js +1 -1
  19. package/dist/legacy.debug/messaging.js +1 -1
  20. package/dist/legacy.debug/publish.js +1 -1
  21. package/dist/legacy.debug.private/channels.js +276 -135
  22. package/dist/legacy.debug.private/full.js +276 -135
  23. package/dist/legacy.debug.private/groups.js +1 -1
  24. package/dist/legacy.debug.private/messaging.js +1 -1
  25. package/dist/legacy.debug.private/publish.js +1 -1
  26. package/dist/legacy.min/channels.js +1 -1
  27. package/dist/legacy.min/channels.js.map +1 -1
  28. package/dist/legacy.min/full.js +1 -1
  29. package/dist/legacy.min/full.js.map +1 -1
  30. package/dist/legacy.min/groups.js +1 -1
  31. package/dist/legacy.min/messaging.js +1 -1
  32. package/dist/legacy.min/publish.js +1 -1
  33. package/dist/min/channels.js +1 -1
  34. package/dist/min/channels.js.map +1 -1
  35. package/dist/min/full.js +1 -1
  36. package/dist/min/full.js.map +1 -1
  37. package/dist/min/groups.js +1 -1
  38. package/dist/min/messaging.js +1 -1
  39. package/dist/min/publish.js +1 -1
  40. package/dist/min.private/channels.js +1 -1
  41. package/dist/min.private/channels.js.map +1 -1
  42. package/dist/min.private/full.js +1 -1
  43. package/dist/min.private/full.js.map +1 -1
  44. package/dist/min.private/groups.js +1 -1
  45. package/dist/min.private/messaging.js +1 -1
  46. package/dist/min.private/publish.js +1 -1
  47. package/dist/types/rtc/RtcConnectionMonitor.d.ts +1 -0
  48. package/dist/types/sdk/channels/Channel.d.ts +4 -2
  49. package/dist/types/sdk/channels/ChannelContext.d.ts +1 -0
  50. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://phenix/webpack/universalModuleDefinition","webpack://phenix/./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://phenix/./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack://phenix/./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://phenix/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://phenix/./node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack://phenix/./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://phenix/./node_modules/@babel/runtime/helpers/createClass.js","webpack://phenix/./node_modules/@babel/runtime/helpers/defineProperty.js","webpack://phenix/./node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack://phenix/./node_modules/@babel/runtime/helpers/inherits.js","webpack://phenix/./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://phenix/./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack://phenix/./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack://phenix/./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://phenix/./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack://phenix/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://phenix/./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack://phenix/./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://phenix/./node_modules/@babel/runtime/helpers/typeof.js","webpack://phenix/./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://phenix/./node_modules/@babel/runtime/regenerator/index.js","webpack://phenix/./src/dom/ApplicationActivityMonitor.ts","webpack://phenix/./src/dom/BrowserDetector.ts","webpack://phenix/./src/dom/ConfigurationParameterReader.ts","webpack://phenix/./src/dom/PrivacyMode.ts","webpack://phenix/./src/lang/Disposable.ts","webpack://phenix/./src/lang/DisposableList.ts","webpack://phenix/./src/lang/Strings.ts","webpack://phenix/./src/lang/assertUnreachable.ts","webpack://phenix/./src/logger/Appenders.ts","webpack://phenix/./src/logger/ConsoleAppender.ts","webpack://phenix/./src/logger/Logger.ts","webpack://phenix/./src/logger/LoggerDefaults.ts","webpack://phenix/./src/logger/LoggerFactory.ts","webpack://phenix/./src/logger/LoggingLevelMapping.ts","webpack://phenix/./src/logger/LoggingThreshold.ts","webpack://phenix/./src/metrics/MetricType.ts","webpack://phenix/./src/metrics/MetricsConfiguration.ts","webpack://phenix/./src/metrics/MetricsFactory.ts","webpack://phenix/./src/metrics/MetricsService.ts","webpack://phenix/./src/metrics/MetricsType.ts","webpack://phenix/./src/metrics/TelemetricLevelMapping.ts","webpack://phenix/./src/metrics/TelemetryDefault.ts","webpack://phenix/./src/promise/PromiseHandler.ts","webpack://phenix/./src/promise/Promise.ts","webpack://phenix/./src/rtc/VanillaPeerConnection.ts","webpack://phenix/./src/rtc/VanillaPeerConnectionFactory.ts","webpack://phenix/./src/rx/ReadOnlySubject.ts","webpack://phenix/./src/rx/Subject.ts","webpack://phenix/./src/sdk/Environment.ts","webpack://phenix/./src/sdk/SDK.ts","webpack://phenix/./src/sdk/TelemetryUrl.ts","webpack://phenix/./src/sdk/channels/ChannelState.ts","webpack://phenix/./src/sdk/api/SetTemporaryMaximalBitrate.ts","webpack://phenix/./src/video/Dimension.ts","webpack://phenix/./src/time/Duration.ts","webpack://phenix/./src/video/VideoTelemetry.ts","webpack://phenix/./src/dom/StreamSetupListener.ts","webpack://phenix/./src/dom/NetworkMonitor.ts","webpack://phenix/./src/video/SessionTelemetry.ts","webpack://phenix/./src/sdk/channels/ChannelContext.ts","webpack://phenix/./src/sdk/discovery/BitrateModeMapping.ts","webpack://phenix/./src/sdk/discovery/BitrateStateMapping.ts","webpack://phenix/./src/sdk/discovery/EndPoint.ts","webpack://phenix/./src/sdk/discovery/DiscoveryService.ts","webpack://phenix/./src/sdk/discovery/Discovery.ts","webpack://phenix/./src/sdk/streaming/NetworkStates.ts","webpack://phenix/./src/sdk/streaming/FlashPlayer.ts","webpack://phenix/./src/sdk/streaming/PhenixFlashVideo.ts","webpack://phenix/./src/sdk/streaming/FlashRenderer.ts","webpack://phenix/./src/sdk/streaming/RtmpStream.ts","webpack://phenix/./src/sdk/streaming/WebPlayer.ts","webpack://phenix/./src/sdk/streaming/ShakaPlayer.ts","webpack://phenix/./src/sdk/streaming/HlsPlayer.ts","webpack://phenix/./src/sdk/streaming/LiveStreaming.ts","webpack://phenix/./src/sdk/streaming/ChunkedStream.ts","webpack://phenix/./src/rtc/PeerConnectionService.ts","webpack://phenix/./src/rtc/SdpParser.ts","webpack://phenix/./src/rtc/RtcConnectionMonitor.ts","webpack://phenix/./src/sdk/streaming/RealTimeStream.ts","webpack://phenix/./src/sdk/streaming/LegacyStreamFactory.ts","webpack://phenix/./src/sdk/channels/Channel.ts","webpack://phenix/./src/sdk/channels/Channels.ts","webpack://phenix/./src/sdk/channels/index.ts","webpack://phenix/./src/sdk/defaults.ts","webpack://phenix/./src/sdk/discovery/DiscoveryUri.ts","webpack://phenix/./src/sdk/edgeAuth/EdgeAuth.ts","webpack://phenix/./src/sdk/feature/FeatureEnablement.ts","webpack://phenix/./src/sdk/version/VersionManager.ts","webpack://phenix/./src/telemetry/TelemetryApender.ts","webpack://phenix/./src/telemetry/TelemetryConfiguration.ts","webpack://phenix/./src/telemetry/TelemetryService.ts","webpack://phenix/./node_modules/core-js/internals/a-function.js","webpack://phenix/./node_modules/core-js/internals/a-possible-prototype.js","webpack://phenix/./node_modules/core-js/internals/add-to-unscopables.js","webpack://phenix/./node_modules/core-js/internals/advance-string-index.js","webpack://phenix/./node_modules/core-js/internals/an-instance.js","webpack://phenix/./node_modules/core-js/internals/an-object.js","webpack://phenix/./node_modules/core-js/internals/array-fill.js","webpack://phenix/./node_modules/core-js/internals/array-for-each.js","webpack://phenix/./node_modules/core-js/internals/array-from.js","webpack://phenix/./node_modules/core-js/internals/array-includes.js","webpack://phenix/./node_modules/core-js/internals/array-iteration.js","webpack://phenix/./node_modules/core-js/internals/array-method-has-species-support.js","webpack://phenix/./node_modules/core-js/internals/array-method-is-strict.js","webpack://phenix/./node_modules/core-js/internals/array-method-uses-to-length.js","webpack://phenix/./node_modules/core-js/internals/array-reduce.js","webpack://phenix/./node_modules/core-js/internals/array-species-create.js","webpack://phenix/./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack://phenix/./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack://phenix/./node_modules/core-js/internals/classof-raw.js","webpack://phenix/./node_modules/core-js/internals/classof.js","webpack://phenix/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://phenix/./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack://phenix/./node_modules/core-js/internals/correct-prototype-getter.js","webpack://phenix/./node_modules/core-js/internals/create-iterator-constructor.js","webpack://phenix/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://phenix/./node_modules/core-js/internals/create-property-descriptor.js","webpack://phenix/./node_modules/core-js/internals/create-property.js","webpack://phenix/./node_modules/core-js/internals/date-to-iso-string.js","webpack://phenix/./node_modules/core-js/internals/define-iterator.js","webpack://phenix/./node_modules/core-js/internals/define-well-known-symbol.js","webpack://phenix/./node_modules/core-js/internals/descriptors.js","webpack://phenix/./node_modules/core-js/internals/document-create-element.js","webpack://phenix/./node_modules/core-js/internals/dom-iterables.js","webpack://phenix/./node_modules/core-js/internals/engine-is-ios.js","webpack://phenix/./node_modules/core-js/internals/engine-is-node.js","webpack://phenix/./node_modules/core-js/internals/engine-user-agent.js","webpack://phenix/./node_modules/core-js/internals/engine-v8-version.js","webpack://phenix/./node_modules/core-js/internals/enum-bug-keys.js","webpack://phenix/./node_modules/core-js/internals/export.js","webpack://phenix/./node_modules/core-js/internals/fails.js","webpack://phenix/./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack://phenix/./node_modules/core-js/internals/function-bind-context.js","webpack://phenix/./node_modules/core-js/internals/function-bind.js","webpack://phenix/./node_modules/core-js/internals/get-built-in.js","webpack://phenix/./node_modules/core-js/internals/get-iterator-method.js","webpack://phenix/./node_modules/core-js/internals/get-iterator.js","webpack://phenix/./node_modules/core-js/internals/global.js","webpack://phenix/./node_modules/core-js/internals/has.js","webpack://phenix/./node_modules/core-js/internals/hidden-keys.js","webpack://phenix/./node_modules/core-js/internals/host-report-errors.js","webpack://phenix/./node_modules/core-js/internals/html.js","webpack://phenix/./node_modules/core-js/internals/ie8-dom-define.js","webpack://phenix/./node_modules/core-js/internals/indexed-object.js","webpack://phenix/./node_modules/core-js/internals/inherit-if-required.js","webpack://phenix/./node_modules/core-js/internals/inspect-source.js","webpack://phenix/./node_modules/core-js/internals/internal-state.js","webpack://phenix/./node_modules/core-js/internals/is-array-iterator-method.js","webpack://phenix/./node_modules/core-js/internals/is-array.js","webpack://phenix/./node_modules/core-js/internals/is-forced.js","webpack://phenix/./node_modules/core-js/internals/is-object.js","webpack://phenix/./node_modules/core-js/internals/is-pure.js","webpack://phenix/./node_modules/core-js/internals/is-regexp.js","webpack://phenix/./node_modules/core-js/internals/iterate.js","webpack://phenix/./node_modules/core-js/internals/iterator-close.js","webpack://phenix/./node_modules/core-js/internals/iterators-core.js","webpack://phenix/./node_modules/core-js/internals/iterators.js","webpack://phenix/./node_modules/core-js/internals/microtask.js","webpack://phenix/./node_modules/core-js/internals/native-promise-constructor.js","webpack://phenix/./node_modules/core-js/internals/native-symbol.js","webpack://phenix/./node_modules/core-js/internals/native-url.js","webpack://phenix/./node_modules/core-js/internals/native-weak-map.js","webpack://phenix/./node_modules/core-js/internals/new-promise-capability.js","webpack://phenix/./node_modules/core-js/internals/not-a-regexp.js","webpack://phenix/./node_modules/core-js/internals/number-parse-int.js","webpack://phenix/./node_modules/core-js/internals/object-assign.js","webpack://phenix/./node_modules/core-js/internals/object-create.js","webpack://phenix/./node_modules/core-js/internals/object-define-properties.js","webpack://phenix/./node_modules/core-js/internals/object-define-property.js","webpack://phenix/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://phenix/./node_modules/core-js/internals/object-get-own-property-names-external.js","webpack://phenix/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://phenix/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://phenix/./node_modules/core-js/internals/object-get-prototype-of.js","webpack://phenix/./node_modules/core-js/internals/object-keys-internal.js","webpack://phenix/./node_modules/core-js/internals/object-keys.js","webpack://phenix/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://phenix/./node_modules/core-js/internals/object-set-prototype-of.js","webpack://phenix/./node_modules/core-js/internals/object-to-array.js","webpack://phenix/./node_modules/core-js/internals/object-to-string.js","webpack://phenix/./node_modules/core-js/internals/own-keys.js","webpack://phenix/./node_modules/core-js/internals/path.js","webpack://phenix/./node_modules/core-js/internals/perform.js","webpack://phenix/./node_modules/core-js/internals/promise-resolve.js","webpack://phenix/./node_modules/core-js/internals/redefine-all.js","webpack://phenix/./node_modules/core-js/internals/redefine.js","webpack://phenix/./node_modules/core-js/internals/regexp-exec-abstract.js","webpack://phenix/./node_modules/core-js/internals/regexp-exec.js","webpack://phenix/./node_modules/core-js/internals/regexp-flags.js","webpack://phenix/./node_modules/core-js/internals/regexp-sticky-helpers.js","webpack://phenix/./node_modules/core-js/internals/require-object-coercible.js","webpack://phenix/./node_modules/core-js/internals/same-value.js","webpack://phenix/./node_modules/core-js/internals/set-global.js","webpack://phenix/./node_modules/core-js/internals/set-species.js","webpack://phenix/./node_modules/core-js/internals/set-to-string-tag.js","webpack://phenix/./node_modules/core-js/internals/shared-key.js","webpack://phenix/./node_modules/core-js/internals/shared-store.js","webpack://phenix/./node_modules/core-js/internals/shared.js","webpack://phenix/./node_modules/core-js/internals/species-constructor.js","webpack://phenix/./node_modules/core-js/internals/string-multibyte.js","webpack://phenix/./node_modules/core-js/internals/string-pad-webkit-bug.js","webpack://phenix/./node_modules/core-js/internals/string-pad.js","webpack://phenix/./node_modules/core-js/internals/string-punycode-to-ascii.js","webpack://phenix/./node_modules/core-js/internals/string-repeat.js","webpack://phenix/./node_modules/core-js/internals/string-trim.js","webpack://phenix/./node_modules/core-js/internals/task.js","webpack://phenix/./node_modules/core-js/internals/to-absolute-index.js","webpack://phenix/./node_modules/core-js/internals/to-indexed-object.js","webpack://phenix/./node_modules/core-js/internals/to-integer.js","webpack://phenix/./node_modules/core-js/internals/to-length.js","webpack://phenix/./node_modules/core-js/internals/to-object.js","webpack://phenix/./node_modules/core-js/internals/to-primitive.js","webpack://phenix/./node_modules/core-js/internals/to-string-tag-support.js","webpack://phenix/./node_modules/core-js/internals/uid.js","webpack://phenix/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://phenix/./node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack://phenix/./node_modules/core-js/internals/well-known-symbol.js","webpack://phenix/./node_modules/core-js/internals/whitespaces.js","webpack://phenix/./node_modules/core-js/modules/es.array.concat.js","webpack://phenix/./node_modules/core-js/modules/es.array.fill.js","webpack://phenix/./node_modules/core-js/modules/es.array.filter.js","webpack://phenix/./node_modules/core-js/modules/es.array.find-index.js","webpack://phenix/./node_modules/core-js/modules/es.array.find.js","webpack://phenix/./node_modules/core-js/modules/es.array.for-each.js","webpack://phenix/./node_modules/core-js/modules/es.array.includes.js","webpack://phenix/./node_modules/core-js/modules/es.array.index-of.js","webpack://phenix/./node_modules/core-js/modules/es.array.is-array.js","webpack://phenix/./node_modules/core-js/modules/es.array.iterator.js","webpack://phenix/./node_modules/core-js/modules/es.array.join.js","webpack://phenix/./node_modules/core-js/modules/es.array.map.js","webpack://phenix/./node_modules/core-js/modules/es.array.reduce.js","webpack://phenix/./node_modules/core-js/modules/es.array.slice.js","webpack://phenix/./node_modules/core-js/modules/es.array.splice.js","webpack://phenix/./node_modules/core-js/modules/es.date.now.js","webpack://phenix/./node_modules/core-js/modules/es.date.to-iso-string.js","webpack://phenix/./node_modules/core-js/modules/es.date.to-string.js","webpack://phenix/./node_modules/core-js/modules/es.function.bind.js","webpack://phenix/./node_modules/core-js/modules/es.function.name.js","webpack://phenix/./node_modules/core-js/modules/es.number.constructor.js","webpack://phenix/./node_modules/core-js/modules/es.object.assign.js","webpack://phenix/./node_modules/core-js/modules/es.object.define-properties.js","webpack://phenix/./node_modules/core-js/modules/es.object.define-property.js","webpack://phenix/./node_modules/core-js/modules/es.object.get-own-property-descriptor.js","webpack://phenix/./node_modules/core-js/modules/es.object.get-own-property-descriptors.js","webpack://phenix/./node_modules/core-js/modules/es.object.keys.js","webpack://phenix/./node_modules/core-js/modules/es.object.to-string.js","webpack://phenix/./node_modules/core-js/modules/es.object.values.js","webpack://phenix/./node_modules/core-js/modules/es.parse-int.js","webpack://phenix/./node_modules/core-js/modules/es.promise.finally.js","webpack://phenix/./node_modules/core-js/modules/es.promise.js","webpack://phenix/./node_modules/core-js/modules/es.reflect.construct.js","webpack://phenix/./node_modules/core-js/modules/es.regexp.exec.js","webpack://phenix/./node_modules/core-js/modules/es.regexp.to-string.js","webpack://phenix/./node_modules/core-js/modules/es.string.ends-with.js","webpack://phenix/./node_modules/core-js/modules/es.string.includes.js","webpack://phenix/./node_modules/core-js/modules/es.string.iterator.js","webpack://phenix/./node_modules/core-js/modules/es.string.match.js","webpack://phenix/./node_modules/core-js/modules/es.string.pad-start.js","webpack://phenix/./node_modules/core-js/modules/es.string.repeat.js","webpack://phenix/./node_modules/core-js/modules/es.string.replace.js","webpack://phenix/./node_modules/core-js/modules/es.string.search.js","webpack://phenix/./node_modules/core-js/modules/es.string.split.js","webpack://phenix/./node_modules/core-js/modules/es.string.starts-with.js","webpack://phenix/./node_modules/core-js/modules/es.symbol.description.js","webpack://phenix/./node_modules/core-js/modules/es.symbol.js","webpack://phenix/./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack://phenix/./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack://phenix/./node_modules/core-js/modules/web.timers.js","webpack://phenix/./node_modules/core-js/modules/web.url-search-params.js","webpack://phenix/./node_modules/core-js/modules/web.url.js","webpack://phenix/./node_modules/regenerator-runtime/runtime.js","webpack://phenix/./node_modules/whatwg-fetch/fetch.js","webpack://phenix/webpack/bootstrap","webpack://phenix/webpack/startup","webpack://phenix/webpack/runtime/compat get default export","webpack://phenix/webpack/runtime/define property getters","webpack://phenix/webpack/runtime/global","webpack://phenix/webpack/runtime/hasOwnProperty shorthand","webpack://phenix/webpack/runtime/make namespace object"],"names":["root","factory","exports","module","define","amd","self","arr","len","length","i","arr2","Array","isArray","arrayLikeToArray","ReferenceError","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","fn","this","args","arguments","apply","err","undefined","instance","Constructor","TypeError","_defineProperties","target","props","descriptor","enumerable","configurable","writable","Object","defineProperty","protoProps","staticProps","prototype","obj","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","subClass","superClass","create","constructor","iter","Symbol","iterator","from","_arr","_n","_d","_e","_s","_i","next","push","_typeof","assertThisInitialized","call","_setPrototypeOf","p","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","arrayWithoutHoles","iterableToArray","nonIterableSpread","minLen","n","toString","slice","name","test","ApplicationActivityMonitor","DisposableList","Date","now","_isForeground","Subject","_readOnlyIsForeground","ReadOnlySubject","detectTabFocusChange","_timeOfLastTabFocusChange","_disposables","dispose","hidden","visibilityChange","document","msHidden","webkitHidden","handleVisibilityChange","isForeground","setFocusState","addEventListener","add","Disposable","removeEventListener","listenForDocumentFocus","_documentFocusInterval","window","setInterval","hasFocus","clearInterval","BrowserDetector","navigator","userAgent","browserNameAndVersion","match","_browserNameAndVersionRegex","parseBrowserNameAndVersionForIE","_browserNameAndVersion","browserNameList","split","browserVersionList","fullVersion","Number","msie","indexOf","parseInt","substring","version","_browserName","_browserMajorVersion","_isChrome69","_isChrome70","_isChrome71","_isChrome72","_isChrome74","_isChrome75","_isChrome76","_isChrome77","parseBrowserNameAndVersion","parseBrowserName","parseBrowserMajorVersion","includes","ConfigurationParameterReader","readConfigurationParameterValue","readConfigurationParameterURIValue","defaultStringValue","defaultBooleanValue","metaValue","querySelector","getAttribute","valueURIParameterName","URLSearchParams","location","search","get","TelemetryLevelMapping","TelemetryDefault","LoggingLevelMapping","LoggerDefaults","PrivacyMode","_isPrivate","__PRIVACY_MODE__","e","applyIsPrivate","disposable","_disposed","_disposable","_list","forEach","Strings","Error","loops","Math","ceil","fill","random","reduce","string","func","x","Appenders","appender","_appenders","items","item","ConsoleAppender","threshold","_threshold","logLevel","message","category","date","fullMessage","toISOString","LoggingLevel","console","log","Logger","appenders","_category","Trace","Debug","Info","Warn","Fatal","level","replacePlaceholders","replacePlaceholdersString","index","replaceArgument","splice","stringify","accumulator","currentValue","array","stack","cache","JSON","argument","data","toStringStr","LoggerFactory","_loggers","applyLoggingLevel","applyAppenderLoggingLevel","applyConsoleLogger","bind","applyTelemetryLogger","parameterValue","_configurationParameterReader","getStringValue","setThreshold","applyAppender","_telemetryConfiguration","TelemetryAppender","LoggingThreshold","TelemetryConfiguration","applyLoggerConfigFromParameterConfiguration","loggingLevel","assertUnreachable","loggingLevelType","MetricType","metrics","_metrics","MetricsType","TelemetryLevel","MetricsConfiguration","_url","url","metricsUrl","URL","pathname","_environment","environment","_tenancy","tenancy","_sessionId","sessionId","MetricsFactory","metricsServices","_metricsServices","metricsConfiguration","SDK","TelemetryUrl","Environment","MetricsService","telemetryLevel","values","metricsService","hostname","_metricsConfiguration","metric","streamId","previousValue","runtime","resource","kind","metricType","getTelemetryLevel","metricRecord","timestamp","getName","fullQualifiedName","_domain","VersionManager","sendMetricsIfAble","metricsMessages","formData","FormData","append","records","fetch","method","body","_isSending","sendMetrics","response","telemetryLevelType","PromiseHandler","onFulfilled","onRejected","promise","callback","_state","_handled","_value","_deferreds","doResolve","promiseResolve","reason","promiseReject","newValue","finale","_immediate","_unhandledRejection","handle","deferred","result","remaining","manageResponse","_","setTimeout","warn","VanillaPeerConnection","configuration","FeatureEnablement","_peerConnection","webkitRTCPeerConnection","RTCPeerConnection","options","createOffer","createAnswer","description","setLocalDescription","RTCSessionDescription","sdp","_logger","setRemoteDescription","selector","getStats","type","listener","addTransceiver","getConfiguration","setConfiguration","close","currentLocalDescription","currentRemoteDescription","iceConnectionState","handler","ontrack","onicecandidate","oniceconnectionstatechange","VanillaPeerConnectionFactory","subject","_subject","subscribe","DisposableListener","listeners","idx","_listeners","changed","comparable","equals","origin","pageLoadTime","telemetryConfiguration","clientSessionId","telemetryUrl","telemetryAppender","find","remove","_metricsService","DiscoveryUri","_telemetryLevel","_automaticallyRetryOnFailure","getBooleanValue","_automaticallyReconnectPeerConnection","discoveryUri","getTelemetryUrl","channelToken","parsedToken","EdgeAuth","uriValue","baseURIValue","_initialized","_applicationActivityMonitor","peerConnectionFactory","_peerConnectionFactory","consoleLoggingLevel","consoleAppender","automaticallyPlayMediaStream","_automaticallyPlayMediaStream","automaticallyMuteVideoOnPlayFailure","_automaticallyMuteVideoOnPlayFailure","webPlayerLoader","_webPlayerLoader","shakaPlayerLoader","_shakaPlayerLoader","hlsJsLoader","_hlsJsLoader","_sendLocalCandidates","_clientSessionId","_loadedTimestamp","_readOnlyInitialized","_readOnlyDiscoveryUri","_readOnlyPeerConnectionFactory","_telemetryUrl","_maximalNumberOfPeerConnectionReconnectAttempts","retriesAmount","applyDiscoveryUriDefaultFromParameterConfiguration","applyMetricsConfiguration","applyTelemetryConfiguration","applyAutomaticallyRetryOnFailureFromParameterConfiguration","applyAutomaticallyReconnectPeerConnectionFromParameterConfiguration","init","baseURL","segments","protocol","unshift","startsWith","endsWith","join","ChannelState","BitrateState","BitrateMode","Dimension","width","height","other","Durations","duration","_duration","isNegative","abs","offset","floor","milliseconds","seconds","minutes","hours","parts","String","padStart","targetLength","padString","repeat","VideoTelemetry","channelStartTime","_streamId","_pageLoadTime","_channelStartTime","video","_startRecordingFirstFrame","_listenToFirstTime","callTimeToFirstFrame","_clearTimeToFirstFrameListener","_listenForStall","onStall","_listenForContinuation","event","onContinuation","_clearRebufferingListener","pushTimeToFirstFrame","pushChannelCreationTimeToFirstFrame","_timeToFirstFrame","uint64","durationSincePageLoad","toIsoString","_channelCreationTimeToFirstFrame","_videoStalled","buffered","bufferLength","hasNotProgressedSinceLastProgressEvent","end","_lastProgress","timeSinceStop","newResolution","_videoResolution","StreamSetupListener","_startTime","recordStreamMetric","_metricSubmitted","setupTime","metricName","NetworkMonitor","isSupported","setupNetworkChangeListeners","updateStatistics","downlink","downlinkMax","effectiveType","rtt","_rtt","getRoundTripTime","_effectiveType","getEffectiveType","_downlinkThroughputCapacity","getDownlinkThroughputCapacity","_isSupported","SessionTelemetry","_networkMonitor","recordForegroundChange","recordNetworkRTTUpdate","recordNetworkTypeChangeUpdate","downlinkThroughputCapacity","recordNetworkDownlinkThroughputCapacityUpdate","timeSinceLastChange","getTimeSinceLastChange","newRTT","oldRtt","_lastNetworkStatistics","newNetworkType","oldNetworkType","newCapacity","oldCapacity","float","ChannelContext","token","targetLag","isDisposed","disposables","channelDisposables","rendererDisposables","channelInitialization","videoElement","peerConnection","mediaStream","state","autoMuted","autoPaused","tokenExpiring","authorized","online","loading","playing","standby","stopped","lag","bitrateLimit","resolution","empty","failureCount","endPoint","stream","rtcStatistics","peerConnectionReconnectAttempts","status","dataset","BitrateModeMapping","bitrateMode","Normal","Force","Reset","BitrateStateMapping","bitrateState","Keep","EndPoint","uri","timeout","_uri","_timeout","buildPingUrl","start","race","finished","ok","_roundTripTime","localSessionDescription","applicationId","buildUrl","clientVersion","bodyWithOffer","apiVersion","edgeAuthToken","sessionDescription","convertRTCSdpTypeToSdpType","createAnswerDescription","bodyWithoutOffer","createOfferDescription","clearTimeout","httpResponse","mapHttpStatusToSubscribeStatus","convertHttpResponseToSubscribeResponse","subscribeResponse","debug","sharedSecret","mapHttpStatusToSetRemoteDescriptionStatus","convertHttpResponseToSetRemoteDescriptionResponse","setRemoteDescriptionResponse","elapsedInMilliseconds","bitrateInBitsPerSecond","convertBitrateStateToBitrateStateType","convertBitrateModeToBitrateModeType","mapHttpStatusToSetTemporaryMaximalBitrateStatus","candidates","discoveryCompleted","mapHttpStatusToAddIceCandidatesStatus","convertHttpResponseToAddIceCandidatesResponse","addIceCandidatesResponse","mapHttpStatusToSetDestroyStreamStatus","convertHttpResponseToDestroyStreamResponse","destroyStreamResponse","path","pathAsArray","concat","sdkVersion","json","rtcConfiguration","bundlePolicy","iceCandidatePoolSize","iceServers","urls","username","credential","iceTransportPolicy","peerIdentity","rtcpMuxPolicy","convertISessionDescriptionToRTCSessionDescription","createAnswerDescriptionResponse","createOfferDescriptionResponse","rtcSessionDescription","destroyStream","DiscoveryService","text","asString","endPoints","map","discoverNearbyEndPoints","neverResolve","ping","time","Discovery","discoverClosestEndPointWithCaching","_cache","discoveryService","cachedValue","discoverClosestEndPoint","precacheClosestEndPointDiscovery","NetworkStates","defaultPropertyValues","videoWidth","videoHeight","muted","volume","currentTime","Infinity","readyState","ended","autoplay","isEdgeAndRequiresFlashObject","FlashPlayer","ghost","streamInfo","_isVideo","tagName","_swfSrc","swfSrc","_id","id","_width","clientWidth","_height","clientHeight","_ghost","_element","_eventDisposables","_flashVars","triggerFlashEvent","createMicrosoftFlashElement","setupCrossBrowserFlashElement","setupElement","findEventListenerIndex","eventDisposableIndex","eventName","triggerEvent","createElement","element","setAttribute","parameter","assign","setupAccessors","propagateAttributeChanges","setupVolumeAndMutedListeners","eventFrags","detail","namespace","customEvent","createEvent","initCustomEvent","CustomEvent","parse","details","dispatchEvent","paused","getValueFromFlash","nativeFullScreen","requestFullscreen","mozRequestFullScreen","webkitRequestFullScreen","msRequestFullscreen","play","load","seek","pause","_isFullscreen","addListenerForExitFullScreen","_previousHeight","style","_previousWidth","_previousPosition","position","ActiveXObject","wscript","SendKeys","triggerFlashSetSize","screen","embedObject","missingFlashMessageElement","childrenElements","createParameterElement","innerHTML","object","appendChild","existingChildElement","children","childElement","replaceChild","outerHTML","getElementById","ignored","observer","MutationObserver","mutations","mutation","attributeName","setFlashValue","observe","attributes","disconnect","handleModifiedEvent","attachEvent","detachEvent","mutedListener","getMutedListener","volumeListener","getVolumeListener","intervalId","ghostLastMutedState","elementLastMutedState","newGhostMutedState","newElementMutedState","ghostLastVolume","elementLastVolume","newGhostVolume","newElementVolume","findIndex","eventDisposable","PhenixFlashVideo","_stream","_options","_flashPlayer","loaded","success","_loaded","_enabled","initialize","_onReady","_video","createPhenixFlashVideoElement","className","_ghostInitStyleCssText","cssText","onunload","observeInsertion","contains","parentNode","finishInitializationInDom","onError","onMute","onUnmute","onEnded","onLoadedMetadata","onLoadedData","onResize","source","initEvent","createEventObject","eventType","fireEvent","getElement","addedNodes","node","isDescendant","childList","characterData","subtree","domInsertedListener","hookUpEvents","innerHtml","defaultMuted","parent","child","readonly","mostRecentSwfFile","defaultSwfFileSrcs","local","staging","production","FlashRenderer","streamsInfo","stopPlayer","defaultSwfFileSrc","env","_streamsInfo","encodeURI","replace","_phenixVideo","_playerElement","_player","_originElement","_onStalled","stalled","_onEnded","_stopPlayer","detectFlashPlugin","finalizeStreamEnded","code","statistics","networkState","NetworkNoSource","trueCurrentTime","originStartTime","max","defaultVersion","pluginName","mimeType","_hasFlashPlugin","plugins","mimeTypes","enabledPlugin","total","ax","versionInfo","GetVariable","currentVideoTime","canReload","timeoutForStallWithoutProgressToRestart","reloadIfAble","hasElapsedMinTimeSinceLastReload","_lastReloadTime","minTimeBeforeNextReload","reload","RtmpStream","channelContext","handleStreamFailure","_channelContext","_handleStreamFailure","applySessionAndStreamPropertiesToVideoElement","mapSubscribeStatusToChannelStatus","applyStatus","offerSdp","roundTripTime","rtmpStreamManifestMatch","rtmpOption","rtmpUriAndAttributes","rtmpUri","bitrate","player","monitor","getPlayer","_monitorDisposables","playerElement","newStreamStatistics","isNaN","_monitorFailureCount","WebPlayer","manifestURI","_videoElement","_kind","_manifestURI","LiveStreaming","phenixWebPlayer","playerOptions","bandwidthToStartAt","errorObject","severity","errors","RECOVERABLE","dataBuffered","isNative","deliveryType","estimatedBandwidth","NetworkLoading","playTime","NetworkIdle","NetworkEmpty","ShakaPlayer","shaka","Player","loadPlayer","abr","defaultBandwidthEstimate","manifest","retryParameters","streaming","rebufferingGoal","bufferingGoal","bufferBehind","maxAttempts","backoffFactor","unload","destroy","playerConfig","configure","HlsPlayer","hlsPlayer","enableWorker","maxBufferLength","liveBackBufferLength","liveSyncDuration","liveDurationInfinity","liveMaxLatencyDuration","highBufferWatchdogPeriod","loadSource","attachMedia","canPlayType","src","media","offsetWidth","offsetHeight","streamController","_hlsPlayer","_shaka","_phenixWebPlayer","_pending","dashManifestUrlMatch","hlsManifestUrlMatch","manifestUrl","playlistUrl","preferNative","ChunkedStream","_streamStatistics","PeerConnectionService","precacheCreatePeerConnectionOffer","_cached","createPeerConnectionOffer","createPeerConnection","supportsAddTransceiver","audioTransceiver","direction","videoTransceiver","offerToReceiveAudio","offerToReceiveVideo","localOffer","initiateInitialPrecaching","SdpParser","_sdp","_audioCodec","applyCodec","_videoCodec","splitSdp","RtcConnectionMonitor","estimatedRoundTripTime","_estimatedRoundTripTime","_tracksToMonitor","getTracks","track","parsedSDP","_estimatedAudioCodec","audioCodec","_estimatedVideoCodec","videoCodec","updateStatistic","_isMonitorRunning","_updateTimeOut","updateStatisticLegacy","getKindForSafari11","stats","rtcStats","currentRoundTripTime","mediaType","codec","codecId","ssrc","bytesReceived","packetsLost","packetsReceived","getCodecByType","_rtcStatistic","framesDecoded","getStatsLegacy","report","names","stat","RealTimeStream","listenOnStreamSetup","playMediaStreamInVideoElement","all","supportsSetConfiguration","supportsGetConfiguration","applyRtcConfiguration","submitCandidatesTimeout","cancelDiscovery","candidate","addIceCandidates","retryCallback","srcObject","onLine","reconnectPeerConnection","mediaStreamPromise","trackListener","timeoutId","streams","answer","mapSetRemoteDescriptionStatusToChannelStatus","rtcConnectionMonitor","rtcStatistic","rtcVideoStatistic","rtcAudioStatistic","audio","audioTrackFailed","videoTrackFailed","optionalPeerConnection","truncateIceServers","newRtcConfiguration","iceRestart","offer","LegacyStreamFactory","capabilities","defaultStreamTerminationReason","Channel","_context","_readOnlyVideoElement","_readOnlyToken","_readOnlyPeerConnection","_readOnlyState","_readOnlyAutoMuted","_readOnlyAutoPaused","_readOnlyTokenExpiring","_readOnlyAuthorized","_readOnlyOnline","_readOnlyLoading","_readOnlyPlaying","_readOnlyStandby","_readOnlyStopped","_readOnlyTargetLag","_readOnlyLag","_readOnlyBitrateLimit","_readOnlyResolution","_readOnlyFailureCount","_readOnlyEndPoint","_readOnlyStream","_readOnlyRtcStatistics","_readOnlyMediaStream","sessionTelemetry","_videoMetaDataChangedHandler","handleVideoMetaDataChanged","videoTelemetry","setupListenerForTimeToFirstTime","setupListenerForRebuffering","restartAfterStop","clearFailureCountTimeout","onVideoResolutionChanges","getTime","limitBitrate","cleanUpResources","stop","getUri","streamPlayer","StreamFactory","fail","getRetryInterval","min","pow","playPromise","hasAudioTrack","filter","automaticallyMuteVideoOnPlayFailureOff","Channels","defaultDiscoveryUri","_discoveryUri","edgeAuthTokenPrefix","isValidToken","encodedEdgeAuthToken","atob","substr","__SDKVERSION__","_defaultVersion","_telemetryService","TelemetryService","logRecord","_logs","sendLogsIfAble","logMessages","numberOfLogsToSend","sizeOfLogsToSend","getLogSize","sum","sendLogs","it","isObject","wellKnownSymbol","definePropertyModule","UNSCOPABLES","ArrayPrototype","f","charAt","S","unicode","toObject","toAbsoluteIndex","toLength","O","argumentsLength","endPos","$forEach","arrayMethodIsStrict","arrayMethodUsesToLength","STRICT_METHOD","USES_TO_LENGTH","callbackfn","callWithSafeIterationClosing","isArrayIteratorMethod","createProperty","getIteratorMethod","arrayLike","step","C","mapfn","mapping","iteratorMethod","toIndexedObject","createMethod","IS_INCLUDES","$this","el","fromIndex","IndexedObject","arraySpeciesCreate","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_OUT","NO_HOLES","that","specificCreate","boundFunction","some","every","filterOut","fails","V8_VERSION","SPECIES","METHOD_NAME","foo","Boolean","DESCRIPTORS","has","thrower","ACCESSORS","argument0","argument1","aFunction","IS_RIGHT","memo","left","right","originalArray","anObject","iteratorClose","ENTRIES","ITERATOR","SAFE_CLOSING","called","iteratorWithReturn","exec","SKIP_CLOSING","ITERATION_SUPPORT","TO_STRING_TAG_SUPPORT","classofRaw","TO_STRING_TAG","CORRECT_ARGUMENTS","tag","tryGet","callee","ownKeys","getOwnPropertyDescriptorModule","keys","getOwnPropertyDescriptor","MATCH","regexp","error1","error2","F","IteratorPrototype","createPropertyDescriptor","setToStringTag","Iterators","returnThis","IteratorConstructor","NAME","bitmap","toPrimitive","propertyKey","DatePrototype","nativeDateToISOString","NaN","isFinite","RangeError","year","getUTCFullYear","getUTCMilliseconds","sign","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","$","createIteratorConstructor","createNonEnumerableProperty","redefine","IS_PURE","IteratorsCore","BUGGY_SAFARI_ITERATORS","KEYS","VALUES","Iterable","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","methods","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","proto","forced","wrappedWellKnownSymbolModule","global","EXISTS","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","classof","process","getBuiltIn","versions","v8","setGlobal","copyConstructorProperties","isForced","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","noTargetGet","sham","regexpExec","REPLACE_SUPPORTS_NAMED_GROUPS","re","groups","a","REPLACE_KEEPS_$0","REPLACE","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","flags","nativeRegExpMethod","nativeMethod","str","arg2","forceStringMethod","stringMethod","regexMethod","RegExp","b","c","factories","construct","argsLength","list","Function","partArgs","variable","check","globalThis","g","hasOwnProperty","propertyIsEnumerable","dummy","Wrapper","NewTarget","NewTargetPrototype","store","functionToString","inspectSource","set","NATIVE_WEAK_MAP","objectHas","shared","sharedKey","hiddenKeys","WeakMap","wmget","wmhas","wmset","metadata","facade","STATE","enforce","getterFor","replacement","feature","detection","normalize","POLYFILL","NATIVE","toLowerCase","isRegExp","Result","iterable","unboundFunction","iterFn","AS_ENTRIES","IS_ITERATOR","INTERRUPTED","condition","callFn","returnMethod","PrototypeOfArrayIteratorPrototype","arrayIterator","flush","head","last","notify","toggle","macrotask","IS_IOS","IS_NODE","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","domain","exit","enter","createTextNode","nextTick","task","getOwnPropertySymbols","searchParams","toJSON","sort","href","host","hash","PromiseCapability","$$resolve","$$reject","trim","whitespaces","$parseInt","hex","radix","objectKeys","getOwnPropertySymbolsModule","propertyIsEnumerableModule","nativeAssign","A","B","symbol","alphabet","chr","T","j","activeXDocument","defineProperties","enumBugKeys","html","documentCreateElement","IE_PROTO","EmptyConstructor","scriptTag","content","LT","NullProtoObject","iframeDocument","iframe","write","temp","parentWindow","NullProtoObjectViaActiveX","display","contentWindow","open","Properties","IE8_DOM_DEFINE","nativeDefineProperty","P","Attributes","nativeGetOwnPropertyDescriptor","nativeGetOwnPropertyNames","windowNames","getOwnPropertyNames","getWindowNames","internalObjectKeys","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","nativePropertyIsEnumerable","NASHORN_BUG","1","V","aPossiblePrototype","setter","CORRECT_SETTER","TO_ENTRIES","getOwnPropertyNamesModule","newPromiseCapability","promiseCapability","InternalStateModule","getInternalState","enforceInternalState","TEMPLATE","unsafe","simple","R","re1","re2","regexpFlags","stickyHelpers","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","lastIndex","UNSUPPORTED_Y","BROKEN_CARET","NPCG_INCLUDED","reCopy","sticky","charsAdded","strCopy","multiline","input","ignoreCase","dotAll","RE","s","is","y","CONSTRUCTOR_NAME","TAG","uid","SHARED","mode","copyright","defaultConstructor","toInteger","requireObjectCoercible","CONVERT_TO_STRING","pos","first","second","size","charCodeAt","codeAt","IS_END","maxLength","fillString","fillLen","stringFiller","stringLength","fillStr","intMaxLength","maxInt","regexNonASCII","regexSeparators","OVERFLOW_ERROR","stringFromCharCode","fromCharCode","digitToBasic","digit","adapt","delta","numPoints","firstTime","k","baseMinusTMin","base","encode","output","inputLength","counter","extra","ucs2decode","bias","basicLength","handledCPCount","m","handledCPCountPlusOne","q","t","qMinusT","baseMinusT","label","encoded","labels","count","whitespace","ltrim","rtrim","defer","channel","port","setImmediate","clear","clearImmediate","MessageChannel","Dispatch","queue","run","runner","post","postMessage","port2","port1","onmessage","importScripts","removeChild","integer","PREFERRED_STRING","val","valueOf","postfix","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","arrayMethodHasSpeciesSupport","IS_CONCAT_SPREADABLE","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_INDEX_EXCEEDED","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","E","addToUnscopables","$filter","HAS_SPECIES_SUPPORT","$findIndex","FIND_INDEX","SKIPS_HOLES","$find","FIND","$includes","$indexOf","nativeIndexOf","NEGATIVE_ZERO","searchElement","defineIterator","ARRAY_ITERATOR","setInternalState","iterated","Arguments","nativeJoin","ES3_STRINGS","separator","$map","$reduce","CHROME_VERSION","0","nativeSlice","fin","MAXIMUM_ALLOWED_LENGTH_EXCEEDED","deleteCount","insertCount","actualDeleteCount","to","actualStart","INVALID_DATE","nativeDateToString","FunctionPrototype","FunctionPrototypeToString","nameRE","inheritIfRequired","NUMBER","NativeNumber","NumberPrototype","BROKEN_CLASSOF","toNumber","third","maxCode","digits","NumberWrapper","FAILS_ON_PRIMITIVES","getOwnPropertyDescriptors","nativeKeys","$values","parseIntImplementation","NativePromise","speciesConstructor","real","onFinally","isFunction","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","redefineAll","setSpecies","anInstance","iterate","checkCorrectnessOfIteration","microtask","hostReportErrors","newPromiseCapabilityModule","perform","PROMISE","getInternalPromiseState","PromiseConstructor","$fetch","newGenericPromiseCapability","DISPATCH_EVENT","NATIVE_REJECTION_EVENT","PromiseRejectionEvent","UNHANDLED_REJECTION","FakePromise","INCORRECT_ITERATION","isThenable","isReject","notified","chain","reactions","exited","reaction","rejection","onHandleUnhandled","onUnhandled","isUnhandled","emit","unwrap","internalReject","internalResolve","wrapper","executor","wrap","r","capability","$promiseResolve","alreadyCalled","nativeConstruct","NEW_TARGET_BUG","ARGS_BUG","Target","newTarget","$args","TO_STRING","RegExpPrototype","nativeToString","NOT_GENERIC","INCORRECT_NAME","rf","notARegExp","correctIsRegExpLogic","nativeEndsWith","CORRECT_IS_REGEXP_LOGIC","searchString","endPosition","STRING_ITERATOR","point","fixRegExpWellKnownSymbolLogic","advanceStringIndex","regExpExec","nativeMatch","maybeCallNative","matcher","res","rx","fullUnicode","matchStr","$padStart","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","UNSAFE_SUBSTITUTE","searchValue","replaceValue","replacer","functionalReplace","results","accumulatedResult","nextSourcePosition","matched","captures","namedCaptures","replacerArgs","getSubstitution","tailPos","symbols","ch","capture","sameValue","SEARCH","nativeSearch","searcher","previousLastIndex","callRegExpExec","arrayPush","MAX_UINT32","SUPPORTS_Y","SPLIT","nativeSplit","internalSplit","limit","lim","lastLength","lastLastIndex","separatorCopy","splitter","unicodeMatching","z","nativeStartsWith","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","native","desc","nativeObjectCreate","getOwnPropertyNamesExternal","defineWellKnownSymbol","HIDDEN","TO_PRIMITIVE","$Symbol","$stringify","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","QObject","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","isSymbol","$defineProperty","$defineProperties","properties","$getOwnPropertySymbols","$propertyIsEnumerable","$getOwnPropertyDescriptor","$getOwnPropertyNames","IS_OBJECT_PROTOTYPE","keyFor","sym","useSetter","useSimple","space","$replacer","DOMIterables","COLLECTION_NAME","Collection","CollectionPrototype","ArrayIteratorMethods","ArrayValues","scheduler","boundArgs","USE_NATIVE_URL","hasOwn","getIterator","Headers","URL_SEARCH_PARAMS","URL_SEARCH_PARAMS_ITERATOR","getInternalParamsState","getInternalIteratorState","plus","sequences","percentSequence","bytes","percentDecode","sequence","decodeURIComponent","deserialize","serialize","encodeURIComponent","parseSearchParams","query","attribute","entry","shift","updateSearchParams","validateArgumentsLength","passed","required","URLSearchParamsIterator","params","URLSearchParamsConstructor","entryIterator","entryNext","updateURL","URLSearchParamsPrototype","getAll","found","entriesIndex","sliceIndex","headers","getState","EOF","arrayFrom","toASCII","URLSearchParamsModule","NativeURL","getInternalSearchParamsState","getInternalURLState","INVALID_SCHEME","INVALID_HOST","INVALID_PORT","ALPHA","ALPHANUMERIC","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","parseHost","codePoints","parseIPv6","isSpecial","parseIPv4","percentEncode","C0ControlPercentEncodeSet","partsLength","numbers","part","number","ipv4","pop","numbersSeen","ipv4Piece","swaps","swap","address","pieceIndex","compress","pointer","char","serializeHost","ignore0","ipv6","maxIndex","currStart","currLength","findLongestZeroSequence","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","specialSchemes","ftp","file","http","https","ws","wss","scheme","includesCredentials","password","cannotHaveUsernamePasswordPort","cannotBeABaseURL","isWindowsDriveLetter","normalized","startsWithWindowsDriveLetter","shortenURLsPath","pathSize","isSingleDot","segment","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","AUTHORITY","HOST","HOSTNAME","PORT","FILE","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","QUERY","FRAGMENT","parseURL","stateOverride","bufferCodePoints","failure","buffer","seenAt","seenBracket","seenPasswordToken","fragment","codePoint","encodedCodePoints","URLConstructor","baseState","urlString","searchParamsState","serializeURL","getOrigin","getProtocol","getUsername","getPassword","getHost","getHostname","getPort","getPathname","getSearch","getSearchParams","getHash","URLPrototype","accessorDescriptor","getter","nativeCreateObjectURL","createObjectURL","nativeRevokeObjectURL","revokeObjectURL","blob","Op","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","context","Context","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","async","reverse","skipTempReset","prev","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","support","Blob","viewClasses","isArrayBufferView","ArrayBuffer","isView","normalizeName","normalizeValue","iteratorFor","header","consumed","bodyUsed","fileReaderReady","reader","onload","onerror","readBlobAsArrayBuffer","FileReader","readAsArrayBuffer","bufferClone","buf","view","Uint8Array","byteLength","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","_bodyFormData","DataView","_bodyArrayBuffer","rejected","arrayBuffer","byteOffset","readAsText","chars","readArrayBufferAsText","decode","oldValue","thisArg","Request","upcased","credentials","signal","toUpperCase","referrer","reParamSearch","form","Response","bodyInit","statusText","clone","redirectStatuses","redirect","DOMException","request","aborted","xhr","XMLHttpRequest","abortXhr","abort","rawHeaders","getAllResponseHeaders","line","responseURL","responseText","ontimeout","onabort","fixUrl","withCredentials","responseType","setRequestHeader","onreadystatechange","send","polyfill","__webpack_module_cache__","__webpack_require__","moduleId","__webpack_modules__","__esModule","d","definition","prop"],"mappings":"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","file":"channels.js","sourcesContent":["(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[\"phenix\"] = factory();\n\telse\n\t\troot[\"phenix\"] = factory();\n})(self, function() {\nreturn ","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","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}\n\nmodule.exports = _nonIterableRest;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;","var _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;","module.exports = require(\"regenerator-runtime\");\n","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport Disposable from '../lang/Disposable';\nimport Subject from '../rx/Subject';\nimport ReadOnlySubject from '../rx/ReadOnlySubject';\nimport DisposableList from '../lang/DisposableList';\n\nconst defaultDocumentFocusIntervalTimeout = 3000;\n\nexport default class ApplicationActivityMonitor {\n private readonly _disposables: DisposableList = new DisposableList();\n private readonly _readOnlyIsForeground: ReadOnlySubject<boolean>;\n private readonly _isForeground: Subject<boolean>;\n private _timeOfLastTabFocusChange: number = Date.now();\n private _documentFocusInterval: number;\n\n constructor() {\n this._isForeground = new Subject<boolean>(true);\n this._readOnlyIsForeground = new ReadOnlySubject(this._isForeground);\n this.detectTabFocusChange();\n }\n\n get isForeground(): ReadOnlySubject<boolean> {\n return this._readOnlyIsForeground;\n }\n\n getTimeSinceLastChange(): number {\n return Date.now() - this._timeOfLastTabFocusChange;\n }\n\n dispose(): void {\n this._disposables.dispose();\n }\n\n private detectTabFocusChange(): void {\n let hidden;\n let visibilityChange;\n\n if (typeof document !== 'object') {\n return;\n }\n\n // Ignored as typescript does not have legacy getStats types\n /* eslint-disable @typescript-eslint/ban-ts-ignore */\n // @ts-ignore\n if (typeof document.msHidden !== 'undefined') {\n hidden = 'msHidden';\n visibilityChange = 'msvisibilitychange';\n // @ts-ignore\n } else if (typeof document.webkitHidden !== 'undefined') {\n hidden = 'webkitHidden';\n visibilityChange = 'webkitvisibilitychange';\n } else if (typeof document.hidden !== 'undefined') { // Opera 12.10 and Firefox 18 and later support\n hidden = 'hidden';\n visibilityChange = 'visibilitychange';\n }\n /* eslint-enable */\n\n const handleVisibilityChange = (): void => {\n const isForeground = !document[hidden];\n\n this.setFocusState(isForeground);\n };\n\n if (typeof document.addEventListener !== 'undefined' && typeof document[hidden] !== 'undefined') {\n document.addEventListener(visibilityChange, handleVisibilityChange, false);\n\n this._disposables.add(new Disposable(() => {\n document.removeEventListener(visibilityChange, handleVisibilityChange, false);\n }));\n } else {\n this.listenForDocumentFocus.call(this);\n }\n }\n\n private listenForDocumentFocus(): void {\n this._documentFocusInterval = window.setInterval(() => {\n const isForeground = document.hasFocus();\n\n this.setFocusState(isForeground);\n }, defaultDocumentFocusIntervalTimeout);\n\n this._disposables.add(new Disposable(() => {\n if (this._documentFocusInterval) {\n clearInterval(this._documentFocusInterval);\n }\n\n this._documentFocusInterval = null;\n }));\n }\n\n private setFocusState(isForeground): void {\n if (this._isForeground === isForeground) {\n return;\n }\n\n this._isForeground.value = isForeground;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nexport default class BrowserDetector {\n private static readonly _browserNameAndVersionRegex = /(MSIE|(?!Gecko.+)Firefox|(?!AppleWebKit.+Chrome.+)Safari|(?!AppleWebKit.+)Chrome|AppleWebKit(?!.+Chrome|.+Safari)|Gecko(?!.+Firefox))(?: |\\/)([\\d.apre]+)/g;\n private static readonly _browserNameAndVersion = BrowserDetector.parseBrowserNameAndVersion();\n private static readonly _browserName = BrowserDetector.parseBrowserName();\n private static readonly _browserMajorVersion = BrowserDetector.parseBrowserMajorVersion();\n\n private static readonly _isChrome69 = BrowserDetector._browserNameAndVersion.includes('Chrome/69.');\n private static readonly _isChrome70 = BrowserDetector._browserNameAndVersion.includes('Chrome/70.');\n private static readonly _isChrome71 = BrowserDetector._browserNameAndVersion.includes('Chrome/71.');\n private static readonly _isChrome72 = BrowserDetector._browserNameAndVersion.includes('Chrome/72.');\n private static readonly _isChrome74 = BrowserDetector._browserNameAndVersion.includes('Chrome/74.');\n private static readonly _isChrome75 = BrowserDetector._browserNameAndVersion.includes('Chrome/75.');\n private static readonly _isChrome76 = BrowserDetector._browserNameAndVersion.includes('Chrome/76.');\n private static readonly _isChrome77 = BrowserDetector._browserNameAndVersion.includes('Chrome/77.');\n\n static get browserNameAndVersion(): string {\n return BrowserDetector._browserNameAndVersion;\n }\n\n static get browserName(): string {\n return this._browserName;\n }\n\n static get browserMajorVersion(): number {\n return this._browserMajorVersion;\n }\n\n static get isChrome69(): boolean {\n return BrowserDetector._isChrome69;\n }\n\n static get isChrome70(): boolean {\n return BrowserDetector._isChrome70;\n }\n\n static get isChrome71(): boolean {\n return BrowserDetector._isChrome71;\n }\n\n static get isChrome72(): boolean {\n return BrowserDetector._isChrome72;\n }\n\n static get isChrome74(): boolean {\n return BrowserDetector._isChrome74;\n }\n\n static get isChrome75(): boolean {\n return BrowserDetector._isChrome75;\n }\n\n static get isChrome76(): boolean {\n return BrowserDetector._isChrome76;\n }\n\n static get isChrome77(): boolean {\n return BrowserDetector._isChrome77;\n }\n\n private static parseBrowserNameAndVersion(): string {\n if (!navigator || !navigator.userAgent) {\n return '';\n }\n\n const browserNameAndVersion = navigator.userAgent.match(BrowserDetector._browserNameAndVersionRegex);\n\n if (browserNameAndVersion && browserNameAndVersion[0]) {\n return browserNameAndVersion[0];\n }\n\n return BrowserDetector.parseBrowserNameAndVersionForIE();\n }\n\n private static parseBrowserName(): string {\n if (!BrowserDetector._browserNameAndVersion) {\n return '';\n }\n\n const browserNameList = BrowserDetector._browserNameAndVersion.split('/');\n\n if (!browserNameList || !browserNameList[0]) {\n return '';\n }\n\n return browserNameList[0];\n }\n\n private static parseBrowserMajorVersion(): number {\n if (!BrowserDetector._browserNameAndVersion) {\n return 0;\n }\n\n const browserVersionList = BrowserDetector._browserNameAndVersion.split('/');\n\n if (!browserVersionList || !browserVersionList[1]) {\n return 0;\n }\n\n const fullVersion = browserVersionList[1];\n\n if (!fullVersion) {\n return 0;\n }\n\n return Number(fullVersion.split('.')[0]) || 0;\n }\n\n private static parseBrowserNameAndVersionForIE(): string {\n if (!navigator || !navigator.userAgent) {\n return '';\n }\n\n const userAgent = navigator.userAgent;\n const msie = userAgent.indexOf('MSIE ');\n\n if (msie > 0) {\n // IE 10 or older => return version number\n return `IE/${parseInt(userAgent.substring(msie + 5, userAgent.indexOf('.', msie)), 10)}`;\n }\n\n const trident = userAgent.indexOf('Trident/');\n\n if (trident > 0) {\n // IE 11 => return version number\n const version = userAgent.indexOf('rv:');\n\n return `IE/${parseInt(userAgent.substring(version + 3, userAgent.indexOf('.', version)), 10)}`;\n }\n\n return '';\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport TelemetryDefault from '../metrics/TelemetryDefault';\nimport TelemetryLevelMapping from '../metrics/TelemetricLevelMapping';\nimport LoggingLevelMapping from '../logger/LoggingLevelMapping';\nimport LoggerDefaults from '../logger/LoggerDefaults';\n\nexport default class ConfigurationParameterReader {\n getStringValue(name: string): string {\n return this.readConfigurationParameterValue(name) ||\n this.readConfigurationParameterURIValue(`${name}-uri-parameter-name`) ||\n this.defaultStringValue[name];\n }\n\n getBooleanValue(name: string): boolean {\n const value = this.readConfigurationParameterValue(name);\n\n if (value) {\n return value === 'true' || value === '1' || value === 'On';\n }\n\n const valueFromUri = this.readConfigurationParameterURIValue(`${name}-uri-parameter-name`);\n\n if (valueFromUri) {\n return value === 'true' || value === '1' || value === 'On';\n }\n\n return this.defaultBooleanValue[name] === true;\n }\n\n private get defaultStringValue(): { [name: string]: string} {\n return {\n 'phenix-metrics-level': TelemetryLevelMapping.convertTelemetryLevelToTelemetryLevelType(TelemetryDefault.defaultTelemetryLevel),\n 'phenix-logging-level': LoggingLevelMapping.convertLoggingLevelToLoggingLevelType(LoggerDefaults.defaultLoggingLevel),\n 'phenix-console-logging-level': LoggingLevelMapping.convertLoggingLevelToLoggingLevelType(LoggerDefaults.defaultConsoleLoggingLevel),\n 'phenix-telemetry-logging-level': LoggingLevelMapping.convertLoggingLevelToLoggingLevelType(LoggerDefaults.defaultTelemetryLoggingLevel),\n 'phenix-channel-token': '',\n 'phenix-uri': '',\n 'phenix-base-uri': ''\n };\n }\n\n private get defaultBooleanValue(): { [name: string]: boolean } {\n return {\n 'phenix-automatically-retry-on-failure': true,\n 'phenix-automatically-reconnect-peer-connection': true\n };\n }\n\n private readConfigurationParameterValue(name: string): string {\n const metaValue = document.querySelector(`meta[name='${name}']`);\n\n if (!metaValue) {\n return;\n }\n\n const value = metaValue.getAttribute('value');\n\n if (!value) {\n return;\n }\n\n return value;\n }\n\n private readConfigurationParameterURIValue(name: string): string {\n const valueURIParameterName = this.readConfigurationParameterValue(name);\n\n if (!valueURIParameterName) {\n return;\n }\n\n const value = new URLSearchParams(location.search).get(valueURIParameterName) || undefined;\n\n if (!value) {\n return;\n }\n\n return value;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\ndeclare const __PRIVACY_MODE__: boolean;\n\nexport default class PrivacyMode {\n private static _isPrivate: boolean;\n\n static get isPrivate(): boolean {\n return this._isPrivate;\n }\n\n static applyIsPrivate(): void {\n try {\n this._isPrivate = __PRIVACY_MODE__;\n } catch (e) {\n this._isPrivate = false;\n }\n }\n}\n\nPrivacyMode.applyIsPrivate();","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport IDisposable from './IDisposable';\n\nexport default class Disposable implements IDisposable {\n private _disposed: boolean;\n private _disposable: () => void;\n\n constructor(disposable: () => void) {\n this._disposed = false;\n this._disposable = disposable;\n }\n\n dispose(): void {\n if (this._disposed) {\n return;\n }\n\n this._disposed = true;\n\n return this._disposable.call(this);\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport IDisposable from './IDisposable';\n\nexport default class DisposableList {\n private readonly _list: IDisposable[] = [];\n\n add(disposable: IDisposable): void {\n this._list.push(disposable);\n }\n\n dispose(): void {\n this._list.forEach(disposable => disposable.dispose());\n this._list.length = 0;\n }\n\n toString(): string {\n return `DisposableList[disposables=${this._list.length}]`;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nexport default class Strings {\n static random(length: number): string {\n const random13Characters = (): string => {\n return Math.random().toString(16).substring(2, 15);\n };\n\n const loops: number = Math.ceil(length / 13);\n\n return new Array(loops).fill(random13Characters).reduce((string, func) => {\n return string + func();\n }, '').substring(0, length);\n }\n\n private constructor() {\n throw new Error('Strings is a static class that may not be instantiated');\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nexport function assertUnreachable(x: never): never {\n throw new Error(`Unexpected value [${x}]. This should never be reached`);\n}\n\nexport default assertUnreachable;","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport {IAppender} from './IAppender';\n\nexport default class Appenders {\n private _appenders: Array<IAppender> = [];\n\n get value(): Array<IAppender> {\n return this._appenders;\n }\n\n add(appender: IAppender): void {\n this._appenders.push(appender);\n }\n\n remove(appender): void {\n this._appenders = this._appenders.reduce((items, item) => {\n if (!(item === appender)) {\n items.push(item);\n }\n\n return items;\n }, [] as Array<IAppender>);\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport {IAppender} from './IAppender';\nimport {LoggingLevel} from './Logger';\n\nexport default class ConsoleAppender implements IAppender {\n private readonly _threshold: LoggingLevel;\n\n log(logLevel: LoggingLevel, message: string, category: string, date: Date): void {\n if (logLevel < this._threshold) {\n return;\n }\n\n const fullMessage = `${date.toISOString()} [${category}] [${LoggingLevel[logLevel]}] ${message}`;\n\n if (logLevel < LoggingLevel.Warn) {\n console.log(fullMessage);\n\n return;\n }\n\n console.error(fullMessage);\n }\n\n constructor(threshold: LoggingLevel) {\n this._threshold = threshold;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {IAppender} from './IAppender';\nimport Appenders from './Appenders';\nimport LoggingThreshold from './LoggingThreshold';\n\nexport enum LoggingLevel {\n All = -1,\n Trace = 10,\n Debug = 20,\n Info = 30,\n Warn = 40,\n Error = 50,\n Fatal = 60,\n Off = 100,\n}\n\nexport type LoggingLevelInputTypes = 'Off' | 'Trace' | 'Debug' | 'Info' | 'Warn' | 'Error' | 'Fatal' | 'All';\n\nexport default class Logger {\n private readonly _category: string;\n private readonly _appenders: Appenders;\n private readonly _threshold: LoggingThreshold;\n\n get category(): string {\n return this._category;\n }\n\n get appenders(): Appenders {\n return this._appenders;\n }\n\n get threshold(): LoggingThreshold {\n return this._threshold;\n }\n\n trace(...args: any): void {\n if (!this._threshold.value || this._threshold.value > LoggingLevel.Trace) {\n return;\n }\n\n this.log(LoggingLevel.Trace, args);\n }\n\n debug(...args: any): void {\n if (!this._threshold.value || this._threshold.value > LoggingLevel.Debug) {\n return;\n }\n\n this.log(LoggingLevel.Debug, args);\n }\n\n info(...args: any): void {\n if (!this._threshold.value || this._threshold.value > LoggingLevel.Info) {\n return;\n }\n\n this.log(LoggingLevel.Info, args);\n }\n\n warn(...args: any): void {\n if (!this._threshold.value || this._threshold.value > LoggingLevel.Warn) {\n return;\n }\n\n this.log(LoggingLevel.Warn, args);\n }\n\n error(...args: any): void {\n if (!this._threshold.value || this._threshold.value > LoggingLevel.Error) {\n return;\n }\n\n this.log(LoggingLevel.Error, args);\n }\n\n fatal(...args: any): void {\n if (!this._threshold.value || this._threshold.value > LoggingLevel.Fatal) {\n return;\n }\n\n this.log(LoggingLevel.Fatal, args);\n }\n\n private log(level: number, args: any): void {\n const date = new Date();\n const message = this.replacePlaceholders(args);\n\n this._appenders.value.forEach((appender: IAppender) => {\n appender.log(level, message, this.category, date);\n });\n }\n\n private replacePlaceholders(args: any): string {\n let replacePlaceholdersString = args[0];\n let index = 0;\n\n while (replacePlaceholdersString.indexOf && args.length > 1 && index >= 0) {\n index = replacePlaceholdersString.indexOf('%', index);\n\n if (index > 0) {\n const type = replacePlaceholdersString.substring(index + 1, index + 2);\n\n switch (type) {\n case '%':\n // Escaped '%%' turns into '%'\n replacePlaceholdersString = replacePlaceholdersString.substring(0, index) + replacePlaceholdersString.substring(index + 1);\n index++;\n\n break;\n case 's':\n case 'd':\n // Replace '%d' or '%s' with the argument\n args[0] = replacePlaceholdersString = this.replaceArgument(\n this.toString(args[1]),\n replacePlaceholdersString,\n index\n );\n args.splice(1, 1);\n\n break;\n case 'j':\n // Replace %j' with the argument\n args[0] = replacePlaceholdersString = this.replaceArgument(\n this.stringify(args[1]),\n replacePlaceholdersString,\n index\n );\n\n args.splice(1, 1);\n\n break;\n default:\n return args.toString();\n }\n }\n }\n\n if (args.length > 1) {\n args = args.reduce((accumulator, currentValue, index, array) => {\n if (index + 1 === array.length && currentValue instanceof Error) {\n return accumulator + '\\n' + this.toString(currentValue.stack);\n }\n\n return accumulator + `[${this.toString(currentValue)}]`;\n });\n }\n\n return args.toString();\n }\n\n private stringify(arg: any): string {\n const cache = [];\n\n try {\n return JSON.stringify(\n arg instanceof Error ? this.toString(arg) : arg,\n (key, value) => {\n if (!!value && value instanceof Object) {\n if (cache.includes(value)) {\n return '<recursive>';\n }\n\n cache.push(value);\n }\n\n return value;\n },\n 2\n );\n } catch (e) {\n return '[object invalid JSON.stringify]';\n }\n }\n\n private replaceArgument(argument: any, replacePlaceholdersString: string, index: number): string {\n return replacePlaceholdersString.substring(0, index) + this.toString(argument) + replacePlaceholdersString.substring(index + 2);\n }\n\n private toString(data: any): string {\n if (typeof data === 'string') {\n return data;\n }\n\n if (typeof data === 'boolean') {\n return data ? 'true' : 'false';\n }\n\n if (typeof data === 'number') {\n return data.toString();\n }\n\n let toStringStr = '';\n\n if (data) {\n if (typeof data === 'function') {\n toStringStr = data.toString();\n } else if (data instanceof Object) {\n try {\n toStringStr = data.toString();\n } catch (e) {\n toStringStr = '[object invalid toString()]';\n }\n }\n }\n\n return toStringStr;\n }\n\n constructor(category: string, appenders: Appenders, threshold: LoggingThreshold) {\n this._category = category;\n this._appenders = appenders;\n this._threshold = threshold;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport PrivacyMode from '../dom/PrivacyMode';\nimport {LoggingLevel} from '../logger/Logger';\n\nexport default class LoggerDefaults {\n static get defaultLoggingLevel(): LoggingLevel {\n return PrivacyMode.isPrivate ? LoggingLevel.Off : LoggingLevel.All;\n }\n\n static get defaultConsoleLoggingLevel(): LoggingLevel {\n return PrivacyMode.isPrivate ? LoggingLevel.Off : LoggingLevel.All;\n }\n\n static get defaultTelemetryLoggingLevel(): LoggingLevel {\n return LoggingLevel.Info;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport {ILogger} from './LoggerInterface';\nimport Logger, {LoggingLevel} from './Logger';\nimport Appenders from './Appenders';\nimport LoggingThreshold from './LoggingThreshold';\nimport ConsoleAppender from './ConsoleAppender';\nimport TelemetryAppender from '../telemetry/TelemetryApender';\nimport TelemetryConfiguration from '../telemetry/TelemetryConfiguration';\nimport ConfigurationParameterReader from '../dom/ConfigurationParameterReader';\nimport {IConfigurationParameterReader} from '../dom/IConfigurationParamaterReader';\nimport LoggerDefaults from './LoggerDefaults';\n\nexport default class LoggerFactory {\n private static _configurationParameterReader: IConfigurationParameterReader = new ConfigurationParameterReader();\n private static _loggers: {[category: string]: ILogger} = {};\n private static _appenders: Appenders = new Appenders();\n private static _threshold: LoggingThreshold = new LoggingThreshold();\n private static _telemetryConfiguration: TelemetryConfiguration = new TelemetryConfiguration();\n\n static get telemetryConfiguration(): TelemetryConfiguration {\n return LoggerFactory._telemetryConfiguration;\n }\n\n static getLogger(category: string): ILogger {\n if (typeof category !== 'string') {\n category = 'SDK';\n }\n\n const logger = LoggerFactory._loggers[category];\n\n if (logger) {\n return logger;\n }\n\n return LoggerFactory._loggers[category] = new Logger(category, this._appenders, this._threshold);\n }\n\n static applyLoggerConfigFromParameterConfiguration(): void {\n LoggerFactory.applyLoggingLevel();\n LoggerFactory.applyAppenderLoggingLevel('console', LoggerFactory.applyConsoleLogger.bind(this));\n LoggerFactory.applyAppenderLoggingLevel('telemetry', LoggerFactory.applyTelemetryLogger.bind(this));\n }\n\n private static applyLoggingLevel(): void {\n const parameterValue = this._configurationParameterReader.getStringValue('phenix-logging-level');\n\n if (LoggingLevel[parameterValue]) {\n this._threshold.setThreshold(LoggingLevel[parameterValue]);\n }\n\n return;\n }\n\n private static applyAppenderLoggingLevel(name: string, applyAppender: (level: LoggingLevel) => void): void {\n const parameterValue = this._configurationParameterReader.getStringValue(`phenix-${name}-logging-level`);\n\n if (parameterValue === 'Off') {\n return;\n }\n\n applyAppender(LoggingLevel[parameterValue]);\n }\n\n private static applyConsoleLogger(level: LoggingLevel): void {\n this._appenders.add(new ConsoleAppender(level || LoggerDefaults.defaultConsoleLoggingLevel));\n }\n\n private static applyTelemetryLogger(level: LoggingLevel): void {\n this._telemetryConfiguration.threshold = level || LoggerDefaults.defaultTelemetryLoggingLevel;\n\n this._appenders.add(new TelemetryAppender(this._telemetryConfiguration));\n }\n\n private constructor() {\n throw new Error('LoggerFactory is a static class that may not be instantiated');\n }\n}\n\nLoggerFactory.applyLoggerConfigFromParameterConfiguration();","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport assertUnreachable from '../lang/assertUnreachable';\nimport {LoggingLevel, LoggingLevelInputTypes} from './Logger';\n\nexport default class LoggingLevelMapping {\n static convertLoggingLevelToLoggingLevelType(loggingLevel: LoggingLevel): LoggingLevelInputTypes {\n switch (loggingLevel) {\n case LoggingLevel.Off:\n return 'Off';\n case LoggingLevel.Trace:\n return 'Trace';\n case LoggingLevel.Debug:\n return 'Debug';\n case LoggingLevel.Info:\n return 'Trace';\n case LoggingLevel.Warn:\n return 'Warn';\n case LoggingLevel.Error:\n return 'Error';\n case LoggingLevel.Fatal:\n return 'Fatal';\n case LoggingLevel.All:\n return 'All';\n default:\n assertUnreachable(loggingLevel);\n }\n }\n\n static convertLoggingLevelTypeToLoggingLevel(loggingLevelType: LoggingLevelInputTypes): LoggingLevel {\n switch (loggingLevelType) {\n case 'Off':\n return LoggingLevel.Off;\n case 'Trace':\n return LoggingLevel.Trace;\n case 'Debug':\n return LoggingLevel.Debug;\n case 'Info':\n return LoggingLevel.Info;\n case 'Warn':\n return LoggingLevel.Warn;\n case 'Error':\n return LoggingLevel.Error;\n case 'Fatal':\n return LoggingLevel.Fatal;\n case 'All':\n return LoggingLevel.All;\n default:\n assertUnreachable(loggingLevelType);\n }\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport LoggerDefaults from './LoggerDefaults';\nimport {LoggingLevel} from './Logger';\n\nexport default class LoggingThreshold {\n private _threshold: LoggingLevel = LoggerDefaults.defaultLoggingLevel;\n\n get value(): LoggingLevel {\n return this._threshold;\n }\n\n setThreshold(threshold: LoggingLevel): void {\n this._threshold = threshold;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport {TelemetryLevel} from './MetricsConfiguration';\nimport assertUnreachable from '../lang/assertUnreachable';\nimport MetricsType from './MetricsType';\n\nexport default class MetricType {\n private readonly _metrics: MetricsType;\n\n constructor(metrics: MetricsType) {\n this._metrics = metrics;\n }\n\n getName(): string {\n return MetricsType[this._metrics];\n }\n\n getTelemetryLevel(): TelemetryLevel {\n switch (this._metrics) {\n case MetricsType.TimeToFirstFrame:\n return TelemetryLevel.Essential;\n case MetricsType.ChannelCreationTimeToFirstFrame:\n return TelemetryLevel.Essential;\n case MetricsType.Stalled:\n return TelemetryLevel.All;\n case MetricsType.Buffering:\n return TelemetryLevel.All;\n case MetricsType.SetupCompleted:\n return TelemetryLevel.All;\n case MetricsType.SetupFailed:\n return TelemetryLevel.All;\n case MetricsType.RoundTripTime:\n return TelemetryLevel.All;\n case MetricsType.DownlinkThroughputCapacity:\n return TelemetryLevel.All;\n case MetricsType.NetworkType:\n return TelemetryLevel.All;\n case MetricsType.ResolutionChanged:\n return TelemetryLevel.All;\n case MetricsType.ApplicationForeground:\n return TelemetryLevel.All;\n case MetricsType.ApplicationBackground:\n return TelemetryLevel.All;\n default:\n assertUnreachable(this._metrics);\n }\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport TelemetryDefault from './TelemetryDefault';\n\nexport enum TelemetryLevel {\n Off = 100,\n Essential = 10,\n All = -1\n}\n\nexport type TelemetryLevelType = 'Off' | 'Essential' | 'All';\n\nexport default class MetricsConfiguration {\n private _url = 'https://telemetry.phenixrts.com/telemetry/metrics';\n private _tenancy: string;\n private _sessionId: string;\n private _environment: string;\n private _threshold: TelemetryLevel = TelemetryDefault.defaultTelemetryLevel;\n\n get url(): string {\n return this._url;\n }\n\n set url(url: string) {\n const metricsUrl = new URL(url);\n\n metricsUrl.pathname = metricsUrl.pathname + '/metrics';\n\n this._url = metricsUrl.toString();\n }\n\n get environment(): string {\n return this._environment;\n }\n\n set environment(environment: string) {\n this._environment = environment;\n }\n\n get tenancy(): string {\n return this._tenancy;\n }\n\n set tenancy(tenancy: string) {\n this._tenancy = tenancy;\n }\n\n get sessionId(): string {\n return this._sessionId;\n }\n\n set sessionId(sessionId: string) {\n this._sessionId = sessionId;\n }\n\n get threshold(): TelemetryLevel {\n return this._threshold;\n }\n\n set threshold(threshold: TelemetryLevel) {\n this._threshold = threshold;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nimport MetricsService from './MetricsService';\nimport MetricsConfiguration, {TelemetryLevel} from './MetricsConfiguration';\nimport SDK from '../sdk/SDK';\nimport TelemetryUrl from '../sdk/TelemetryUrl';\nimport Environment from '../sdk/Environment';\nimport TelemetryLevelMapping from './TelemetricLevelMapping';\n\nexport default class MetricsFactory {\n private static _metricsServices: {[category: string]: MetricsService} = {};\n\n static getMetricsService(url: string): MetricsService {\n if (typeof url !== 'string') {\n throw new Error('ur');\n }\n\n const metricsServices = MetricsFactory._metricsServices[url];\n\n if (metricsServices) {\n return metricsServices;\n }\n\n const metricsConfiguration = new MetricsConfiguration();\n\n metricsConfiguration.sessionId = SDK.clientSessionId;\n metricsConfiguration.tenancy = SDK.tenancy.value;\n metricsConfiguration.url = TelemetryUrl.getTelemetryUrl(url);\n metricsConfiguration.environment = Environment.getEnvironmentFromUrl(url);\n\n metricsConfiguration.threshold = TelemetryLevelMapping.convertTelemetryLevelTypeToTelemetryLevel(SDK.telemetryLevel);\n\n return MetricsFactory._metricsServices[url] = new MetricsService(metricsConfiguration);\n }\n\n static setTelemetryLevel(telemetryLevel: TelemetryLevel): void {\n const metricsServices = Object.values(MetricsFactory._metricsServices);\n\n if (metricsServices && metricsServices.length) {\n metricsServices.forEach(metricsService => {\n const metricsConfiguration = metricsService.metricsConfiguration;\n\n metricsConfiguration.threshold = telemetryLevel;\n });\n }\n }\n\n private constructor() {\n throw new Error('LoggerFactory is a static class that may not be instantiated');\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport VersionManager from '../sdk/version/VersionManager';\nimport MetricsConfiguration from './MetricsConfiguration';\nimport MetricType from './MetricType';\nimport MetricsType from './MetricsType';\n\nconst requestSizeLimit = 1024;\n\ninterface IValue {\n string?: string;\n uint64?: number;\n float?: number;\n}\n\ninterface IMetricRecord {\n timestamp: string;\n tenancy: string;\n sessionId: string;\n streamId: string;\n metric: string;\n value: IValue;\n previousValue: IValue;\n fullQualifiedName: string;\n environment: string;\n version: string;\n runtime: number;\n resource?: string;\n kind?: string;\n}\n\ninterface IMetric {\n streamId?: string;\n metricType: MetricsType;\n value?: IValue;\n previousValue?: IValue;\n runtime: number;\n resource?: string;\n kind?: string;\n}\n\nexport default class MetricsService {\n private readonly _metricsConfiguration: MetricsConfiguration;\n private _metrics: Array<IMetricRecord> = [];\n private _isSending: boolean;\n private _domain = location.hostname;\n\n constructor(metricsConfiguration: MetricsConfiguration) {\n this._metricsConfiguration = metricsConfiguration;\n }\n\n get metricsConfiguration(): MetricsConfiguration {\n return this._metricsConfiguration;\n }\n\n push(metric: IMetric): void {\n const {streamId, value, previousValue, runtime, resource, kind} = metric;\n const metricType = new MetricType(metric.metricType);\n\n if (this._metricsConfiguration.threshold > metricType.getTelemetryLevel()) {\n return;\n }\n\n const metricRecord = {\n timestamp: new Date().toISOString(),\n tenancy: this._metricsConfiguration.tenancy,\n sessionId: this._metricsConfiguration.sessionId,\n streamId,\n metric: metricType.getName(),\n value,\n previousValue,\n fullQualifiedName: this._domain,\n environment: this._metricsConfiguration.environment,\n version: VersionManager.sdkVersion,\n runtime,\n resource,\n kind\n };\n\n this._metrics.push(metricRecord);\n\n const ignored = this.sendMetricsIfAble();\n }\n\n private async sendMetrics(metricsMessages: Array<IMetricRecord>): Promise<Response | void> {\n const formData = new FormData();\n\n formData.append('jsonBody', JSON.stringify({records: metricsMessages}));\n\n return await fetch(this._metricsConfiguration.url, {\n method: 'POST',\n body: formData\n });\n }\n\n private async sendMetricsIfAble(): Promise<Response | void> {\n if (this._metrics.length <= 0 || this._isSending) {\n return;\n }\n\n this._isSending = true;\n\n const metricsMessages = this._metrics.slice(0, requestSizeLimit);\n\n this._metrics = this._metrics.slice(requestSizeLimit);\n\n return this.sendMetrics(metricsMessages).then(response => {\n this._isSending = false;\n\n const ignored = this.sendMetricsIfAble();\n\n return response;\n }).catch(() => {\n this._isSending = false;\n\n const ignored = this.sendMetricsIfAble();\n });\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nenum MetricsType {\n TimeToFirstFrame,\n ChannelCreationTimeToFirstFrame,\n Stalled,\n Buffering,\n SetupCompleted,\n SetupFailed,\n RoundTripTime,\n DownlinkThroughputCapacity,\n NetworkType,\n ResolutionChanged,\n ApplicationForeground,\n ApplicationBackground\n}\n\nexport default MetricsType;","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport {TelemetryLevel, TelemetryLevelType} from './MetricsConfiguration';\nimport assertUnreachable from '../lang/assertUnreachable';\n\nexport default class TelemetryLevelMapping {\n static convertTelemetryLevelToTelemetryLevelType(telemetryLevel: TelemetryLevel): TelemetryLevelType {\n switch (telemetryLevel) {\n case TelemetryLevel.Off:\n return 'Off';\n case TelemetryLevel.Essential:\n return 'Essential';\n case TelemetryLevel.All:\n return 'All';\n default:\n assertUnreachable(telemetryLevel);\n }\n }\n\n static convertTelemetryLevelTypeToTelemetryLevel(telemetryLevelType: TelemetryLevelType): TelemetryLevel {\n switch (telemetryLevelType) {\n case 'Off':\n return TelemetryLevel.Off;\n case 'Essential':\n return TelemetryLevel.Essential;\n case 'All':\n return TelemetryLevel.All;\n default:\n assertUnreachable(telemetryLevelType);\n }\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport PrivacyMode from '../dom/PrivacyMode';\nimport {TelemetryLevel} from '../metrics/MetricsConfiguration';\n\nexport default class TelemetryDefault {\n static get defaultTelemetryLevel(): TelemetryLevel {\n return PrivacyMode.isPrivate ? TelemetryLevel.Essential : TelemetryLevel.All;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport Promise from './Promise';\n\nexport default class PromiseHandler {\n onFulfilled: Function;\n onRejected: Function;\n promise: Promise;\n\n constructor(onFulfilled, onRejected, promise) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport PromiseHandler from './PromiseHandler';\n\nclass Promise {\n _state: number;\n _handled: boolean;\n _value: Promise;\n _deferreds: Array<PromiseHandler>;\n /* eslint-disable */\n // @ts-ignore\n then(onFulfilled: Function, onRejected: Function): Promise | void;\n /* eslint-enable*/\n\n constructor(callback) {\n if (!(this instanceof Promise)) {\n throw new TypeError('Promises must be constructed via new');\n }\n\n if (typeof callback !== 'function') {\n throw new TypeError('not a function');\n }\n\n this._state = 0;\n this._handled = false;\n this._value = undefined;\n this._deferreds = [];\n\n this.doResolve(callback);\n }\n\n doResolve(callback: Function): void {\n let done = false;\n\n try {\n callback(\n value => {\n if (done) {\n return;\n }\n\n done = true;\n this.promiseResolve(value);\n },\n reason => {\n if (done) {\n return;\n }\n\n done = true;\n this.promiseReject(reason);\n }\n );\n } catch (error) {\n if (done) {\n return;\n }\n\n done = true;\n this.promiseReject(error);\n }\n }\n\n promiseResolve(newValue: Promise | undefined): void {\n const promise = this as Promise;\n\n try {\n // Promise Resolution Procedure: https://github.com/Promises-aplus/Promises-spec#the-Promise-resolution-procedure\n if (newValue === promise) {\n throw new TypeError('A Promise cannot be resolved with it self.');\n }\n\n if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {\n const then = newValue.then;\n\n if (newValue instanceof Promise) {\n promise._state = 3;\n promise._value = newValue;\n promise.finale();\n\n return;\n } else if (typeof then === 'function') {\n promise.doResolve(function(): void {\n // eslint-disable-next-line prefer-rest-params\n then.apply(newValue, arguments);\n });\n\n return;\n }\n }\n\n promise._state = 1;\n promise._value = newValue;\n promise.finale();\n } catch (e) {\n promise.promiseReject(e);\n }\n }\n\n promiseReject(newValue: Promise | undefined): void{\n this._state = 2;\n this._value = newValue;\n this.finale();\n }\n\n finale(): void {\n if (this._state === 2 && this._deferreds.length === 0) {\n Promise._immediate(() => {\n if (!this._handled) {\n Promise._unhandledRejection(this._value);\n }\n });\n }\n\n for (let i = 0, len = this._deferreds.length; i < len; i++) {\n this.handle(this._deferreds[i]);\n }\n\n this._deferreds = null;\n }\n\n handle(deferred: PromiseHandler): void {\n let promise = this as Promise;\n\n while (promise._state === 3) {\n promise = promise._value;\n }\n\n if (promise._state === 0) {\n promise._deferreds.push(deferred);\n\n return;\n }\n\n promise._handled = true;\n Promise._immediate(() => {\n const callback = promise._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n\n if (callback === null) {\n if (promise._state === 1) {\n deferred.promise.promiseResolve(promise._value);\n } else {\n deferred.promise.promiseReject(promise._value);\n }\n\n return;\n }\n\n let result;\n\n try {\n result = callback(promise._value);\n } catch (e) {\n deferred.promise.promiseReject(e);\n\n return;\n }\n\n deferred.promise.promiseResolve(result);\n });\n }\n\n static all(arr: Array<Promise>): Promise {\n return new Promise((resolve, reject) => {\n if (!Array.isArray(arr)) {\n return reject(new TypeError('Promise.all accepts an array'));\n }\n\n const args = Array.prototype.slice.call(arr);\n\n if (args.length === 0) {\n return resolve([]);\n }\n\n let remaining = args.length;\n const manageResponse = (i, value): void => {\n try {\n if (value && (typeof value === 'object' || typeof value === 'function')) {\n const then = value.then;\n\n if (typeof then === 'function') {\n then.call(\n value,\n value => manageResponse(i, value),\n reject\n );\n\n return;\n }\n }\n\n args[i] = value;\n\n if (--remaining === 0) {\n resolve(args);\n }\n } catch (error) {\n reject(error);\n }\n };\n\n for (let i = 0; i < args.length; i++) {\n manageResponse(i, args[i]);\n }\n });\n }\n\n static resolve(value): Promise {\n if (value && typeof value === 'object' && value.constructor === Promise) {\n return value;\n }\n\n return new Promise(resolve => resolve(value));\n }\n\n static reject(value): Promise {\n return new Promise((_, reject) => reject(value));\n }\n\n static race(arr: Array<Promise>): Promise {\n return new Promise((resolve, reject) => {\n if (!Array.isArray(arr)) {\n return reject(new TypeError('Promise.race accepts an array'));\n }\n\n for (let i = 0, len = arr.length; i < len; i++) {\n Promise.resolve(arr[i]).then(resolve, reject);\n }\n });\n }\n\n static _immediate(callback: Function): void {\n const ignored = setTimeout(callback, 0);\n }\n\n static _unhandledRejection(error): void {\n if (typeof console !== 'undefined' && console) {\n console.warn('Possible Unhandled Promise Rejection:', error); // eslint-disable-line no-console\n }\n }\n}\n\nPromise.prototype['catch'] = function(onRejected: Function): Promise | void {\n return this.then(null, onRejected);\n};\n\nPromise.prototype['then'] = function(onFulfilled: Function, onRejected: Function): Promise | void {\n const promise = new this.constructor(() => null);\n\n this.handle(new PromiseHandler(onFulfilled, onRejected, promise));\n\n return promise;\n};\n\nPromise.prototype['finally'] = function(callback: Function): Promise | void {\n const constructor = this.constructor;\n\n return this.then(\n value => constructor.resolve(callback()).then(() => value),\n reason => constructor.resolve(callback()).then(() => constructor.reject(reason))\n );\n};\n\nexport default Promise;","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport LoggerFactory from '../logger/LoggerFactory';\nimport IPeerConnection, {PeerConnectionEvents} from './IPeerConnection';\nimport {ILogger} from '../logger/LoggerInterface';\nimport FeatureEnablement from '../sdk/feature/FeatureEnablement';\nimport {ILegacyRTCStatsReport} from './RtcConnectionMonitor';\n\nclass VanillaPeerConnection implements IPeerConnection {\n private readonly _logger: ILogger = LoggerFactory.getLogger('VanillaPeerConnection');\n private readonly _peerConnection: RTCPeerConnection;\n\n constructor(configuration?: RTCConfiguration) {\n if (FeatureEnablement.webkitRTCPeerConnectionEnabled) {\n this._peerConnection = new webkitRTCPeerConnection(configuration);\n\n return;\n }\n\n this._peerConnection = new RTCPeerConnection(configuration);\n }\n\n get native(): RTCPeerConnection {\n return this._peerConnection;\n }\n\n get currentLocalDescription(): RTCSessionDescription | null {\n return this._peerConnection.currentLocalDescription;\n }\n\n get currentRemoteDescription(): RTCSessionDescription | null {\n return this._peerConnection.currentRemoteDescription;\n }\n\n get iceConnectionState(): RTCIceConnectionState {\n return this._peerConnection.iceConnectionState;\n }\n\n get supportsGetConfiguration(): boolean {\n return typeof this._peerConnection.getConfiguration === 'function';\n }\n\n get supportsSetConfiguration(): boolean {\n return typeof this._peerConnection.setConfiguration === 'function';\n }\n\n get supportsAddTransceiver(): boolean {\n return !FeatureEnablement.addTranceiverDisabled && typeof this._peerConnection.addTransceiver === 'function';\n }\n\n async createOffer(options?: RTCOfferOptions): Promise<RTCSessionDescriptionInit> {\n if (FeatureEnablement.promiseBasedPCMethodsDisabled) {\n // Ignored as typescript does not have legacy getStats types\n /* eslint-disable @typescript-eslint/ban-ts-ignore */\n // @ts-ignore\n return new Promise((resolve, reject) => this._peerConnection.createOffer(resolve, reject, options));\n /* eslint-enable */\n }\n\n return this._peerConnection.createOffer(options);\n }\n\n async createAnswer(options?: RTCAnswerOptions): Promise<RTCSessionDescriptionInit> {\n if (FeatureEnablement.promiseBasedPCMethodsDisabled) {\n // Ignored as typescript does not have legacy getStats types\n /* eslint-disable @typescript-eslint/ban-ts-ignore */\n // @ts-ignore\n return new Promise((resolve, reject) => this._peerConnection.createAnswer(resolve, reject, options));\n /* eslint-enable */\n }\n\n return this._peerConnection.createAnswer(options);\n }\n\n async setLocalDescription(description: RTCSessionDescriptionInit): Promise<void> {\n return this._peerConnection.setLocalDescription(FeatureEnablement.promiseBasedPCMethodsDisabled ?\n new RTCSessionDescription(description) : description);\n }\n\n async setRemoteDescription(description: RTCSessionDescriptionInit): Promise<void> {\n const hasCrypto = description.sdp.match(/a=crypto:/i);\n\n if (hasCrypto) {\n this._logger.warn('SDP a=crypto is not supported');\n }\n\n return this._peerConnection.setRemoteDescription(FeatureEnablement.promiseBasedPCMethodsDisabled ?\n new RTCSessionDescription(description) : description);\n }\n\n getStats(selector?: MediaStreamTrack | null): Promise<RTCStatsReport> {\n return this._peerConnection.getStats(selector);\n }\n\n getStatsLegacy(): Promise<ILegacyRTCStatsReport> {\n return new Promise(resolve => {\n // Ignored as typescript does not have legacy getStats types\n /* eslint-disable @typescript-eslint/ban-ts-ignore */\n // @ts-ignore\n const ignored = this._peerConnection.getStats(resolve);\n /* eslint-enable */\n });\n }\n\n addEventListener(type: PeerConnectionEvents, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void {\n this._peerConnection.addEventListener(type, listener, options);\n }\n\n removeEventListener(type: PeerConnectionEvents, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void {\n this._peerConnection.removeEventListener(type, listener, options);\n }\n\n addTransceiver(name: string, options: RTCRtpTransceiverInit): RTCRtpTransceiver {\n return this._peerConnection.addTransceiver(name, options);\n }\n\n getConfiguration(): RTCConfiguration {\n return this._peerConnection.getConfiguration();\n }\n\n setConfiguration(configuration: RTCConfiguration): void {\n this._peerConnection.setConfiguration(configuration);\n }\n\n set ontrack(handler: ((this: RTCPeerConnection, ev: RTCTrackEvent) => unknown) | null) {\n this._peerConnection.ontrack = handler;\n }\n\n get ontrack(): ((this: RTCPeerConnection, ev: RTCTrackEvent) => unknown) | null {\n return this._peerConnection.ontrack;\n }\n\n set onicecandidate(handler: ((this: RTCPeerConnection, ev: RTCPeerConnectionIceEvent) => unknown) | null) {\n this._peerConnection.onicecandidate = handler;\n }\n\n get onicecandidate(): ((this: RTCPeerConnection, ev: RTCPeerConnectionIceEvent) => unknown) | null {\n return this._peerConnection.onicecandidate;\n }\n\n set oniceconnectionstatechange(handler: ((this: RTCPeerConnection, ev: Event) => unknown) | null) {\n this._peerConnection.oniceconnectionstatechange = handler;\n }\n\n get oniceconnectionstatechange(): ((this: RTCPeerConnection, ev: Event) => unknown) | null {\n return this._peerConnection.oniceconnectionstatechange;\n }\n\n close(): void {\n this._peerConnection.close();\n }\n}\n\nexport default VanillaPeerConnection;","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nimport IPeerConnectionFactory from './IPeerConnectionFactory';\nimport IPeerConnection from './IPeerConnection';\nimport VanillaPeerConnection from './VanillaPeerConnection';\n\nclass VanillaPeerConnectionFactory implements IPeerConnectionFactory {\n async createPeerConnection(configuration?: RTCConfiguration): Promise<IPeerConnection> {\n return new VanillaPeerConnection(configuration);\n }\n}\n\nexport default VanillaPeerConnectionFactory;","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nimport Subject from './Subject';\nimport IDisposable from '../lang/IDisposable';\n\nexport default class ReadOnlySubject<T> {\n private readonly _subject: Subject<T>;\n\n constructor(subject: Subject<T>) {\n this._subject = subject;\n }\n\n get value(): T {\n return this._subject.value;\n }\n\n subscribe(listener: (T) => void): IDisposable {\n return this._subject.subscribe(listener);\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nimport IDisposable from '../lang/IDisposable';\nimport Disposable from '../lang/Disposable';\nimport IComparable from '../lang/IComparable';\n\nclass DisposableListener<T> extends Disposable {\n constructor(listeners: Array<T>, listener: T) {\n super(() => {\n const idx = listeners.indexOf(listener);\n\n if (idx >= 0) {\n listeners.splice(idx, 1);\n }\n });\n }\n}\n\nexport default class Subject<T> {\n private readonly _listeners: Array<(T) => void>;\n private _value: T;\n\n constructor(value: T) {\n this._listeners = [];\n this._value = value;\n }\n\n set value(value: T) {\n let changed = this._value !== value;\n\n if (changed && value) {\n const comparable = value as unknown as IComparable<T>;\n\n if (typeof comparable.equals === 'function') {\n changed = !comparable.equals(this._value);\n }\n }\n\n if (!changed) {\n return;\n }\n\n this._value = value;\n\n this._listeners.forEach(listener => {\n listener(value);\n });\n }\n\n get value(): T {\n return this._value;\n }\n\n subscribe(listener: (T) => void): IDisposable {\n this._listeners.push(listener);\n\n listener(this._value);\n\n return new DisposableListener<(T) => void>(this._listeners, listener);\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nexport default class Environment {\n static getEnvironmentFromUrl(url: string): string {\n try {\n const baseURL = new URL(url);\n\n return baseURL.origin;\n } catch (e) {\n return '';\n }\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport LoggerFactory from '../logger/LoggerFactory';\nimport Strings from '../lang/Strings';\nimport Subject from '../rx/Subject';\nimport ReadOnlySubject from '../rx/ReadOnlySubject';\nimport IPeerConnectionFactory from '../rtc/IPeerConnectionFactory';\nimport VanillaPeerConnectionFactory from '../rtc/VanillaPeerConnectionFactory';\nimport EdgeAuth from './edgeAuth/EdgeAuth';\nimport {ILogger} from '../logger/LoggerInterface';\nimport {LoggingLevel, LoggingLevelInputTypes} from '../logger/Logger';\nimport ConsoleAppender from '../logger/ConsoleAppender';\nimport TelemetryAppender from '../telemetry/TelemetryApender';\nimport ConfigurationParameterReader from '../dom/ConfigurationParameterReader';\nimport MetricsConfiguration, {TelemetryLevel, TelemetryLevelType} from '../metrics/MetricsConfiguration';\nimport MetricsService from '../metrics/MetricsService';\nimport TelemetryLevelMapping from '../metrics/TelemetricLevelMapping';\nimport LoggingLevelMapping from '../logger/LoggingLevelMapping';\nimport PrivacyMode from '../dom/PrivacyMode';\nimport BrowserDetector from '../dom/BrowserDetector';\nimport {IConfigurationParameterReader} from '../dom/IConfigurationParamaterReader';\nimport ApplicationActivityMonitor from '../dom/ApplicationActivityMonitor';\nimport TelemetryUrl from './TelemetryUrl';\nimport Environment from './Environment';\nimport {HlsPlayerType, ShakaType, WebPlayerType} from './streaming/StreamTypes';\nimport DiscoveryUri from './discovery/DiscoveryUri';\nimport MetricsFactory from '../metrics/MetricsFactory';\nimport TelemetryDefault from '../metrics/TelemetryDefault';\n\nconst pageLoadTime = window['__phenixPageLoadTime'] || window['__pageLoadTime'] || Date.now();\n\ninterface IInitOptions {\n discoveryUri?: string;\n peerConnectionFactory?: IPeerConnectionFactory;\n telemetryLevel?: TelemetryLevelType;\n loggingLevel?: LoggingLevelInputTypes;\n consoleLoggingLevel?: LoggingLevelInputTypes;\n automaticallyPlayMediaStream?: boolean;\n automaticallyMuteVideoOnPlayFailure?: boolean;\n webPlayerLoader?: (player: WebPlayerType) => void;\n shakaPlayerLoader?: (player: ShakaType) => void;\n hlsJsLoader?: (player: HlsPlayerType) => void;\n}\n\nexport default class SDK {\n private static _automaticallyRetryOnFailure = true;\n private static _automaticallyReconnectPeerConnection = true;\n private static _automaticallyPlayMediaStream = true;\n private static _automaticallyMuteVideoOnPlayFailure = true;\n private static _webPlayerLoader = null;\n private static _shakaPlayerLoader = null;\n private static _hlsJsLoader = null;\n private static _configurationParameterReader: IConfigurationParameterReader = new ConfigurationParameterReader();\n private static _applicationActivityMonitor: ApplicationActivityMonitor;\n private static _environment: Subject<string> = new Subject<string>('');\n private static _telemetryUrl: Subject<string> = new Subject<string>('https://telemetry.phenixrts.com/telemetry');\n private static _maximalNumberOfPeerConnectionReconnectAttempts = 8;\n private static _telemetryLevel: Subject<TelemetryLevel> = new Subject<TelemetryLevel>(TelemetryDefault.defaultTelemetryLevel);\n private static _metricsService: MetricsService;\n private static _metricsConfiguration: MetricsConfiguration\n private static readonly _sendLocalCandidates: Subject<boolean> = new Subject(!PrivacyMode.isPrivate);\n private static readonly _tenancy: Subject<string> = new Subject<string>('');\n private static readonly _clientSessionId: string = Strings.random(32);\n private static readonly _loadedTimestamp: Date = new Date();\n private static readonly _logger: ILogger = LoggerFactory.getLogger('SDK');\n private static readonly _initialized: Subject<boolean> = new Subject<boolean>(false);\n private static readonly _peerConnectionFactory: Subject<IPeerConnectionFactory> = new Subject<IPeerConnectionFactory>(new VanillaPeerConnectionFactory());\n private static readonly _readOnlyInitialized: ReadOnlySubject<boolean> = new ReadOnlySubject<boolean>(SDK._initialized);\n private static readonly _readOnlyDiscoveryUri: ReadOnlySubject<string> = new ReadOnlySubject<string>(DiscoveryUri.uri);\n private static readonly _readOnlyPeerConnectionFactory: ReadOnlySubject<IPeerConnectionFactory> = new ReadOnlySubject<IPeerConnectionFactory>(SDK._peerConnectionFactory);\n\n static get pageLoadTime(): number {\n return pageLoadTime;\n }\n\n static get sendLocalCandidates(): Subject<boolean> {\n return this._sendLocalCandidates;\n }\n\n static get tenancy(): Subject<string> {\n return this._tenancy;\n }\n\n static get clientSessionId(): string {\n return SDK._clientSessionId;\n }\n\n static get loadedTimestamp(): Date {\n return SDK._loadedTimestamp;\n }\n\n static get initialized(): ReadOnlySubject<boolean> {\n return SDK._readOnlyInitialized;\n }\n\n static get discoveryUri(): ReadOnlySubject<string> {\n return SDK._readOnlyDiscoveryUri;\n }\n\n static get peerConnectionFactory(): ReadOnlySubject<IPeerConnectionFactory> {\n return SDK._readOnlyPeerConnectionFactory;\n }\n\n static get automaticRetryOnFailure(): boolean {\n return SDK._automaticallyRetryOnFailure;\n }\n\n static get automaticallyReconnectPeerConnection(): boolean {\n return SDK._automaticallyReconnectPeerConnection;\n }\n\n static get automaticallyPlayMediaStream(): boolean {\n return SDK._automaticallyPlayMediaStream;\n }\n\n static get automaticallyMuteVideoOnPlayFailure(): boolean {\n return SDK._automaticallyMuteVideoOnPlayFailure;\n }\n\n static get webPlayerLoader(): (WebPlayerType) => void {\n return this._webPlayerLoader;\n }\n\n static get shakaPlayerLoader(): (ShakaType) => void {\n return this._shakaPlayerLoader;\n }\n\n static get hlsJsLoader(): (HlsPlayerType) => void {\n return this._hlsJsLoader;\n }\n\n static get metricsService(): MetricsService {\n return SDK._metricsService;\n }\n\n static get applicationActivityMonitor(): ApplicationActivityMonitor {\n return this._applicationActivityMonitor;\n }\n\n static get telemetryUrl(): Subject<string> {\n return this._telemetryUrl;\n }\n\n static get maximalNumberOfPeerConnectionReconnectAttempts(): number {\n return this._maximalNumberOfPeerConnectionReconnectAttempts;\n }\n\n static set maximalNumberOfPeerConnectionReconnectAttempts(retriesAmount: number) {\n this._maximalNumberOfPeerConnectionReconnectAttempts = retriesAmount;\n }\n\n static get loggingLevel(): LoggingLevelInputTypes {\n return LoggingLevelMapping.convertLoggingLevelToLoggingLevelType(this._logger.threshold.value);\n }\n\n static get telemetryLevel(): TelemetryLevelType {\n return TelemetryLevelMapping.convertTelemetryLevelToTelemetryLevelType(SDK._telemetryLevel.value);\n }\n\n static get browserDetector(): BrowserDetector {\n return BrowserDetector;\n }\n\n static applyTelemetryConfiguration(): void {\n const telemetryConfiguration = LoggerFactory.telemetryConfiguration;\n\n telemetryConfiguration.sessionId = SDK.clientSessionId;\n\n const ignoredEnvironment = SDK._environment.subscribe(environment => {\n telemetryConfiguration.environment = environment;\n });\n const ignoredDiscoveryUri = SDK.telemetryUrl.subscribe(value => {\n const telemetryAppender = this._logger.appenders.value.find(appender => appender instanceof TelemetryAppender);\n\n if (telemetryAppender) {\n telemetryConfiguration.url = value;\n\n this._logger.appenders.remove(telemetryAppender);\n this._logger.appenders.add(new TelemetryAppender(telemetryConfiguration));\n this._logger.info('Telemetry URL was set to [%s]', telemetryConfiguration.url);\n }\n });\n const ignoredTenancy = SDK._tenancy.subscribe(tenancy => {\n const telemetryAppender = this._logger.appenders.value.find(appender => appender instanceof TelemetryAppender);\n\n if (telemetryAppender && tenancy) {\n telemetryConfiguration.tenancy = tenancy;\n\n this._logger.appenders.remove(telemetryAppender);\n this._logger.appenders.add(new TelemetryAppender(telemetryConfiguration));\n this._logger.info('Telemetry tenancy was set to [%s]', telemetryConfiguration.tenancy);\n }\n });\n }\n\n static applyMetricsConfiguration(): void {\n SDK._metricsService = MetricsFactory.getMetricsService(DiscoveryUri.uri.value);\n SDK._metricsConfiguration = SDK._metricsService.metricsConfiguration;\n\n SDK._metricsConfiguration.sessionId = SDK.clientSessionId;\n\n const ignoredEnvironment = SDK._environment.subscribe(environment => {\n SDK._metricsConfiguration.environment = environment;\n });\n const ignoredDiscoveryUri = SDK.telemetryUrl.subscribe(value => {\n SDK._metricsConfiguration.url = value;\n });\n const ignoredTenancy = SDK._tenancy.subscribe(tenancy => {\n SDK._metricsConfiguration.tenancy = tenancy;\n });\n const value = this._configurationParameterReader.getStringValue('phenix-metrics-level');\n\n if (value) {\n MetricsFactory.setTelemetryLevel(TelemetryLevel[value]);\n }\n\n const ignoredTelemetryLevel = SDK._telemetryLevel.subscribe(telemetryLevel => {\n MetricsFactory.setTelemetryLevel(telemetryLevel);\n });\n }\n\n static applyAutomaticallyRetryOnFailureFromParameterConfiguration(): void {\n this._automaticallyRetryOnFailure = this._configurationParameterReader.getBooleanValue('phenix-automatically-retry-on-failure');\n this._logger.info('Automatically retry on failure is set to: [%s]', this._automaticallyRetryOnFailure);\n\n return;\n }\n\n static applyAutomaticallyReconnectPeerConnectionFromParameterConfiguration(): void {\n this._automaticallyReconnectPeerConnection = this._configurationParameterReader.getBooleanValue('phenix-automatically-reconnect-peer-connection');\n this._logger.info('Automatically reconnect peer connection is set to: [%s]', this._automaticallyReconnectPeerConnection);\n\n return;\n }\n\n static applyDiscoveryUriDefaultFromParameterConfiguration(): void {\n SDK.discoveryUri.subscribe(value => {\n SDK.telemetryUrl.value = SDK.getTelemetryUrl(value);\n SDK._environment.value = Environment.getEnvironmentFromUrl(value);\n });\n\n const channelToken = this._configurationParameterReader.getStringValue('phenix-channel-token');\n\n if (channelToken) {\n const parsedToken = EdgeAuth.parseToken(channelToken);\n\n SDK._tenancy.value = EdgeAuth.getTenancy(parsedToken);\n DiscoveryUri.uri.value = (EdgeAuth.getUri(parsedToken) || SDK.discoveryUri.value).toString();\n\n this._logger.info('Discovery URI set from configuration parameter to [%s]', SDK.discoveryUri.value);\n\n return;\n }\n\n const uriValue = this._configurationParameterReader.getStringValue('phenix-uri');\n\n if (uriValue) {\n DiscoveryUri.uri.value = uriValue;\n this._logger.info('Discovery URI set from \"phenix-uri\" configuration parameter tag to [%s]', SDK.discoveryUri.value);\n\n return;\n }\n\n const baseURIValue = this._configurationParameterReader.getStringValue('phenix-base-uri');\n\n if (baseURIValue) {\n DiscoveryUri.uri.value = `${baseURIValue}/pcast/endPoints`;\n this._logger.info('Discovery URI set from \"phenix-base-uri\" configuration parameter tag to [%s]', SDK.discoveryUri.value);\n\n return;\n }\n }\n\n static init(options?: IInitOptions): void {\n if (!this._initialized.value) {\n this._applicationActivityMonitor = new ApplicationActivityMonitor();\n }\n\n if (options) {\n if (options.discoveryUri) {\n DiscoveryUri.uri.value = options.discoveryUri;\n }\n\n if (options.peerConnectionFactory) {\n SDK._peerConnectionFactory.value = options.peerConnectionFactory;\n }\n\n if (options.telemetryLevel && TelemetryLevel[options.telemetryLevel]) {\n SDK._telemetryLevel.value = TelemetryLevelMapping.convertTelemetryLevelTypeToTelemetryLevel(options.telemetryLevel);\n }\n\n if (options.loggingLevel && LoggingLevel[options.loggingLevel]) {\n this._logger.threshold.setThreshold(LoggingLevelMapping.convertLoggingLevelTypeToLoggingLevel(options.loggingLevel));\n }\n\n if (options.consoleLoggingLevel &&\n LoggingLevel[options.consoleLoggingLevel]) {\n const consoleAppender = this._logger.appenders.value.find(appender => appender instanceof ConsoleAppender);\n\n if (consoleAppender) {\n this._logger.appenders.remove(consoleAppender);\n }\n\n if (options.consoleLoggingLevel !== 'Off') {\n this._logger.appenders.add(new ConsoleAppender(LoggingLevelMapping.convertLoggingLevelTypeToLoggingLevel(options.consoleLoggingLevel)));\n }\n }\n\n if (typeof options.automaticallyPlayMediaStream === 'boolean') {\n this._automaticallyPlayMediaStream = options.automaticallyPlayMediaStream;\n }\n\n if (typeof options.automaticallyMuteVideoOnPlayFailure === 'boolean') {\n this._automaticallyMuteVideoOnPlayFailure = options.automaticallyMuteVideoOnPlayFailure;\n }\n\n if (options.webPlayerLoader) {\n this._webPlayerLoader = options.webPlayerLoader;\n }\n\n if (options.shakaPlayerLoader) {\n this._shakaPlayerLoader = options.shakaPlayerLoader;\n }\n\n if (options.hlsJsLoader) {\n this._hlsJsLoader = options.hlsJsLoader;\n }\n }\n\n SDK._initialized.value = true;\n }\n\n static dispose(): void {\n SDK._initialized.value = false;\n this._applicationActivityMonitor.dispose();\n this._applicationActivityMonitor = null;\n }\n\n static getTelemetryUrl(url: string): string {\n return TelemetryUrl.getTelemetryUrl(url);\n }\n\n private constructor() {\n throw new Error('SDK is a static class that may not be instantiated');\n }\n}\n\nwindow.addEventListener('unload', () => {\n SDK.dispose();\n});\n\nSDK.applyDiscoveryUriDefaultFromParameterConfiguration();\nSDK.applyMetricsConfiguration();\nSDK.applyTelemetryConfiguration();\nSDK.applyAutomaticallyRetryOnFailureFromParameterConfiguration();\nSDK.applyAutomaticallyReconnectPeerConnectionFromParameterConfiguration();\nSDK.init();","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nexport default class TelemetryUrl {\n static getTelemetryUrl(url: string): string {\n try {\n const baseURL = new URL(url);\n const segments = baseURL.hostname.split('.');\n\n switch (baseURL.protocol) {\n case 'ws:':\n baseURL.protocol = 'http:';\n\n break;\n case 'wss:':\n baseURL.protocol = 'https:';\n\n break;\n\n default:\n break;\n }\n\n if (segments.length === 2 ||\n (segments.length === 3 && segments[segments.length - 2].length <= 2 && segments[segments.length - 1].length <= 3)\n ) {\n segments.unshift('telemetry');\n } else if (segments[0].startsWith('stg-') || segments[0].endsWith('-stg') || segments[0].includes('-stg-') || segments[0] === 'stg') {\n segments[0] = 'telemetry-stg';\n } else if (segments[0].startsWith('local') || segments[0].endsWith('-local')) {\n // Leave URL unchanged\n } else {\n segments[0] = 'telemetry';\n }\n\n baseURL.hostname = segments.join('.');\n\n return `${baseURL.origin}/telemetry`;\n } catch (e) {\n return url;\n }\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nenum ChannelState {\n Offline = 1,\n Starting,\n Paused,\n Playing,\n Recovering,\n Reconnecting,\n StandBy,\n Stopped,\n Unauthorized,\n GeoRestricted,\n GeoBlocked,\n Error,\n UnsupportedFeature\n}\n\nexport default ChannelState;","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nexport type BitrateStateType = 'Keep' | 'Reset';\nexport type BitrateModeType = 'Normal' | 'Force' | 'Reset';\n\nexport enum BitrateState {\n Keep,\n Reset\n}\n\nexport enum BitrateMode {\n Normal,\n Force,\n Reset\n}\n\nexport interface ISetTemporaryMaximalBitrate {\n apiVersion: number;\n sharedSecret: string;\n elapsedInMilliseconds: number;\n bitrateInBitsPerSecond: number;\n bitrateState: BitrateStateType;\n bitrateMode: BitrateModeType;\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport IComparable from '../lang/IComparable';\n\nexport default class Dimension implements IComparable<Dimension> {\n readonly width: number;\n readonly height: number;\n\n static get empty(): Dimension {\n return new Dimension(0, 0);\n }\n\n constructor(width: number, height: number) {\n this.width = width;\n this.height = height;\n }\n\n equals(other: Dimension): boolean {\n return other && this.width === other.width && this.height === other.height;\n }\n\n toString(): string {\n return `${this.width}x${this.height}`;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nexport default class Durations {\n private readonly _duration: number;\n\n constructor(duration = 0) {\n this._duration = duration;\n }\n\n toIsoString(): string {\n if (this._duration === 0) {\n return 'P0S';\n }\n\n const isNegative = this._duration < 0;\n const duration = isNegative ? Math.abs(this._duration) : this._duration;\n let offset = Math.floor(duration);\n const milliseconds = offset % 1000;\n\n offset = Math.floor(offset / 1000);\n\n const seconds = offset % 60;\n\n offset = Math.floor(offset / 60);\n\n const minutes = offset % 60;\n\n offset = Math.floor(offset / 60);\n\n const hours = offset % 24;\n const parts = ['PT'];\n\n if (isNegative) {\n parts.unshift('-');\n }\n\n if (hours) {\n parts.push(hours + 'H');\n }\n\n if (minutes) {\n parts.push(minutes + 'M');\n }\n\n if (seconds || milliseconds) {\n parts.push(String(seconds));\n\n if (milliseconds) {\n parts.push('.' + this.padStart(milliseconds.toString(), 3, '0'));\n }\n\n parts.push('S');\n }\n\n return parts.join('');\n }\n\n padStart(item: string, targetLength: number, padString: string): string {\n targetLength = targetLength >> 0;\n padString = String((typeof padString !== 'undefined' ? padString : ' '));\n\n if (item.length > targetLength) {\n return item;\n }\n\n targetLength = targetLength - item.length;\n\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length);\n }\n\n return padString.slice(0, targetLength) + item;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport LoggerFactory from '../logger/LoggerFactory';\nimport {ILogger} from '../logger/LoggerInterface';\nimport Durations from '../time/Duration';\nimport Disposable from '../lang/Disposable';\nimport IDisposable from '../lang/IDisposable';\nimport MetricsType from '../metrics/MetricsType';\nimport DisposableList from '../lang/DisposableList';\nimport MetricsService from '../metrics/MetricsService';\n\nexport default class VideoTelemetry implements IDisposable {\n private readonly _pageLoadTime: number;\n private readonly _channelStartTime: number;\n private readonly _logger: ILogger = LoggerFactory.getLogger('StreamTelemetry');\n private readonly _disposables: DisposableList = new DisposableList();\n private readonly _streamId: string;\n private readonly _metricsService: MetricsService;\n private _listenToFirstTime: () => void;\n private _listenForStall: () => void;\n private _listenForContinuation: (event) => void;\n private _timeToFirstFrame: number;\n private _channelCreationTimeToFirstFrame: number;\n private _startRecordingFirstFrame: number;\n private _videoStalled: number;\n private _lastProgress: number;\n private _videoResolution: string;\n private _clearTimeToFirstFrameListener: Disposable;\n private _clearRebufferingListener: Disposable;\n\n constructor(streamId: string, pageLoadTime: number, channelStartTime: number, metricsService: MetricsService) {\n this._streamId = streamId;\n this._pageLoadTime = pageLoadTime;\n this._channelStartTime = channelStartTime;\n\n this._metricsService = metricsService;\n }\n\n setupListenerForTimeToFirstTime(video: HTMLVideoElement): void {\n this._startRecordingFirstFrame = Date.now();\n\n this._listenToFirstTime = (): void => this.callTimeToFirstFrame();\n\n video.addEventListener('loadeddata', this._listenToFirstTime);\n video.addEventListener('loadedmetadata', this._listenToFirstTime);\n\n this._clearTimeToFirstFrameListener = new Disposable(() => {\n video.removeEventListener('loadeddata', this._listenToFirstTime);\n video.removeEventListener('loadedmetadata', this._listenToFirstTime);\n });\n this._disposables.add(this._clearTimeToFirstFrameListener);\n }\n\n setupListenerForRebuffering(video: HTMLVideoElement): void {\n this._listenForStall = (): void => this.onStall();\n\n this._listenForContinuation = (event): void => this.onContinuation(event, video);\n\n video.addEventListener('stalled', this._listenForStall);\n video.addEventListener('pause', this._listenForStall);\n video.addEventListener('suspend', this._listenForStall);\n video.addEventListener('play', this._listenForContinuation);\n video.addEventListener('playing', this._listenForContinuation);\n video.addEventListener('progress', this._listenForContinuation);\n video.addEventListener('timeupdate', this._listenForContinuation);\n\n this._clearRebufferingListener = new Disposable(() => {\n video.removeEventListener('stalled', this._listenForStall);\n video.removeEventListener('pause', this._listenForStall);\n video.removeEventListener('suspend', this._listenForStall);\n video.removeEventListener('play', this._listenForContinuation);\n video.removeEventListener('playing', this._listenForContinuation);\n video.removeEventListener('progress', this._listenForContinuation);\n video.removeEventListener('timeupdate', this._listenForContinuation);\n });\n\n this._disposables.add(this._clearRebufferingListener);\n }\n\n dispose(): void {\n this._disposables.dispose();\n }\n\n private get durationSincePageLoad(): string {\n const now = Date.now();\n\n return new Durations(now - this._pageLoadTime).toIsoString();\n }\n\n private callTimeToFirstFrame(): void {\n const now = Date.now();\n\n this.pushTimeToFirstFrame(now);\n this.pushChannelCreationTimeToFirstFrame(now);\n\n this._clearTimeToFirstFrameListener.dispose();\n }\n\n private pushTimeToFirstFrame(now): void {\n this._timeToFirstFrame = now - this._startRecordingFirstFrame;\n\n this._metricsService.push({\n metricType: MetricsType.TimeToFirstFrame,\n runtime: (now - this._pageLoadTime) / 1000,\n value: {uint64: this._timeToFirstFrame},\n streamId: this._streamId\n });\n\n this._logger.info(\n '[%s] [%s] First frame [%s]',\n this.durationSincePageLoad,\n this._streamId,\n new Durations(this._timeToFirstFrame).toIsoString()\n );\n }\n\n private pushChannelCreationTimeToFirstFrame(now): void {\n this._channelCreationTimeToFirstFrame = now - this._channelStartTime;\n\n this._metricsService.push({\n metricType: MetricsType.ChannelCreationTimeToFirstFrame,\n runtime: (now - this._pageLoadTime) / 1000,\n value: {uint64: this._channelCreationTimeToFirstFrame},\n streamId: this._streamId\n });\n\n this._logger.info(\n '[%s] [%s] Channel creation to first frame [%s]',\n this.durationSincePageLoad,\n this._streamId,\n new Durations(this._channelCreationTimeToFirstFrame).toIsoString()\n );\n }\n\n private onStall(): void {\n if (this._videoStalled) {\n return;\n }\n\n this._metricsService.push({\n metricType: MetricsType.Stalled,\n runtime: (Date.now() - this._pageLoadTime) / 1000,\n streamId: this._streamId\n });\n\n this._videoStalled = Date.now();\n\n this._logger.info(\n '[%s] [%s] [buffering] Stream has stalled',\n this.durationSincePageLoad,\n this._streamId\n );\n }\n\n private onContinuation(event, video): void {\n if (!video.buffered) {\n return;\n }\n\n const bufferLength = video.buffered.length;\n const hasNotProgressedSinceLastProgressEvent = event.type === 'playing'\n || bufferLength > 0 ? (event.type === 'progress'\n || event.type === 'timeupdate')\n && video.buffered.end(bufferLength - 1) === this._lastProgress : true;\n\n if (!this._videoStalled || hasNotProgressedSinceLastProgressEvent) {\n return;\n }\n\n if (event.type === 'progress') {\n this._lastProgress = video.buffered.end(bufferLength - 1);\n }\n\n const timeSinceStop = Date.now() - this._videoStalled;\n\n this._metricsService.push({\n metricType: MetricsType.Buffering,\n runtime: (Date.now() - this._pageLoadTime) / 1000,\n value: {uint64: timeSinceStop},\n streamId: this._streamId\n });\n\n this._logger.info(\n '[%s] [%s] [buffering] Stream has recovered from stall after [%s]',\n this.durationSincePageLoad,\n this._streamId,\n new Durations(timeSinceStop).toIsoString()\n );\n this._videoStalled = null;\n }\n\n onVideoResolutionChanges(newResolution: string): void {\n this._metricsService.push({\n metricType: MetricsType.ResolutionChanged,\n runtime: (Date.now() - this._pageLoadTime) / 1000,\n value: {string: newResolution},\n previousValue: this._videoResolution ? {string: this._videoResolution} : undefined,\n streamId: this._streamId\n });\n\n this._videoResolution = newResolution;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport MetricsType from '../metrics/MetricsType';\nimport MetricType from '../metrics/MetricType';\nimport Durations from '../time/Duration';\nimport {ILogger} from '../logger/LoggerInterface';\nimport SDK from '../sdk/SDK';\nimport LoggerFactory from '../logger/LoggerFactory';\n\nexport class StreamSetupListener {\n private readonly _logger: ILogger = LoggerFactory.getLogger('StreamSetupListener');\n private readonly metricsService = SDK.metricsService;\n private readonly _pageLoadTime: number;\n private readonly _startTime: number;\n private _metricSubmitted = false;\n\n constructor(pageLoadTime: number) {\n this._startTime = Date.now();\n this._pageLoadTime = pageLoadTime;\n }\n\n success(streamId): void {\n this.recordStreamMetric(MetricsType.SetupCompleted, streamId);\n }\n\n fail(): void {\n this.recordStreamMetric(MetricsType.SetupFailed);\n }\n\n private recordStreamMetric(metricType: MetricsType, streamId?: string): void {\n if (this._metricSubmitted) {\n return ;\n }\n\n this._metricSubmitted = true;\n\n const now = Date.now();\n const setupTime = now - this._startTime;\n const metricName = new MetricType(metricType).getName();\n\n this.metricsService.push({\n metricType,\n runtime: (now - this._pageLoadTime) / 1000,\n value: {uint64: setupTime},\n streamId\n });\n\n this._logger.info(\n '[%s] [%s] Stream metric [%s] in [%s]',\n new Durations(now - this._pageLoadTime).toIsoString(),\n streamId,\n metricName,\n new Durations(setupTime).toIsoString()\n );\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nimport IDisposable from '../lang/IDisposable';\nimport Disposable from '../lang/Disposable';\nimport Subject from '../rx/Subject';\nimport DisposableList from '../lang/DisposableList';\n\nexport default class NetworkMonitor implements IDisposable {\n private readonly _disposables: DisposableList = new DisposableList();\n private readonly _isSupported = navigator && navigator['connection'];\n private readonly _rtt: Subject<number> = new Subject(undefined);\n private readonly _effectiveType: Subject<string> = new Subject(undefined);\n private readonly _downlinkThroughputCapacity: Subject<number> = new Subject(undefined);\n\n constructor() {\n if (!this.isSupported) {\n return;\n }\n\n this.setupNetworkChangeListeners();\n this.updateStatistics();\n }\n\n get isSupported(): boolean {\n return this._isSupported;\n }\n\n get rtt(): Subject<number> {\n return this._rtt;\n }\n\n get effectiveType(): Subject<string> {\n return this._effectiveType;\n }\n\n get downlinkThroughputCapacity(): Subject<number> {\n return this._downlinkThroughputCapacity;\n }\n\n dispose(): void {\n this._disposables.dispose();\n }\n\n private getDownlinkThroughputCapacity(): number {\n if (!this.isSupported) {\n return -1;\n }\n\n return navigator['connection'].downlink || navigator['connection'].downlinkMax;\n }\n\n private getEffectiveType(): string {\n if (!this.isSupported) {\n return 'Unknown';\n }\n\n return navigator['connection'].effectiveType || navigator['connection'].type;\n }\n\n private getRoundTripTime(): number {\n return navigator['connection'].rtt;\n }\n\n private setupNetworkChangeListeners(): void {\n const listener = (): void => {\n this.updateStatistics();\n };\n\n navigator['connection'].addEventListener('change', listener);\n\n this._disposables.add(new Disposable(() => {\n navigator['connection'].removeEventListener('change', listener);\n }));\n }\n\n private updateStatistics(): void {\n this._rtt.value = this.getRoundTripTime();\n this._effectiveType.value = this.getEffectiveType();\n this._downlinkThroughputCapacity.value = this.getDownlinkThroughputCapacity();\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport {StreamSetupListener} from '../dom/StreamSetupListener';\nimport {ILogger} from '../logger/LoggerInterface';\nimport LoggerFactory from '../logger/LoggerFactory';\nimport NetworkMonitor from '../dom/NetworkMonitor';\nimport SDK from '../sdk/SDK';\nimport MetricsType from '../metrics/MetricsType';\nimport Durations from '../time/Duration';\nimport IDisposable from '../lang/IDisposable';\nimport DisposableList from '../lang/DisposableList';\nimport MetricsService from '../metrics/MetricsService';\n\ninterface INetworkStatistics {\n rtt?: number;\n effectiveType?: string;\n downlinkThroughputCapacity?: number;\n}\n\nexport default class SessionTelemetry implements IDisposable {\n private readonly _logger: ILogger = LoggerFactory.getLogger('SessionTelemetry');\n private readonly _metricsService: MetricsService;\n private readonly _applicationActivityMonitor = SDK.applicationActivityMonitor;\n private readonly _networkMonitor: NetworkMonitor = new NetworkMonitor();\n private readonly _pageLoadTime: number;\n private readonly _disposables: DisposableList = new DisposableList();\n private _lastNetworkStatistics: INetworkStatistics = {};\n\n constructor(pageLoadTime: number, metricsService: MetricsService) {\n this._pageLoadTime = pageLoadTime;\n this._disposables.add(this._networkMonitor);\n this._metricsService = metricsService;\n\n if (!this._networkMonitor.isSupported) {\n return;\n }\n\n this._disposables.add(this._applicationActivityMonitor.isForeground.subscribe(isForeground => {\n this.recordForegroundChange(isForeground);\n }));\n this._disposables.add(this._networkMonitor.rtt.subscribe(value => {\n this.recordNetworkRTTUpdate(value);\n }));\n this._disposables.add(this._networkMonitor.effectiveType.subscribe(value => {\n this.recordNetworkTypeChangeUpdate(value);\n }));\n this._disposables.add(this._networkMonitor.downlinkThroughputCapacity.subscribe(value => {\n this.recordNetworkDownlinkThroughputCapacityUpdate(value);\n }));\n }\n\n listenOnStreamSetup(): StreamSetupListener {\n return new StreamSetupListener(this._pageLoadTime);\n }\n\n dispose(): void {\n this._disposables.dispose();\n }\n\n private recordForegroundChange(isForeground: boolean): void {\n const now = Date.now();\n const timeSinceLastChange = this._applicationActivityMonitor.getTimeSinceLastChange();\n\n this._metricsService.push({\n metricType: isForeground ? MetricsType.ApplicationForeground : MetricsType.ApplicationBackground,\n runtime: (now - this._pageLoadTime) / 1000,\n value: {uint64: timeSinceLastChange}\n });\n\n this._logger.info(\n 'Application has gone into the [%s] after [%s] ms',\n isForeground ? 'foreground' : 'background',\n new Durations(timeSinceLastChange).toIsoString(),\n );\n }\n\n private recordNetworkRTTUpdate(newRTT: number): void {\n const now = Date.now();\n const oldRtt = this._lastNetworkStatistics.rtt;\n\n this._lastNetworkStatistics.rtt = newRTT;\n\n this._metricsService.push({\n metricType: MetricsType.RoundTripTime,\n runtime: (now - this._pageLoadTime) / 1000,\n value: {uint64: newRTT},\n previousValue: oldRtt ? {uint64: oldRtt} : undefined,\n resource: 'navigator'\n });\n\n this._logger.info(\n '[%s] Network RTT changed to [%s] from [%s]',\n new Durations(now - this._pageLoadTime).toIsoString(),\n newRTT,\n oldRtt\n );\n }\n\n private recordNetworkTypeChangeUpdate(newNetworkType: string): void {\n const now = Date.now();\n const oldNetworkType = this._lastNetworkStatistics.effectiveType;\n\n this._lastNetworkStatistics.effectiveType = newNetworkType;\n\n this._metricsService.push({\n metricType: MetricsType.NetworkType,\n runtime: (now - this._pageLoadTime) / 1000,\n value: {string: newNetworkType},\n previousValue: oldNetworkType ? {string: oldNetworkType} : undefined\n });\n\n this._logger.info(\n '[%s] Network effective type has changed to [%s] from [%s]',\n new Durations(now - this._pageLoadTime).toIsoString(),\n newNetworkType,\n oldNetworkType\n );\n }\n\n private recordNetworkDownlinkThroughputCapacityUpdate(newCapacity: number): void {\n const now = Date.now();\n const oldCapacity = this._lastNetworkStatistics.downlinkThroughputCapacity;\n\n this._lastNetworkStatistics.downlinkThroughputCapacity = newCapacity;\n\n this._metricsService.push({\n metricType: MetricsType.DownlinkThroughputCapacity,\n runtime: (now - this._pageLoadTime) / 1000,\n value: {float: newCapacity},\n previousValue: oldCapacity ? {float: oldCapacity} : undefined\n });\n\n this._logger.info(\n '[%s] Network downlink throughput capacity changed to [%s] from [%s]',\n new Durations(now - this._pageLoadTime).toIsoString(),\n newCapacity,\n oldCapacity\n );\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport Subject from '../../rx/Subject';\nimport IPeerConnection from '../../rtc/IPeerConnection';\nimport ChannelState from './ChannelState';\nimport Dimension from '../../video/Dimension';\nimport EndPoint, {IStream, SubscribeStatus} from '../discovery/EndPoint';\nimport VideoTelemetry from '../../video/VideoTelemetry';\nimport SessionTelemetry from '../../video/SessionTelemetry';\nimport {IRtcMonitorStatistic, IRtcStatistic} from '../../rtc/RtcConnectionMonitor';\nimport SDK from '../SDK';\nimport assertUnreachable from '../../lang/assertUnreachable';\nimport DisposableList from '../../lang/DisposableList';\nimport {EdgeToken} from '../edgeAuth/EdgeToken';\nimport {BitsPerSecond, Millisecond} from '../../units/Units';\n\nexport default class ChannelContext {\n channelInitialization: Date;\n disposables: DisposableList;\n channelDisposables: DisposableList;\n rendererDisposables: DisposableList;\n videoElement: Subject<HTMLVideoElement>;\n token: Subject<EdgeToken>;\n peerConnection: Subject<IPeerConnection>;\n mediaStream: Subject<MediaStream>;\n state: Subject<ChannelState>;\n autoMuted: Subject<boolean>;\n autoPaused: Subject<boolean>;\n tokenExpiring: Subject<boolean>;\n authorized: Subject<boolean>;\n online: Subject<boolean>;\n loading: Subject<boolean>;\n playing: Subject<boolean>;\n standby: Subject<boolean>;\n stopped: Subject<boolean>;\n targetLag: Subject<Millisecond>;\n lag: Subject<Millisecond>;\n bitrateLimit: Subject<BitsPerSecond>;\n resolution: Subject<Dimension>;\n failureCount: Subject<number>;\n endPoint: Subject<EndPoint>;\n stream: Subject<IStream>;\n rtcStatistics: Subject<IRtcMonitorStatistic>;\n\n peerConnectionReconnectAttempts: number;\n isDisposed: boolean;\n videoTelemetry: VideoTelemetry;\n sessionTelemetry: SessionTelemetry;\n rtcAudioStatistic: IRtcStatistic;\n rtcVideoStatistic: IRtcStatistic;\n clearFailureCountTimeout: number;\n\n constructor(token: string, targetLag: number) {\n this.isDisposed = false;\n this.disposables = new DisposableList();\n this.channelDisposables = new DisposableList();\n this.rendererDisposables = new DisposableList();\n this.channelInitialization = new Date();\n this.videoElement = new Subject<HTMLVideoElement>(null);\n this.token = new Subject<EdgeToken>(token);\n this.peerConnection = new Subject<IPeerConnection>(null);\n this.mediaStream = new Subject<MediaStream>(null);\n this.state = new Subject<ChannelState>(ChannelState.Starting);\n this.autoMuted = new Subject<boolean>(false);\n this.autoPaused = new Subject<boolean>(false);\n this.tokenExpiring = new Subject<boolean>(false);\n this.authorized = new Subject<boolean>(true);\n this.online = new Subject<boolean>(true);\n this.loading = new Subject<boolean>(false);\n this.playing = new Subject<boolean>(false);\n this.standby = new Subject<boolean>(false);\n this.stopped = new Subject<boolean>(false);\n this.targetLag = new Subject<Millisecond>(targetLag);\n this.lag = new Subject<Millisecond>(0);\n this.bitrateLimit = new Subject<BitsPerSecond>(0);\n this.resolution = new Subject<Dimension>(Dimension.empty);\n this.failureCount = new Subject<number>(0);\n this.endPoint = new Subject<EndPoint>(null);\n this.stream = new Subject<IStream>(null);\n this.rtcStatistics = new Subject<IRtcMonitorStatistic>(null);\n this.peerConnectionReconnectAttempts = 0;\n }\n\n get streamId(): string {\n const stream = this.stream.value;\n\n if (!stream) {\n return '-';\n }\n\n return stream.streamId;\n }\n\n applyStatus(status: SubscribeStatus): void {\n switch (status) {\n case 'ok':\n break;\n case 'unauthorized':\n case 'geo-restricted':\n case 'geo-blocked':\n this.authorized.value = false;\n\n // eslint-disable-next-line no-fallthrough\n case 'no-stream':\n case 'not-found':\n this.failureCount.value = 0;\n this.playing.value = false;\n this.standby.value = true;\n this.stopped.value = false;\n this.stream.value = null;\n\n return;\n default:\n this.failureCount.value++;\n this.playing.value = false;\n this.standby.value = true;\n this.stopped.value = false;\n this.stream.value = null;\n this.state.value = ChannelState.Error;\n\n return;\n }\n }\n\n applySessionAndStreamPropertiesToVideoElement(): void {\n if (this.videoElement.value && this.videoElement.value.dataset) {\n this.videoElement.value.dataset.sessionId = SDK.clientSessionId;\n this.videoElement.value.dataset.streamId = this.streamId;\n }\n }\n\n mapSubscribeStatusToChannelStatus(status: SubscribeStatus): ChannelState {\n switch (status) {\n case 'ok':\n return ChannelState.Starting;\n case 'no-stream':\n case 'not-found':\n return ChannelState.StandBy;\n case 'geo-restricted':\n return ChannelState.GeoRestricted;\n case 'geo-blocked':\n return ChannelState.GeoBlocked;\n case 'unauthorized':\n return ChannelState.Unauthorized;\n case 'capacity':\n case 'rate-limited':\n case 'timeout':\n return ChannelState.Recovering;\n case 'failed':\n return ChannelState.Error;\n default:\n assertUnreachable(status);\n }\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport {BitrateMode, BitrateModeType} from '../api/SetTemporaryMaximalBitrate';\nimport assertUnreachable from '../../lang/assertUnreachable';\n\nexport default class BitrateModeMapping {\n static convertBitrateModeToBitrateModeType(bitrateMode: BitrateMode): BitrateModeType {\n switch (bitrateMode) {\n case BitrateMode.Normal:\n return 'Normal';\n case BitrateMode.Force:\n return 'Force';\n case BitrateMode.Reset:\n return 'Reset';\n default:\n assertUnreachable(bitrateMode);\n }\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport {BitrateState, BitrateStateType} from '../api/SetTemporaryMaximalBitrate';\nimport assertUnreachable from '../../lang/assertUnreachable';\n\nexport default class BitrateStateMapping {\n static convertBitrateStateToBitrateStateType(bitrateState: BitrateState): BitrateStateType {\n switch (bitrateState) {\n case BitrateState.Keep:\n return 'Keep';\n case BitrateState.Reset:\n return 'Reset';\n default:\n assertUnreachable(bitrateState);\n }\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport LoggerFactory from '../../logger/LoggerFactory';\nimport {ILogger} from '../../logger/LoggerInterface';\n\nimport {\n ISubscribeResponse,\n ISubscribeWithOfferRequest,\n ISubscribeWithoutOfferRequest\n} from '../api/Subscribe';\nimport {ISetRemoteDescriptionRequest, ISetRemoteDescriptionResponse} from '../api/SetRemoteDescription';\nimport {ISessionDescription, SdpType} from '../api/SessionDescription';\nimport {IDestroyStreamRequest, IDestroyStreamResponse} from '../api/DestroyStream';\nimport assertUnreachable from '../../lang/assertUnreachable';\nimport {IAddIceCandidatesRequest, IAddIceCandidatesResponse} from '../api/AddIceCandidates';\nimport VersionManager from '../version/VersionManager';\nimport EdgeAuth from '../edgeAuth/EdgeAuth';\nimport {BitrateMode, BitrateState, ISetTemporaryMaximalBitrate} from '../api/SetTemporaryMaximalBitrate';\nimport BitrateModeMapping from './BitrateModeMapping';\nimport BitrateStateMapping from './BitrateStateMapping';\nimport {BitsPerSecond, Millisecond} from '../../units/Units';\n\nconst apiVersion = 6;\n\nexport type SubscribeStatus = 'ok' | 'no-stream' | 'not-found' | 'unauthorized' | 'geo-restricted' | 'geo-blocked' | 'rate-limited' | 'capacity' | 'timeout' | 'failed';\nexport type SetRemoteDescriptionStatus = 'ok' | 'not-found' | 'unauthorized' | 'rate-limited' | 'capacity' | 'timeout' | 'failed';\nexport type SetTemporaryMaximalBitrateStatus = 'ok' | 'not-found' | 'unauthorized' | 'rate-limited' | 'capacity' | 'timeout' | 'failed';\nexport type RemoveTemporaryMaximalBitrateStatus = 'ok' | 'not-found' | 'unauthorized' | 'rate-limited' | 'capacity' | 'timeout' | 'failed';\nexport type AddIceCandidatesStatus = 'ok' | 'not-found' | 'unauthorized' | 'rate-limited' | 'capacity' | 'timeout' | 'failed';\nexport type DestroyStreamStatus = 'ok' | 'not-found' | 'unauthorized' | 'rate-limited' | 'capacity' | 'timeout' | 'failed';\nexport interface IStream {\n streamId: string;\n sharedSecret: string;\n tenancy: string;\n}\n\nexport interface ISubscribeResponseInit {\n status: SubscribeStatus;\n stream?: IStream;\n lag?: Millisecond;\n rtcConfiguration?: RTCConfiguration;\n setRemoteDescriptionResponse?: {\n sessionDescription: RTCSessionDescriptionInit;\n };\n createOfferDescriptionResponse?: {\n sessionDescription: RTCSessionDescriptionInit;\n };\n createAnswerDescriptionResponse?: {\n sessionDescription: RTCSessionDescriptionInit;\n };\n}\n\ninterface ISetRemoteDescriptionResponseInit {\n status: SetRemoteDescriptionStatus;\n sessionDescription?: RTCSessionDescriptionInit;\n}\n\ninterface IAddIceCandidatesResponseInit {\n status: AddIceCandidatesStatus;\n options?: string[];\n}\n\ninterface ISetTemporaryMaximalBitrateResponseInit {\n status: SetTemporaryMaximalBitrateStatus;\n}\n\ninterface IDestroyStreamResponseInit {\n status: DestroyStreamStatus;\n}\n\nexport default class EndPoint {\n private readonly _logger: ILogger = LoggerFactory.getLogger('EndPoint');\n private readonly _uri: string;\n private readonly _timeout: number;\n private _roundTripTime: number;\n\n constructor(uri: string, timeout: number) {\n this._uri = uri;\n this._timeout = timeout;\n\n if (!timeout) {\n throw new Error(`End point requires a timeout`);\n }\n }\n\n get roundTripTime(): number {\n return this._roundTripTime;\n }\n\n toString(): string {\n return `EndPoint[uri=${this._uri}]`;\n }\n\n async ping(): Promise<number> {\n const url = this.buildPingUrl();\n const start = Date.now();\n const response = await Promise.race([\n fetch(url, {\n method: 'GET',\n cache: 'no-cache'\n }),\n new Promise<Response>((_, reject) =>\n setTimeout(() => reject(new Error(`Ping timed out [${url}]`)), this._timeout)\n )\n ]);\n const finished = Date.now();\n\n if (!response.ok) { /* Handle */\n throw new Error(`Ping failed [${url}] [${response.status}]`);\n }\n\n this._roundTripTime = finished - start;\n\n return this._roundTripTime;\n }\n\n async subscribe(token: string, localSessionDescription: RTCSessionDescriptionInit, failureCount: number): Promise<ISubscribeResponseInit> {\n const parsedToken = EdgeAuth.parseToken(token);\n\n if (!parsedToken || !parsedToken.applicationId) {\n this._logger.error('Failed to parse token [%s]', token);\n\n return {status: 'unauthorized'};\n }\n\n const tenancy = parsedToken.applicationId;\n const url = this.buildUrl([tenancy, 'stream', 'subscribe']).toString();\n const formData = new FormData();\n const clientVersion = VersionManager.sdkVersion;\n\n if (failureCount === 0 && localSessionDescription) {\n const bodyWithOffer: ISubscribeWithOfferRequest = {\n apiVersion,\n clientVersion,\n edgeAuthToken: token,\n failureCount,\n setRemoteDescription: {\n apiVersion,\n sessionDescription: {\n type: this.convertRTCSdpTypeToSdpType(localSessionDescription.type),\n sdp: localSessionDescription.sdp\n }\n },\n createAnswerDescription: {apiVersion}\n };\n\n formData.append('jsonBody', JSON.stringify(bodyWithOffer));\n } else {\n const bodyWithoutOffer: ISubscribeWithoutOfferRequest = {\n apiVersion,\n clientVersion,\n edgeAuthToken: token,\n failureCount,\n createOfferDescription: {apiVersion}\n };\n\n formData.append('jsonBody', JSON.stringify(bodyWithoutOffer));\n }\n\n const start = Date.now();\n let httpResponse: Response;\n\n try {\n let timeout = null;\n\n httpResponse = await Promise.race([\n fetch(url, {\n method: 'POST',\n body: formData\n }),\n new Promise<Response>(resolve =>\n timeout = window.setTimeout(() => {\n this._logger.error('Failed to subscribe', new Error(`Subscribe timed out [${url}]`));\n resolve({status: 408} as Response);\n }, this._timeout)\n )\n ])\n .finally(() => {\n if (timeout) {\n clearTimeout(timeout);\n }\n });\n } catch (e) {\n this._logger.error('Failed to subscribe', e);\n\n return {status: 'failed'};\n }\n\n const status: SubscribeStatus = this.mapHttpStatusToSubscribeStatus(httpResponse);\n\n if (status !== 'ok') {\n return {status};\n }\n\n const finished = Date.now();\n const subscribeResponse = await this.convertHttpResponseToSubscribeResponse(tenancy, httpResponse);\n\n this._logger.debug('Got subscribe response [%j] in [%s] ms', subscribeResponse, finished - start);\n\n return subscribeResponse;\n }\n\n async setRemoteDescription(stream: IStream, sessionDescription: RTCSessionDescriptionInit): Promise<ISetRemoteDescriptionResponseInit> {\n const url = this.buildUrl([stream.tenancy, 'stream', stream.streamId, 'description', 'remote']).toString();\n const formData = new FormData();\n const body: ISetRemoteDescriptionRequest = {\n apiVersion,\n sharedSecret: stream.sharedSecret,\n sessionDescription: {\n type: this.convertRTCSdpTypeToSdpType(sessionDescription.type),\n sdp: sessionDescription.sdp\n }\n };\n\n formData.append('jsonBody', JSON.stringify(body));\n\n const start = Date.now();\n let httpResponse: Response;\n\n try {\n let timeout = null;\n\n httpResponse = await Promise.race([\n fetch(url, {\n method: 'POST',\n body: formData\n }),\n new Promise<Response>(resolve =>\n timeout = window.setTimeout(() => {\n this._logger.error('Failed to set remote description', new Error(`Set remote description timed out [${url}]`));\n resolve({status: 408} as Response);\n }, this._timeout)\n )\n ])\n .finally(() => {\n if (timeout) {\n clearTimeout(timeout);\n }\n });\n } catch (e) {\n this._logger.error('Failed to set remote description', e);\n\n return {status: 'failed'};\n }\n\n const status: SetRemoteDescriptionStatus = this.mapHttpStatusToSetRemoteDescriptionStatus(httpResponse);\n\n if (status !== 'ok') {\n return {status};\n }\n\n const finished = Date.now();\n const setRemoteDescriptionResponse = await this.convertHttpResponseToSetRemoteDescriptionResponse(httpResponse);\n\n this._logger.debug('Got set remote description response [%j] in [%s] ms', setRemoteDescriptionResponse, finished - start);\n\n return setRemoteDescriptionResponse;\n }\n\n async limitBitrate(\n stream: IStream,\n elapsedInMilliseconds: number,\n bitrateInBitsPerSecond: BitsPerSecond,\n bitrateState: BitrateState,\n bitrateMode: BitrateMode,\n ): Promise<ISetTemporaryMaximalBitrateResponseInit> {\n const url = this.buildUrl([stream.tenancy, 'stream', stream.streamId, 'bitrate']).toString();\n const formData = new FormData();\n const body: ISetTemporaryMaximalBitrate = {\n apiVersion,\n sharedSecret: stream.sharedSecret,\n elapsedInMilliseconds,\n bitrateInBitsPerSecond,\n bitrateState: BitrateStateMapping.convertBitrateStateToBitrateStateType(bitrateState),\n bitrateMode: BitrateModeMapping.convertBitrateModeToBitrateModeType(bitrateMode)\n };\n\n formData.append('jsonBody', JSON.stringify(body));\n\n const start = Date.now();\n let httpResponse: Response;\n\n try {\n let timeout = null;\n\n httpResponse = await Promise.race([\n fetch(url, {\n method: 'POST',\n body: formData\n }),\n new Promise<Response>(resolve =>\n timeout = window.setTimeout(() => {\n this._logger.error('Failed to set limit bitrate timed', new Error(`Set limit bitrate timed out [${url}]`));\n resolve({status: 408} as Response);\n }, this._timeout)\n )\n ])\n .finally(() => {\n if (timeout) {\n clearTimeout(timeout);\n }\n });\n } catch (e) {\n this._logger.error('Failed to set limit bitrate timed', e);\n\n return {status: 'failed'};\n }\n\n const status: SetTemporaryMaximalBitrateStatus = this.mapHttpStatusToSetTemporaryMaximalBitrateStatus(httpResponse);\n const finished = Date.now();\n\n this._logger.info('Got set limit bitrate response [%s] in [%s] ms', status, finished - start);\n\n return {status};\n }\n\n async addIceCandidates(stream: IStream, candidates: RTCIceCandidate[], discoveryCompleted: boolean, options: string[] = []): Promise<IAddIceCandidatesResponseInit> {\n const url = this.buildUrl([stream.tenancy, 'stream', stream.streamId, 'ice', 'candidates']).toString();\n const formData = new FormData();\n const body: IAddIceCandidatesRequest = {\n apiVersion,\n sharedSecret: stream.sharedSecret,\n candidates,\n discoveryCompleted,\n options\n };\n\n formData.append('jsonBody', JSON.stringify(body));\n\n const start = Date.now();\n let httpResponse: Response;\n\n try {\n let timeout = null;\n\n httpResponse = await Promise.race([\n fetch(url, {\n method: 'POST',\n body: formData\n }),\n new Promise<Response>(resolve =>\n timeout = window.setTimeout(() => {\n this._logger.error('Failed to add ice candidates', new Error(`Add ice candidates timed out [${url}]`));\n resolve({status: 408} as Response);\n }, this._timeout)\n )\n ])\n .finally(() => {\n if (timeout) {\n clearTimeout(timeout);\n }\n });\n } catch (e) {\n this._logger.error('Failed to add ice candidates', e);\n\n return {status: 'failed'};\n }\n\n const status: AddIceCandidatesStatus = this.mapHttpStatusToAddIceCandidatesStatus(httpResponse);\n\n if (status !== 'ok') {\n return {status};\n }\n\n const finished = Date.now();\n const addIceCandidatesResponse = await this.convertHttpResponseToAddIceCandidatesResponse(httpResponse);\n\n this._logger.info('Got add ICE candidates response [%j] in [%s] ms', addIceCandidatesResponse, finished - start);\n\n return addIceCandidatesResponse;\n }\n\n async destroyStream(stream: IStream, reason: string): Promise<IDestroyStreamResponseInit> {\n const url = this.buildUrl([stream.tenancy, 'stream', stream.streamId, 'destroy']).toString();\n const formData = new FormData();\n const body: IDestroyStreamRequest = {\n apiVersion,\n sharedSecret: stream.sharedSecret,\n reason,\n options: []\n };\n\n formData.append('jsonBody', JSON.stringify(body));\n\n const start = Date.now();\n let httpResponse: Response;\n\n try {\n let timeout = null;\n\n httpResponse = await Promise.race([\n fetch(url, {\n method: 'POST',\n body: formData,\n cache: 'no-cache'\n }),\n new Promise<Response>(resolve =>\n timeout = window.setTimeout(() => {\n this._logger.error('Failed to subscribe', new Error(`Delete stream timed out [${url}]`));\n resolve({status: 408} as Response);\n }, this._timeout)\n )\n ])\n .finally(() => {\n if (timeout) {\n clearTimeout(timeout);\n }\n });\n } catch (e) {\n this._logger.error('Failed to delete stream', e);\n\n return {status: 'failed'};\n }\n\n const status: DestroyStreamStatus = this.mapHttpStatusToSetDestroyStreamStatus(httpResponse);\n\n if (status !== 'ok') {\n return {status};\n }\n\n const finished = Date.now();\n const destroyStreamResponse = await this.convertHttpResponseToDestroyStreamResponse(httpResponse);\n\n this._logger.info('Got destroy stream response [%j] in [%s] ms', destroyStreamResponse, finished - start);\n\n return destroyStreamResponse;\n }\n\n buildUrl(path: string[]): URL {\n const uri = new URL(this._uri);\n const pathAsArray = uri.pathname.split('/');\n\n pathAsArray.length = pathAsArray.length - 1;\n\n uri.pathname = pathAsArray.concat(...path).join('/');\n\n return uri;\n }\n\n private buildPingUrl(): string {\n const uri = new URL(this._uri);\n const sdkVersion = VersionManager.sdkVersion;\n\n uri.search = `?${new URLSearchParams([['type', 'http'], ['version', sdkVersion], ['_', `${Date.now()}`]]).toString()}`;\n\n return uri.toString();\n }\n\n private mapHttpStatusToSubscribeStatus(response: Response): SubscribeStatus {\n if (!response) {\n return 'failed';\n }\n\n switch (response.status) {\n case 200:\n return 'ok';\n case 401:\n return 'unauthorized';\n case 402:\n return 'geo-restricted';\n case 403:\n return 'geo-blocked';\n case 408:\n return 'timeout';\n case 503:\n return 'capacity';\n case 504:\n return 'rate-limited';\n default:\n return 'failed';\n }\n }\n\n private mapHttpStatusToSetRemoteDescriptionStatus(response: Response): SetRemoteDescriptionStatus {\n if (!response) {\n return 'failed';\n }\n\n switch (response.status) {\n case 200:\n return 'ok';\n case 401:\n return 'unauthorized';\n case 408:\n return 'timeout';\n case 503:\n return 'capacity';\n case 504:\n return 'rate-limited';\n default:\n return 'failed';\n }\n }\n\n private mapHttpStatusToSetTemporaryMaximalBitrateStatus(response: Response): SetTemporaryMaximalBitrateStatus {\n if (!response) {\n return 'failed';\n }\n\n switch (response.status) {\n case 200:\n return 'ok';\n case 401:\n return 'unauthorized';\n case 408:\n return 'timeout';\n case 503:\n return 'capacity';\n case 504:\n return 'rate-limited';\n default:\n return 'failed';\n }\n }\n\n private mapHttpStatusToAddIceCandidatesStatus(response: Response): AddIceCandidatesStatus {\n if (!response) {\n return 'failed';\n }\n\n switch (response.status) {\n case 200:\n return 'ok';\n case 401:\n return 'unauthorized';\n case 408:\n return 'timeout';\n case 503:\n return 'capacity';\n case 504:\n return 'rate-limited';\n default:\n return 'failed';\n }\n }\n\n private mapHttpStatusToSetDestroyStreamStatus(response: Response): DestroyStreamStatus {\n if (!response) {\n return 'failed';\n }\n\n switch (response.status) {\n case 200:\n return 'ok';\n case 401:\n return 'unauthorized';\n case 408:\n return 'timeout';\n case 503:\n return 'capacity';\n case 504:\n return 'rate-limited';\n default:\n return 'failed';\n }\n }\n\n private async convertHttpResponseToSubscribeResponse(tenancy: string, response: Response): Promise<ISubscribeResponseInit> {\n const data = await response.json() as ISubscribeResponse;\n const subscribeResponse: ISubscribeResponseInit = {status: data.status};\n\n subscribeResponse.stream = {\n tenancy,\n streamId: data.streamId,\n sharedSecret: data.sharedSecret\n };\n\n subscribeResponse.lag = data.lag;\n\n if (data) {\n if (data.rtcConfiguration) {\n const rtcConfiguration: RTCConfiguration = {};\n\n if (data.rtcConfiguration.bundlePolicy) {\n switch (data.rtcConfiguration.bundlePolicy) {\n case 'BundlePolicyBalanced':\n rtcConfiguration.bundlePolicy = 'balanced';\n\n break;\n case 'BundlePolicyMaxCompat':\n rtcConfiguration.bundlePolicy = 'max-compat';\n\n break;\n case 'BundlePolicyMaxBundle':\n rtcConfiguration.bundlePolicy = 'max-bundle';\n\n break;\n default:\n assertUnreachable(data.rtcConfiguration.bundlePolicy);\n }\n }\n\n if (typeof data.rtcConfiguration.iceCandidatePoolSize === 'number') {\n rtcConfiguration.iceCandidatePoolSize = data.rtcConfiguration.iceCandidatePoolSize;\n }\n\n if (data.rtcConfiguration.iceServers) {\n const iceServers: RTCIceServer[] = [];\n\n for (let i = 0; i < data.rtcConfiguration.iceServers.length; i++) {\n iceServers.push({\n urls: data.rtcConfiguration.iceServers[i].urls,\n username: data.rtcConfiguration.iceServers[i].username,\n credential: data.rtcConfiguration.iceServers[i].credential\n });\n }\n\n rtcConfiguration.iceServers = iceServers;\n }\n\n if (data.rtcConfiguration.iceTransportPolicy) {\n switch (data.rtcConfiguration.iceTransportPolicy) {\n case 'IceTransportPolicyAll':\n rtcConfiguration.iceTransportPolicy = 'all';\n\n break;\n case 'IceTransportPolicyRelay':\n rtcConfiguration.iceTransportPolicy = 'relay';\n\n break;\n case 'IceTransportPolicyPublic':\n // Deprecated - Not supported\n break;\n default:\n assertUnreachable(data.rtcConfiguration.iceTransportPolicy);\n }\n }\n\n if (data.rtcConfiguration.peerIdentity) {\n rtcConfiguration.peerIdentity = data.rtcConfiguration.peerIdentity;\n }\n\n if (data.rtcConfiguration.rtcpMuxPolicy) {\n switch (data.rtcConfiguration.rtcpMuxPolicy) {\n case 'RtcpMuxPolicyNegotiate':\n rtcConfiguration.rtcpMuxPolicy = 'negotiate';\n\n break;\n case 'RtcpMuxPolicyRequire':\n rtcConfiguration.rtcpMuxPolicy = 'require';\n\n break;\n default:\n assertUnreachable(data.rtcConfiguration.rtcpMuxPolicy);\n }\n }\n\n subscribeResponse.rtcConfiguration = rtcConfiguration;\n }\n\n if (data.setRemoteDescriptionResponse && data.setRemoteDescriptionResponse.sessionDescription) {\n subscribeResponse.setRemoteDescriptionResponse = {sessionDescription: this.convertISessionDescriptionToRTCSessionDescription(data.setRemoteDescriptionResponse.sessionDescription)};\n }\n\n if (data.createAnswerDescriptionResponse && data.createAnswerDescriptionResponse.sessionDescription) {\n subscribeResponse.createAnswerDescriptionResponse = {sessionDescription: this.convertISessionDescriptionToRTCSessionDescription(data.createAnswerDescriptionResponse.sessionDescription)};\n }\n\n if (data.createOfferDescriptionResponse && data.createOfferDescriptionResponse.sessionDescription) {\n subscribeResponse.createOfferDescriptionResponse = {sessionDescription: this.convertISessionDescriptionToRTCSessionDescription(data.createOfferDescriptionResponse.sessionDescription)};\n }\n }\n\n return subscribeResponse;\n }\n\n private convertISessionDescriptionToRTCSessionDescription(sessionDescription: ISessionDescription): RTCSessionDescriptionInit {\n const rtcSessionDescription: RTCSessionDescriptionInit = {sdp: sessionDescription.sdp};\n\n switch (sessionDescription.type) {\n case 'Offer':\n rtcSessionDescription.type = 'offer';\n\n break;\n case 'Answer':\n rtcSessionDescription.type = 'answer';\n\n break;\n default:\n assertUnreachable(sessionDescription.type);\n }\n\n return rtcSessionDescription;\n }\n\n private async convertHttpResponseToSetRemoteDescriptionResponse(response: Response): Promise<ISetRemoteDescriptionResponseInit> {\n const data = await response.json() as ISetRemoteDescriptionResponse;\n const setRemoteDescriptionResponse: ISetRemoteDescriptionResponseInit = {status: data.status};\n\n if (data && data.sessionDescription) {\n setRemoteDescriptionResponse.sessionDescription = this.convertISessionDescriptionToRTCSessionDescription(data.sessionDescription);\n }\n\n return setRemoteDescriptionResponse;\n }\n\n private async convertHttpResponseToAddIceCandidatesResponse(response: Response): Promise<IAddIceCandidatesResponseInit> {\n const data = await response.json() as IAddIceCandidatesResponse;\n const addIceCandidatesResponse: IAddIceCandidatesResponseInit = {\n status: data.status,\n options: []\n };\n\n if (data) {\n if (data.options) {\n addIceCandidatesResponse.options = data.options;\n }\n }\n\n return addIceCandidatesResponse;\n }\n\n private async convertHttpResponseToDestroyStreamResponse(response: Response): Promise<IDestroyStreamResponseInit> {\n const data = await response.json() as IDestroyStreamResponse;\n const destroyStream: IDestroyStreamResponseInit = {status: data.status};\n\n return destroyStream;\n }\n\n private convertRTCSdpTypeToSdpType(type: RTCSdpType): SdpType {\n switch (type) {\n case 'answer':\n return 'Answer';\n case 'offer':\n return 'Offer';\n case 'pranswer':\n case 'rollback':\n throw new Error(`SDP type [${type}] is not supported`);\n default:\n assertUnreachable(type);\n }\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport LoggerFactory from '../../logger/LoggerFactory';\nimport EndPoint from './EndPoint';\nimport SDK from '../SDK';\nimport {ILogger} from '../../logger/LoggerInterface';\nimport MetricsType from '../../metrics/MetricsType';\nimport DiscoveryUri from './DiscoveryUri';\nimport MetricsService from '../../metrics/MetricsService';\nimport MetricsFactory from '../../metrics/MetricsFactory';\n\nconst defaultTimeout = 20000;\n\nexport default class DiscoveryService {\n private _logger: ILogger = LoggerFactory.getLogger('Discovery');\n private _metricsService: MetricsService;\n private _uri: URL;\n\n constructor(uri: URL) {\n if (!uri) {\n throw new Error('Discovery requires uri');\n }\n\n this._metricsService = MetricsFactory.getMetricsService(uri.toString());\n this._uri = uri;\n }\n\n async discoverNearbyEndPoints(uri: URL, timeout: number): Promise<EndPoint[]> {\n if (!timeout) {\n throw new Error('Discovery requires timeout');\n }\n\n const url = uri.toString();\n const response = await Promise.race([\n fetch(url, {\n method: 'GET',\n cache: 'no-cache'\n }),\n new Promise<Response>((_, reject) =>\n setTimeout(() => reject(new Error(`Discovery timed out [${url}]`)), timeout)\n )\n ]);\n\n if (!response.ok) {\n throw new Error(`Discovery failed [${url}] [${response.status}]`);\n }\n\n if (response.body === null) {\n throw new Error(`Discovery failed with no data [${url}]`);\n }\n\n const asString = await response.text();\n const endPoints = asString.split(',');\n\n return endPoints.map(endPoint => new EndPoint(endPoint, timeout));\n }\n\n async discoverClosestEndPoint(timeout: number = defaultTimeout): Promise<EndPoint> {\n const url = DiscoveryUri.buildDiscoveryUrl(this._uri);\n const endPoints = await this.discoverNearbyEndPoints(new URL(url), timeout);\n const neverResolve = (): Promise<void> => new Promise(() => {\n this._logger.info('Request [%s] failed, preventing it from completing', url);\n });\n const endPoint = await Promise.race(endPoints.map(endPoint => endPoint\n .ping()\n .catch(e => {\n this._logger.warn('Failed to ping end point [%s]', endPoint, e);\n\n return neverResolve();\n })\n .then(time => {\n const now = Date.now();\n\n this._logger.info('Discovered end point [%s] with time [%s]', endPoint.toString(), time);\n this._metricsService.push({\n metricType: MetricsType.RoundTripTime,\n runtime: (now - SDK.pageLoadTime) / 1000,\n value: {uint64: time || 0},\n resource: endPoint.toString(),\n kind: 'ping'\n });\n\n return endPoint;\n })));\n\n return endPoint;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport EndPoint from './EndPoint';\nimport SDK from '../SDK';\nimport DiscoveryService from './DiscoveryService';\n\nconst discoveryCacheInterval = 60000;\n\ninterface IPerURIEndpoint { [x: string]: Promise<EndPoint> }\n\nexport default class Discovery {\n private static _cache: IPerURIEndpoint = {};\n\n static async precacheClosestEndPointDiscovery(): Promise<EndPoint> {\n const uri = new URL(SDK.discoveryUri.value);\n\n return Discovery.discoverClosestEndPointWithCaching(uri);\n }\n\n static async discoverClosestEndPointWithCaching(uri: URL): Promise<EndPoint> {\n const url = uri.toString();\n\n if (Discovery._cache[url]) {\n return Discovery._cache[url];\n }\n\n const discoveryService = new DiscoveryService(uri);\n const cachedValue = Discovery._cache[url] = discoveryService.discoverClosestEndPoint();\n\n Discovery._cache[url].then(() => {\n const ignored = setTimeout(() => {\n if (Discovery._cache[url] === cachedValue) {\n delete Discovery._cache[url];\n }\n }, discoveryCacheInterval);\n }).catch(e => {\n delete Discovery._cache[url];\n\n throw e;\n });\n\n return cachedValue;\n }\n\n private constructor() {\n throw new Error('Discovery is a static class that may not be instantiated');\n }\n}\n\nconst ignored = Discovery.precacheClosestEndPointDiscovery();","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nexport enum NetworkStates {\n NetworkEmpty,\n NetworkIdle,\n NetworkLoading,\n NetworkNoSource\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport Disposable from '../../lang/Disposable';\nimport BrowserDetector from '../../dom/BrowserDetector';\nimport {ILogger} from '../../logger/LoggerInterface';\nimport LoggerFactory from '../../logger/LoggerFactory';\nimport Strings from '../../lang/Strings';\nimport {StreamInfo} from './FlashRenderer';\nimport DisposableList from '../../lang/DisposableList';\n\nconst defaultPropertyValues = {\n width: 480,\n height: 360,\n videoWidth: 480,\n videoHeight: 360,\n muted: false,\n volume: 1,\n currentTime: 0,\n duration: Infinity,\n readyState: 0,\n ended: false,\n buffered: null,\n autoplay: true\n};\nconst mutedElementListenerInterval = 300;\nconst isEdgeAndRequiresFlashObject = BrowserDetector.browserName === 'Edge';\nconst missingFlashMessage = 'You are using a browser this does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/';\n\ntype EventDisposable = {\n name: string;\n listener: () => void;\n disposable: Disposable;\n}\n\nexport default class FlashPlayer {\n private _logger: ILogger = LoggerFactory.getLogger('FlashPlayer');\n private _isVideo: boolean;\n private _swfSrc: string;\n private _id: string;\n private _width: number;\n private _height: number;\n private _ghost: HTMLVideoElement;\n private _element: HTMLVideoElement;\n private _eventDisposables: EventDisposable[];\n private _disposables: DisposableList = new DisposableList();\n private _flashVars: string[];\n private _isFullscreen: boolean;\n\n constructor(ghost, streamInfo: StreamInfo, options) {\n this._isVideo = ghost.tagName === 'video';\n this._swfSrc = options.swfSrc;\n this._id = ghost.id || options.streamId;\n this._width = ghost.clientWidth;\n this._height = ghost.clientHeight;\n this._ghost = ghost;\n this._element = null;\n this._eventDisposables = [];\n this._flashVars = [\n 'uid=' + this._id,\n `autoplay=${!!ghost.autoplay}`,\n `muted=${!!ghost.muted}`,\n 'allowScriptAccess=always',\n 'preload=true',\n `src=${JSON.stringify(streamInfo)}`\n ];\n\n this._disposables.add(new Disposable(() => {\n this.triggerFlashEvent('fire_stop');\n }));\n\n try {\n if (isEdgeAndRequiresFlashObject) {\n this._element = this.createMicrosoftFlashElement();\n } else {\n this._element = this.setupCrossBrowserFlashElement();\n }\n\n this.setupElement();\n } catch (e) {\n this._logger.error('Error while loading Flash Player ' + e);\n }\n }\n\n get element(): HTMLVideoElement {\n return this._element;\n }\n\n addEventListener(name, listener): void {\n const eventDisposableIndex = this.findEventListenerIndex(name, listener);\n\n if (eventDisposableIndex > -1) {\n return;\n }\n\n document.addEventListener(name, listener);\n\n const disposable = new Disposable(() => {\n document.removeEventListener(name, listener);\n });\n\n this._disposables.add(disposable);\n\n this._eventDisposables.push({\n name: name,\n listener: listener,\n disposable: disposable\n });\n }\n\n removeEventListener(name, listener): void {\n const eventDisposableIndex = this.findEventListenerIndex(name, listener);\n\n if (eventDisposableIndex > -1) {\n const eventDisposable = this._eventDisposables.splice(eventDisposableIndex, 1)[0];\n\n eventDisposable.disposable.dispose();\n }\n }\n\n triggerFlashEvent(eventName, args?): () => void {\n const triggerEvent = this._element[eventName];\n\n if (triggerEvent) {\n return triggerEvent.apply(this._element, args);\n }\n }\n\n dispose(): void {\n this._disposables.dispose();\n }\n\n createMicrosoftFlashElement(): HTMLVideoElement {\n return document.createElement('div') as unknown as HTMLVideoElement;\n }\n\n setupCrossBrowserFlashElement(): HTMLVideoElement {\n const element = document.createElement('embed') as unknown as HTMLVideoElement;\n\n element.setAttribute('id', this._id);\n element.setAttribute('name', '__' + this._id);\n element.setAttribute('play', 'true');\n element.setAttribute('loop', 'false');\n element.setAttribute('quality', 'high');\n element.setAttribute('bgcolor', '#000000');\n element.setAttribute('wmode', 'transparent');\n element.setAttribute('allowScriptAccess', 'always');\n element.setAttribute('allowFullScreen', 'true');\n element.setAttribute('type', 'application/x-shockwave-flash');\n element.setAttribute('pluginspage', '//www.macromedia.com/go/getflashplayer');\n element.setAttribute('src', this._swfSrc);\n element.setAttribute('flashvars', this._flashVars.join('&'));\n\n if (this._isVideo) {\n element.setAttribute('width', this._width.toString());\n element.setAttribute('height', this._height.toString());\n }\n\n return element;\n }\n\n createParameterElement(name: string, value: string): HTMLParamElement {\n const parameter = document.createElement('param');\n\n parameter.setAttribute('name', name);\n parameter.setAttribute('value', value);\n\n return parameter;\n }\n\n setupElement(): void {\n this._element = Object.assign(this._element, defaultPropertyValues, {\n id: this._id,\n width: this._width,\n height: this._height,\n videoWidth: this._width,\n videoHeight: this._height\n });\n\n this.setupAccessors();\n this.propagateAttributeChanges();\n this.setupVolumeAndMutedListeners();\n }\n\n createEvent(eventName, target): Event {\n const eventFrags = eventName.match(/([a-z]+\\.([a-z]+))/i);\n const detail = {\n target: target,\n namespace: ''\n };\n\n if (eventFrags !== null) {\n eventName = eventFrags[1];\n detail.namespace = eventFrags[2];\n }\n\n if (BrowserDetector.browserName === 'IE' && BrowserDetector.browserMajorVersion > 8) {\n const customEvent = window.document.createEvent('CustomEvent');\n\n customEvent.initCustomEvent(eventName, false, false, detail);\n\n return customEvent;\n }\n\n if (!window.CustomEvent) {\n return detail as unknown as Event;\n }\n\n return new window.CustomEvent(eventName, {detail: detail});\n }\n\n getValueFromFlash(name): string {\n const defaultGetter = (): void => null;\n const getter = this._element['get_' + name] || defaultGetter;\n\n return getter.call(this._element);\n }\n\n setupAccessors(): void {\n /* eslint-disable */\n window['__event__' + this._id] = (eventName, message) => {\n\n const event = this.createEvent(eventName, this._element);\n\n if (message) {\n try {\n // @ts-ignore\n event.data = JSON.parse(message);\n // @ts-ignore\n event.details.data = event.data;\n } catch (e) {\n // @ts-ignore\n event.message = message;\n }\n }\n\n switch (eventName) {\n case 'ended':\n // @ts-ignore\n this._element.ended = true;\n\n this._element.dispatchEvent(event);\n\n break;\n case 'error':\n // @ts-ignore\n this._element.error = event.data;\n\n if (this._element.dispatchEvent) {\n // @ts-ignore\n this._element.dispatchEvent(new Error(message));\n }\n\n break;\n case 'loadeddata':\n case 'loadedmetadata':\n case 'loadstart':\n if (this._element.dispatchEvent) {\n this._element.dispatchEvent(event);\n }\n\n break;\n case 'pause':\n // @ts-ignore\n this._element.paused = true;\n\n break;\n case 'play':\n // @ts-ignore\n this._element.paused = false;\n\n break;\n case 'playing':\n // @ts-ignore\n this._element.paused = false;\n\n break;\n case 'progress':\n case 'seeked':\n case 'seeking':\n case 'stalled':\n case 'suspend':\n if (this._element.dispatchEvent) {\n this._element.dispatchEvent(event);\n }\n\n break;\n case 'timeupdate':\n // @ts-ignore\n this._element.currentTime = this.getValueFromFlash('currentTime');\n if (this._element.dispatchEvent) {\n this._element.dispatchEvent(event);\n }\n\n break;\n case 'volumechange':\n break;\n case 'waiting':\n break;\n default:\n break;\n }\n\n this._element.dispatchEvent(event);\n /* eslint-enable */\n };\n /* eslint-disable */\n // @ts-ignore\n const nativeFullScreen = this._element.requestFullscreen || this._element.mozRequestFullScreen || this._element.webkitRequestFullScreen || this._element.msRequestFullscreen;\n\n this._disposables.add(new Disposable(() => {\n delete window['__event__' + this._id];\n }));\n // @ts-ignore\n this._element.play = () => {\n this.triggerFlashEvent('fire_play');\n };\n // @ts-ignore\n this._element.load = () => {\n this.triggerFlashEvent('fire_load');\n };\n // @ts-ignore\n this._element.seek = () => {\n this.triggerFlashEvent('fire_seek');\n };\n // @ts-ignore\n this._element.pause = () => {\n this.triggerFlashEvent('fire_pause');\n };\n // @ts-ignore\n this._element.requestFullscreen = function() {\n this._isFullscreen = true;\n this.addListenerForExitFullScreen();\n\n this._previousHeight = this._element.style.height;\n this._previousWidth = this._element.style.width;\n this._previousPosition = this._element.style.position;\n this._element.style.position = 'absolute';\n this._element.style.height = '100%';\n this._element.style.width = '100%';\n /* eslint-disable */\n // @ts-ignore\n if (typeof window.ActiveXObject !== 'undefined') { // Older IE.\n // @ts-ignore\n const wscript = new window.ActiveXObject('WScript.Shell');\n\n if (wscript !== null) {\n wscript.SendKeys('{F11}');\n }\n }\n /* eslint-enable */\n\n nativeFullScreen.call(this._element);\n };\n\n const triggerFlashSetSize = (): void => {\n this.triggerFlashEvent('set_size', [this._isFullscreen ? screen.width : this._element.clientWidth, this._isFullscreen ? screen.height : this._element.clientHeight]);\n };\n\n window.addEventListener('resize', triggerFlashSetSize);\n\n this._disposables.add(new Disposable(() => {\n window.removeEventListener('resize', triggerFlashSetSize);\n }));\n }\n\n finishInitializationInDom(): HTMLVideoElement {\n if (!isEdgeAndRequiresFlashObject) {\n return this._element;\n }\n\n const id = (isEdgeAndRequiresFlashObject ? '__' + this._id : this._id) + Strings.random(32);\n const embedObject = document.createElement('object') as HTMLDivElement;\n const missingFlashMessageElement = document.createElement('div');\n const childrenElements = [\n this.createParameterElement('movie', this._swfSrc + '?x=' + Date.now()),\n this.createParameterElement('flashvars', this._flashVars.join('&')),\n this.createParameterElement('quality', '2'),\n this.createParameterElement('bgcolor', '#000000'),\n this.createParameterElement('wmode', 'transparent'),\n this.createParameterElement('allowScriptAccess', 'always'),\n this.createParameterElement('allowFullScreen', 'true'),\n missingFlashMessageElement\n ];\n\n missingFlashMessageElement.innerHTML = missingFlashMessage;\n\n if (isEdgeAndRequiresFlashObject) {\n embedObject.setAttribute('type', 'application/x-shockwave-flash');\n embedObject.setAttribute('data', this._swfSrc);\n embedObject.setAttribute('id', id);\n embedObject.setAttribute('width', '__' + this._width.toString());\n embedObject.setAttribute('height', '__' + this._height.toString());\n } else {\n embedObject.setAttribute('classid', 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000');\n embedObject.setAttribute('codebase', '//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab');\n embedObject.setAttribute('id', id);\n embedObject.setAttribute('width', this._width.toString());\n embedObject.setAttribute('height', this._height.toString());\n }\n /* eslint-disable */\n if ('object' in embedObject) {\n childrenElements.forEach((element) => {\n // @ts-ignore\n if (!embedObject.object[element.name]) {\n if ('value' in element) {\n // @ts-ignore\n embedObject.object[element.name] = element.value;\n }\n }\n });\n\n // @ts-ignore\n embedObject.appendChild(missingFlashMessageElement);\n } else {\n childrenElements.forEach((element) => {\n // @ts-ignore\n const existingChildElement = embedObject.children.find((childElement) => {\n return 'name' in element ? childElement.name === element.name : false;\n });\n\n if (existingChildElement) {\n return embedObject.replaceChild(element, existingChildElement);\n }\n\n return embedObject.appendChild(element);\n });\n /* eslint-enable */\n }\n\n this._element.outerHTML = embedObject.outerHTML;\n\n // Issue with IE. When you replace the outerHTML the reference to this element does not correctly reflect the changes.\n // If you want to get the new embed object in the dom you need to query for it.\n if (window.document.getElementById) {\n /* eslint-disable */\n // @ts-ignore\n this._element = window.document.getElementById(id);\n /* eslint-enable */\n\n this.setupElement();\n }\n\n return this._element;\n }\n\n propagateAttributeChanges(): void {\n const ignored = ['currentTime', 'paused', 'error', 'src'];\n\n if (window['MutationObserver']) {\n // Newer browsers support an efficient way to observe DOM modifications\n const observer = new MutationObserver(mutations => {\n mutations.forEach(mutation => {\n if (mutation.type === 'attributes' && mutation.target === this._element && !ignored.includes(mutation.attributeName)) {\n this.setFlashValue(mutation.attributeName, this._element[mutation.attributeName]);\n }\n });\n });\n const configAttributes = {attributes: true};\n\n observer.observe(this._element, configAttributes);\n this._disposables.add(new Disposable(() => {\n observer.disconnect();\n }));\n } else {\n // For older browsers. There is a significant performance overhead with MutationObserver.\n // See https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Mutation_events\n this._logger.info('Falling back to use of DOM event listeners. This results in degraded performance for further DOM modifications and does not work for IE prior to version 9. See https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Mutation_events for details.');\n\n const handleModifiedEvent = (event): void => {\n if (!ignored.includes(event.target.tagName)) {\n this.setFlashValue(event.target.tagName, this._element[event.target.tagName]);\n }\n };\n\n if (this._element.addEventListener) {\n this._element.addEventListener('DOMAttrModified', handleModifiedEvent, false);\n\n this._disposables.add(new Disposable(() => {\n this._element.removeEventListener('DOMAttrModified', handleModifiedEvent, false);\n }));\n } else {\n /* eslint-disable */\n // @ts-ignore\n this._element.attachEvent('onpropertychange', handleModifiedEvent);\n this._disposables.add(new Disposable(() => {\n // @ts-ignore\n this._element.detachEvent('DOMAttrModified', handleModifiedEvent);\n }));\n /* eslint-enable */\n }\n }\n }\n\n getElement(): HTMLVideoElement {\n return this._element;\n }\n\n setFlashValue(name: string, value: string | boolean | number): () => void {\n const defaultSetter = (): void => null;\n const setter = this._element['set_' + name] || defaultSetter;\n\n return setter.call(this._element, value);\n }\n\n setupVolumeAndMutedListeners(): void {\n const mutedListener = this.getMutedListener();\n const volumeListener = this.getVolumeListener();\n const intervalId = setInterval(() => {\n mutedListener();\n volumeListener();\n }, mutedElementListenerInterval);\n\n this._disposables.add(new Disposable(() => {\n clearInterval(intervalId);\n }));\n }\n\n getMutedListener(): () => void {\n if (!this._ghost || !this._element) {\n return (): void => null;\n }\n\n let ghostLastMutedState = this._ghost.muted;\n let elementLastMutedState = this._element.muted;\n\n return (): void => {\n const newGhostMutedState = this._element.muted;\n let newElementMutedState = this._element.muted;\n\n if (newGhostMutedState === ghostLastMutedState && newElementMutedState === elementLastMutedState) {\n return;\n }\n\n if (newGhostMutedState !== ghostLastMutedState) {\n ghostLastMutedState = newGhostMutedState;\n elementLastMutedState = newGhostMutedState;\n newElementMutedState = newGhostMutedState;\n }\n\n if (newElementMutedState !== elementLastMutedState) {\n ghostLastMutedState = newGhostMutedState;\n elementLastMutedState = newGhostMutedState;\n }\n\n this._element.muted = newElementMutedState;\n this._ghost.muted = newElementMutedState;\n\n this.setFlashValue('muted', newElementMutedState);\n };\n }\n\n getVolumeListener(): () => void {\n if (!this._ghost || !this._element) {\n return (): void => null;\n }\n\n let ghostLastVolume = this._ghost.volume;\n let elementLastVolume = this._element.volume;\n\n return (): void => {\n const newGhostVolume = this._element.volume;\n let newElementVolume = this._element.volume;\n\n if (newGhostVolume === ghostLastVolume && newElementVolume === elementLastVolume) {\n return;\n }\n\n if (newGhostVolume !== ghostLastVolume) {\n ghostLastVolume = newGhostVolume;\n elementLastVolume = newGhostVolume;\n newElementVolume = newGhostVolume;\n }\n\n if (newElementVolume !== elementLastVolume) {\n ghostLastVolume = newGhostVolume;\n elementLastVolume = newGhostVolume;\n }\n\n this._element.volume = newElementVolume;\n this._ghost.volume = newElementVolume;\n\n this.setFlashValue('volume', newElementVolume);\n };\n }\n\n findEventListenerIndex(name, listener): number {\n return this._eventDisposables.findIndex(eventDisposable => {\n return eventDisposable.name === name && eventDisposable.listener === listener;\n });\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport {ILogger} from '../../logger/LoggerInterface';\nimport LoggerFactory from '../../logger/LoggerFactory';\nimport Disposable from '../../lang/Disposable';\nimport FlashPlayer from './FlashPlayer';\nimport {StreamInfo} from './FlashRenderer';\nimport DisposableList from '../../lang/DisposableList';\n\nexport default class PhenixFlashVideo {\n private _logger: ILogger = LoggerFactory.getLogger('PhenixFlashVideo');\n private _ghost: HTMLVideoElement;\n private _stream: StreamInfo;\n private _options: {\n swfSrc: string[];\n streamId: string;\n };\n private _disposables: DisposableList = new DisposableList();\n private _flashPlayer: FlashPlayer;\n private _loaded: boolean;\n private _enabled: boolean;\n private _onReady: (enabled: boolean) => void;\n private _video: HTMLVideoElement;\n private _ghostInitStyleCssText: string;\n\n constructor(ghost, stream, options) {\n this._ghost = ghost;\n this._stream = stream;\n this._options = options || {};\n this._flashPlayer = null;\n\n const loaded = (success): void => {\n this._loaded = true;\n this._enabled = success === true;\n\n if (success) {\n this.initialize();\n } else {\n this._logger.error('Failed to create Phenix video element');\n }\n\n if (this._onReady) {\n this._onReady(this._enabled);\n }\n };\n\n try {\n this._video = this.createPhenixFlashVideoElement();\n\n this._video.className = this._ghost.className;\n this._video.height = this._ghost.height;\n this._video.width = this._ghost.width;\n\n this._ghostInitStyleCssText = this._ghost.style.cssText;\n this._ghost.style.cssText = 'visibility:hidden !important;width:0px !important;height:0px !important;' +\n 'margin:0px !important;padding:0px !important;' +\n 'border-style:none !important;border-width:0px !important;' +\n 'max-width:0px !important;max-height:0px !important;outline:none !important';\n this._disposables.add(new Disposable(() => {\n this._ghost.style.cssText = this._ghostInitStyleCssText;\n }));\n /* eslint-disable */\n // @ts-ignore\n this._video.onunload = function() {\n this._loaded = false;\n };\n /* eslint-enable */\n\n this.observeInsertion();\n\n if (!document.body || !document.body.contains) {\n this._logger.info('document.body.contains is not supported');\n }\n\n if (document.body && document.body.contains && document.body.contains(this._ghost)) {\n this._ghost.parentNode.replaceChild(this._video, this._ghost);\n\n if (this._flashPlayer) {\n this._video = this._flashPlayer.finishInitializationInDom();\n }\n\n this._disposables.add(new Disposable(() => {\n if (this._video.parentNode) {\n this._video.parentNode.replaceChild(this._ghost, this._video);\n }\n }));\n }\n\n setTimeout(() => {\n loaded(true);\n });\n } catch (e) {\n this._logger.error('Error while loading Phenix RTC ' + e);\n loaded(false);\n }\n }\n\n hookUpEvents(): void {\n const ghost = this._ghost;\n const onError = (): void => {\n this.dispatchEvent(ghost, 'error');\n };\n\n const onMute = (): void => {\n ghost.muted = this._video.muted;\n this.dispatchEvent(ghost, 'mute');\n };\n\n const onUnmute = (): void => {\n ghost.muted = this._video.muted;\n this.dispatchEvent(ghost, 'unmute');\n };\n\n const onEnded = (): void => {\n /* eslint-disable */\n // @ts-ignore\n ghost.ended = this._video.ended;\n /* eslint-enable */\n this.dispatchEvent(ghost, 'ended');\n };\n\n const onLoadedMetadata = (): void => {\n ghost.width = this._video.width;\n ghost.height = this._video.height;\n this.dispatchEvent(ghost, 'loadedmetadata');\n };\n\n const onLoadedData = (): void => {\n ghost.width = this._video.width;\n ghost.height = this._video.height;\n this.dispatchEvent(ghost, 'loadeddata');\n };\n\n const onResize = (): void => {\n ghost.width = this._video.width;\n ghost.height = this._video.height;\n this.dispatchEvent(ghost, 'resize');\n };\n\n this.addEventListener('error', onError);\n this.addEventListener('mute', onMute);\n this.addEventListener('unmute', onUnmute);\n this.addEventListener('ended', onEnded);\n this.addEventListener('loadedmetadata', onLoadedMetadata);\n this.addEventListener('loadeddata', onLoadedData);\n this.addEventListener('resize', onResize);\n\n const eventDisposable = new Disposable(() => {\n this.removeEventListener('error', onError);\n this.removeEventListener('mute', onMute);\n this.removeEventListener('unmute', onUnmute);\n this.removeEventListener('ended', onEnded);\n this.removeEventListener('loadedmetadata', onLoadedMetadata);\n this.removeEventListener('loadeddata', onLoadedData);\n this.removeEventListener('resize', onResize);\n });\n\n this._disposables.add(eventDisposable);\n }\n\n getElement(): HTMLVideoElement {\n return this._video;\n }\n\n onReady(callback): void {\n if (this._loaded) {\n setTimeout(() => {\n callback(this._enabled);\n }, 1);\n } else {\n this._onReady = callback;\n }\n }\n\n dispose(): void{\n this._disposables.dispose();\n }\n\n private addEventListener(name, listener /* , useCapture */): void {\n window.addEventListener(name, listener);\n }\n\n private removeEventListener(name, listener /* , useCapture */): void {\n window.removeEventListener(name, listener);\n }\n\n private dispatchEvent(source, name): void {\n let event;\n\n if (document.createEvent) {\n event = document.createEvent('HTMLEvents');\n event.initEvent(name, true, true);\n } else {\n /* eslint-disable */\n // @ts-ignore\n event = document.createEventObject();\n event.eventType = name;\n /* eslint-enable */\n }\n\n event.eventName = name;\n\n setTimeout(() => {\n if (document.createEvent) {\n source.dispatchEvent(event);\n } else {\n source.fireEvent('on' + event.eventType, event);\n }\n });\n }\n\n private createPhenixFlashVideoElement(): HTMLVideoElement {\n this._flashPlayer = new FlashPlayer(this._ghost, this._stream, this._options);\n\n this._disposables.add(new Disposable(() => {\n this._flashPlayer.dispose();\n }));\n\n return this._flashPlayer.getElement();\n }\n\n private observeInsertion(): void {\n if (window['MutationObserver']) {\n // Newer browsers support an efficient way to observe DOM modifications\n const observer = new MutationObserver(mutations => {\n mutations.forEach(mutation => {\n if (mutation.type === 'childList') {\n for (let i = 0; i < mutation.addedNodes.length; i++) {\n const node = mutation.addedNodes[i];\n\n if (mutation.target !== this._video) {\n if (node === this._ghost) {\n // Replace element with our video element\n mutation.target.replaceChild(this._video, this._ghost);\n this.initialize();\n } else if (this.isDescendant(mutation.target, this._ghost)) {\n if (this._ghost.parentNode) {\n this._ghost.parentNode.replaceChild(this._video, this._ghost);\n }\n\n this.initialize();\n }\n }\n }\n }\n });\n });\n const configMutations = {\n childList: true,\n attributes: false,\n characterData: false,\n subtree: true\n };\n\n observer.observe(document.body, configMutations);\n\n this._disposables.add(new Disposable(() => {\n observer.disconnect();\n }));\n } else {\n // For older browsers. There is a significant performance overhead with MutationObserver.\n // See https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Mutation_events\n this._logger.info('Falling back to use of DOM event listeners. This results in degraded performance for further DOM modifications and does not work for IE prior to version 9. See https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Mutation_events for details.');\n\n const domInsertedListener = (): void => {\n if (this._ghost.parentNode) {\n this._ghost.parentNode.replaceChild(this._video, this._ghost);\n }\n };\n\n this.addEventListener('DOMNodeInserted', domInsertedListener);\n\n this._disposables.add(new Disposable(() => {\n this.removeEventListener('DOMNodeInserted', domInsertedListener);\n }));\n }\n }\n\n initialize(): void {\n this.hookUpEvents();\n\n this.propagateAttributeChanges();\n\n this._video.id = this._ghost.id || this._video.id;\n this._video.style.cssText = this._ghostInitStyleCssText;\n this._video.className = this._ghost.className;\n /* eslint-disable */\n // @ts-ignore\n this._video.innerHtml = this._ghost.innerHTML;\n /* eslint-enable */\n this._video.width = this._ghost.width;\n this._video.height = this._ghost.height;\n this._video.autoplay = this._ghost.autoplay;\n this._video.muted = this._ghost.muted;\n this._video.defaultMuted = this._ghost.defaultMuted;\n this._video.volume = this._ghost.volume;\n }\n\n private isDescendant(parent, child): boolean {\n let node = child.parentNode;\n\n while (node !== null) {\n if (node === parent) {\n return true;\n }\n\n node = node.parentNode;\n }\n\n return false;\n }\n\n propagateAttributeChanges(): void {\n const readonly = ['style'];\n\n if (window['MutationObserver']) {\n // Newer browsers support an efficient way to observe DOM modifications\n const observer = new MutationObserver(mutations => {\n mutations.forEach(mutation => {\n if (mutation.type === 'attributes' && mutation.target === this._ghost && readonly.indexOf(mutation.attributeName) === -1) {\n this._video[mutation.attributeName] = this._ghost[mutation.attributeName];\n }\n });\n });\n const configAttributes = {attributes: true};\n\n observer.observe(this._ghost, configAttributes);\n\n this._disposables.add(new Disposable(() => {\n observer.disconnect();\n }));\n } else {\n // For older browsers. There is a significant performance overhead with MutationObserver.\n // See https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Mutation_events\n this._logger.info('Falling back to use of DOM event listeners. This results in degraded performance for further DOM modifications and does not work for IE prior to version 9. See https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Mutation_events for details.');\n\n const handleModifiedEvent = (event): void => {\n this._video[event.target.tagName] = this._ghost[event.target.tagName];\n };\n\n if (this._ghost.addEventListener) {\n this._ghost.addEventListener('DOMAttrModified', handleModifiedEvent, false);\n\n this._disposables.add(new Disposable(() => {\n this._ghost.removeEventListener('DOMAttrModified', handleModifiedEvent, false);\n }));\n } else {\n /* eslint-disable */\n // @ts-ignore\n this._ghost.attachEvent('onpropertychange', handleModifiedEvent);\n\n this._disposables.add(new Disposable(() => {\n // @ts-ignore\n this._ghost.detachEvent('DOMAttrModified', handleModifiedEvent);\n }));\n /* eslint-enable */\n }\n }\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nimport {ILogger} from '../../logger/LoggerInterface';\nimport LoggerFactory from '../../logger/LoggerFactory';\nimport PhenixFlashVideo from './PhenixFlashVideo';\nimport {LiveStreamingOptions, LiveStreamingStatistics} from './StreamTypes';\nimport {NetworkStates} from './NetworkStates';\n\nconst timeoutForStallWithoutProgressToRestart = 6000;\nconst minTimeBeforeNextReload = 15000;\nconst mostRecentSwfFile = 'rtmp-flash-renderer-2019.2.18.swf';\nconst defaultSwfFileSrcs = {\n local: 'https://local.phenixrts.com/public/rtmp/' + mostRecentSwfFile,\n staging: 'https://stg.phenixrts.com/public/rtmp/' + mostRecentSwfFile,\n production: 'https://phenixrts.com/public/rtmp/' + mostRecentSwfFile\n};\n\nexport type StreamInfo = {\n uri: string;\n bitrate: string;\n resolution: string;\n};\n\nexport default class FlashRenderer {\n private readonly _logger: ILogger = LoggerFactory.getLogger('FlashPlayer');\n private readonly _stopPlayer: () => void;\n private readonly _onStalled: () => void;\n private readonly _onEnded: () => void;\n private readonly _streamId: string;\n private readonly _streamsInfo: StreamInfo[];\n private readonly _swfSrc: string;\n\n private _options: LiveStreamingOptions;\n private _phenixVideo: PhenixFlashVideo;\n private _playerElement: HTMLVideoElement;\n private _originElement: HTMLVideoElement;\n private _player: {getStats(): LiveStreamingStatistics};\n private _hasFlashPlugin: boolean;\n private _lastReloadTime: number;\n\n constructor(videoElement, type, streamId, streamsInfo, options, stopPlayer: () => void) {\n const defaultSwfFileSrc = defaultSwfFileSrcs[options.env || 'staging'];\n\n this._streamId = streamId;\n this._streamsInfo = streamsInfo.map(info => {\n info.uri = encodeURI(info.uri).replace(/[#]/g, '%23');\n\n return info;\n });\n this._options = options;\n this._phenixVideo = null;\n this._playerElement = null;\n this._player = null;\n this._originElement = videoElement;\n\n this._onStalled = this.stalled.bind(this);\n this._onEnded = this.ended.bind(this);\n this._swfSrc = options.swfSrc || defaultSwfFileSrc;\n this._stopPlayer = stopPlayer;\n }\n\n isSupported(): boolean {\n return this.detectFlashPlugin();\n }\n\n start(): HTMLVideoElement {\n const options = {\n streamId: this._streamId,\n swfSrc: this._swfSrc\n };\n\n this._phenixVideo = new PhenixFlashVideo(this._originElement, this._streamsInfo, options);\n\n this._phenixVideo.hookUpEvents();\n\n this._playerElement = this._phenixVideo.getElement();\n\n if (this._playerElement) {\n this._playerElement.play();\n }\n\n this._playerElement.addEventListener('stalled', this._onStalled, false);\n this._playerElement.addEventListener('pause', this._onStalled, false);\n this._playerElement.addEventListener('suspend', this._onStalled, false);\n this._playerElement.addEventListener('ended', this._onEnded, false);\n\n return this._playerElement;\n }\n\n dispose(): void {\n if (this._phenixVideo) {\n const finalizeStreamEnded = (): void => {\n if (this._playerElement) {\n this._playerElement.removeEventListener('stalled', this._onStalled, false);\n this._playerElement.removeEventListener('pause', this._onStalled, false);\n this._playerElement.removeEventListener('suspend', this._onStalled, false);\n this._playerElement.removeEventListener('ended', this._onEnded, false);\n }\n\n this._playerElement = null;\n this._originElement = null;\n };\n\n try {\n this._phenixVideo.dispose();\n this._phenixVideo = null;\n\n finalizeStreamEnded();\n\n this._logger.info('[%s] Flash player has been destroyed', this._streamId);\n } catch (e) {\n this._logger.error('[%s] Error while destroying Flash player [%s]', this._streamId, e.code, e);\n\n finalizeStreamEnded();\n }\n }\n }\n\n getStats(): LiveStreamingStatistics {\n const statistics = {\n width: 0,\n height: 0,\n currentTime: 0.0,\n lag: 0.0,\n networkState: NetworkStates.NetworkNoSource\n };\n\n if (!this._playerElement) {\n return statistics;\n }\n\n statistics.currentTime = this._playerElement.currentTime;\n\n const trueCurrentTime = (Date.now() - this._options.originStartTime) / 1000;\n\n statistics.lag = Math.max(0.0, trueCurrentTime - statistics.currentTime);\n\n return statistics;\n }\n\n getPlayer(): HTMLVideoElement {\n return this._playerElement;\n }\n\n reload(): void {\n this._phenixVideo.dispose();\n\n this.start();\n }\n\n private detectFlashPlugin(): boolean {\n const defaultVersion = [10, 0, 0];\n const pluginName = 'Shockwave Flash';\n const mimeType = 'application/x-shockwave-flash';\n const activeX = 'ShockwaveFlash.ShockwaveFlash';\n let version: string[] | number[] = ['0', '0', '0'];\n\n if (typeof this._hasFlashPlugin === 'boolean') {\n return this._hasFlashPlugin;\n }\n\n // Firefox, Webkit, Opera\n if (window.navigator && window.navigator.plugins && window.navigator.plugins[pluginName]) {\n const description = window.navigator.plugins[pluginName].description;\n\n /* eslint-disable */\n if (description &&\n window.navigator.mimeTypes &&\n window.navigator.mimeTypes[mimeType] &&\n !window.navigator.mimeTypes[mimeType].enabledPlugin) {\n version = description.replace(pluginName, '').replace(/^\\s+/, '').replace(/\\sr/gi, '.').split('.');\n\n for (let i = 0, total = version.length; i < total; i++) {\n // @ts-ignore\n version[i] = parseInt(version[i].match(/\\d+/), 10);\n }\n }\n // Internet Explorer / ActiveX\n // @ts-ignore\n } else if (window.ActiveXObject) {\n try {\n // @ts-ignore\n const ax = new window.ActiveXObject(activeX);\n\n if (ax) {\n const versionString = ax.GetVariable('$version') || '';\n const versionInfo = versionString.split(' ')[1].version.split(',');\n\n version = [parseInt(versionInfo[0], 10), parseInt(versionInfo[1], 10), parseInt(versionInfo[2], 10)];\n }\n } catch (e) {\n console.error(e);\n }\n }\n /* eslint-enable */\n\n this._hasFlashPlugin = (version[0] > defaultVersion[0] || (version[0] === defaultVersion[0] && version[1] > 0) || (version[0] === defaultVersion[0] && version[1] === 0 && version[2] >= 0));\n\n return this._hasFlashPlugin;\n }\n\n private stalled(): void {\n this._logger.info('[%s] Loading flash player stalled caused by [%s] event.', this._streamId, event.type);\n\n const currentVideoTime = this._playerElement.currentTime;\n\n setTimeout(() => {\n if (this._playerElement && this._playerElement.currentTime === currentVideoTime && !this._playerElement.paused && this.canReload()) {\n this._logger.warn('Reloading stream after being stalled for [%s] seconds', timeoutForStallWithoutProgressToRestart / 1000);\n\n this.reloadIfAble();\n }\n }, timeoutForStallWithoutProgressToRestart);\n }\n\n private ended(): void {\n this._logger.info('[%s] Flash player ended.', this._streamId);\n this._stopPlayer();\n }\n\n private canReload(): boolean {\n const hasElapsedMinTimeSinceLastReload = !this._lastReloadTime || Date.now() - this._lastReloadTime > minTimeBeforeNextReload;\n\n return this._playerElement && this._playerElement.buffered.length !== 0 && hasElapsedMinTimeSinceLastReload;\n }\n\n private reloadIfAble(): void {\n if (!this.canReload()) {\n return;\n }\n\n this._logger.warn('Reloading unhealthy stream that was active for at least [%s] seconds', minTimeBeforeNextReload / 1000);\n\n this._lastReloadTime = Date.now();\n\n this.reload();\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport ChannelContext from '../channels/ChannelContext';\nimport Discovery from '../discovery/Discovery';\nimport Disposable from '../../lang/Disposable';\nimport DisposableList from '../../lang/DisposableList';\nimport FlashRenderer from './FlashRenderer';\nimport LoggerFactory from '../../logger/LoggerFactory';\nimport {IStream} from './IStream';\nimport {ILogger} from '../../logger/LoggerInterface';\nimport {ChannelState} from '../channels';\n\nexport default class RtmpStream implements IStream {\n private readonly _logger: ILogger = LoggerFactory.getLogger('RtmpStream');\n private readonly _channelContext: ChannelContext;\n private readonly _monitorDisposables = new DisposableList();\n private readonly _handleStreamFailure: () => Promise<void>;\n\n private _originElement: HTMLVideoElement;\n private _monitorFailureCount = 0;\n\n constructor(channelContext, handleStreamFailure: () => Promise<void>) {\n this._channelContext = channelContext;\n this._handleStreamFailure = handleStreamFailure;\n this._channelContext.disposables.add(this);\n }\n\n start(uri, token): Promise<void> {\n return Discovery.discoverClosestEndPointWithCaching(uri)\n .then(endPoint => {\n this._channelContext.online.value = true;\n this._channelContext.endPoint.value = endPoint;\n this._logger.info('Connecting to [%s]', endPoint.toString());\n\n return endPoint.subscribe(token, null, this._channelContext.failureCount.value);\n })\n .then(({status, stream, createOfferDescriptionResponse, lag}) => {\n this._channelContext.stream.value = stream;\n this._channelContext.lag.value = lag;\n\n this._channelContext.applySessionAndStreamPropertiesToVideoElement();\n\n this._logger.debug(\n '[%s] Subscribe completed [%s] [%j]',\n this._channelContext.streamId,\n status,\n createOfferDescriptionResponse,\n );\n\n this._channelContext.state.value = this._channelContext.mapSubscribeStatusToChannelStatus(status);\n\n this._channelContext.applyStatus(status);\n\n if (status !== 'ok') {\n return;\n }\n\n const offerSdp = createOfferDescriptionResponse.sessionDescription.sdp;\n const options = {\n originStartTime: Date.now() - lag + this._channelContext.endPoint.value.roundTripTime / 2,\n lag\n };\n const rtmpStreamManifestMatch = offerSdp.match(/a=x-rtmp:(rtmp:\\/\\/[^\\n]*)/m);\n const rtmpOption = rtmpStreamManifestMatch && rtmpStreamManifestMatch[1] ? rtmpStreamManifestMatch[1] : '';\n\n if (!rtmpOption) {\n this._channelContext.state.value = ChannelState.Error;\n\n throw new Error('No RTMP URL provided in SDP');\n }\n\n const rtmpUriAndAttributes = rtmpOption;\n const rtmpUri = rtmpUriAndAttributes.match(/(rtmp:\\/\\/[^\\n\\s]*)/)[0] || '';\n const bitrate = rtmpUriAndAttributes.match(/bitrate=([^\\n\\s;]*)/)[1];\n const resolution = rtmpUriAndAttributes.match(/resolution=([^\\n\\s;]*)/)[1];\n const player = new FlashRenderer(this._channelContext.videoElement.value, 'rtmp', this._channelContext.streamId, [{\n uri: rtmpUri,\n bitrate: bitrate,\n resolution: resolution\n }],\n options,\n () => this.onEnded(player)\n );\n\n this._originElement = this._channelContext.videoElement.value;\n\n this.monitor(player);\n\n player.start();\n this._channelContext.videoElement.value = player.getPlayer();\n });\n }\n\n onEnded(player: FlashRenderer): void {\n this._channelContext.state.value = ChannelState.Error;\n this._channelContext.videoElement.value = this._originElement;\n\n this._channelContext.playing.value = false;\n this._channelContext.loading.value = true;\n\n player.dispose();\n this._monitorDisposables.dispose();\n\n const ignored = this._handleStreamFailure()\n .catch(e => {\n this._logger.error('Failed handling stream failure', e);\n });\n }\n\n private monitor(player: FlashRenderer): void {\n this._monitorDisposables.dispose();\n\n const playerElement = player.getPlayer();\n const timeout = window.setTimeout(() => {\n const newStreamStatistics = player.getStats();\n\n if (isNaN(newStreamStatistics.currentTime)) {\n this._monitorFailureCount++;\n\n if (this._monitorFailureCount > 6) {\n this._monitorFailureCount = 0;\n this.onEnded(player);\n\n return;\n }\n } else {\n this._monitorFailureCount = 0;\n }\n\n this.monitor(player);\n }, 1000);\n\n if (playerElement && playerElement.paused && this._channelContext.state.value === ChannelState.Playing) {\n this._channelContext.state.value = ChannelState.Paused;\n }\n\n if (playerElement && !playerElement.paused && this._channelContext.state.value !== ChannelState.Playing) {\n this._channelContext.state.value = ChannelState.Playing;\n }\n\n this._monitorDisposables.add(new Disposable(() => {\n clearTimeout(timeout);\n }));\n }\n\n dispose(): void {\n this._monitorDisposables.dispose();\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport {ILogger} from '../../logger/LoggerInterface';\nimport LoggerFactory from '../../logger/LoggerFactory';\nimport {LiveStreaming} from './LiveStreaming';\nimport {LiveStreamingOptions, LiveStreamingStatistics} from './StreamTypes';\nimport {NetworkStates} from './NetworkStates';\n\nconst bandwidthToStartAt = 3000000; // Corresponds to 720p in most setups\nconst minTimeBeforeNextReload = 15000;\n\ntype EventListenerForWebPlayer = (evt: WebPlayerEvent) => void;\ntype WebPlayerEvent = {\n code: number;\n severity: number;\n error: string;\n}\n\nexport interface IWebPlayer {\n start: (url: string) => void;\n addEventListener(name: string, listener: EventListenerForWebPlayer): void;\n dispose(): void;\n errors: {\n severity: {\n RECOVERABLE: number;\n };\n };\n getStats(): LiveStreamingStatistics;\n}\n\nexport default class WebPlayer {\n private readonly _logger: ILogger = LoggerFactory.getLogger('WebPlayer');\n private readonly _videoElement: HTMLVideoElement;\n private readonly _kind: string;\n private readonly _streamId: string;\n private readonly _manifestURI: string;\n private readonly _options: LiveStreamingOptions;\n private _player: IWebPlayer;\n private _lastReloadTime: number;\n\n constructor(videoElement: HTMLVideoElement, kind: string, streamId: string, manifestURI: string, options: LiveStreamingOptions) {\n this._videoElement = videoElement;\n this._kind = kind;\n this._streamId = streamId;\n this._manifestURI = encodeURI(manifestURI).replace(/[#]/g, '%23');\n this._options = options;\n }\n\n start(): void {\n if (LiveStreaming.phenixWebPlayer) {\n const playerOptions = {\n ...this._options,\n bandwidthToStartAt\n };\n\n this._player = new LiveStreaming.phenixWebPlayer.WebPlayer(this._logger, this._videoElement, playerOptions);\n this._player.start(this._manifestURI);\n\n this._player.addEventListener('error', errorObject => {\n if (this.canReload() && errorObject && (errorObject.code === 3 || errorObject.severity === LiveStreaming.phenixWebPlayer.errors.severity.RECOVERABLE)) {\n this._logger.warn('Reloading unhealthy stream after error event [%j]', errorObject);\n this.reloadIfAble();\n }\n\n this._logger.error('Cannot reload with error [%j]', errorObject);\n });\n\n return;\n }\n }\n\n isSupported(): boolean {\n return LiveStreaming.phenixWebPlayer && LiveStreaming.phenixWebPlayer.isSupported;\n }\n\n getStats(): LiveStreamingStatistics {\n if (!this._player) {\n return {\n width: 0,\n height: 0,\n currentTime: 0.0,\n lag: 0.0,\n networkState: NetworkStates.NetworkNoSource,\n dataBuffered: 0.0\n };\n }\n\n const statistics = this._player.getStats();\n const currentTime = statistics.currentTime || this._videoElement['currentTime'];\n const trueCurrentTime = (Date.now() - this._options.originStartTime) / 1000;\n\n if (this._videoElement.buffered && this._videoElement.buffered.length) {\n statistics.dataBuffered = this._videoElement.buffered.end(0);\n }\n\n if (statistics.isNative && statistics.deliveryType === 'Hls') {\n statistics.currentTime = currentTime - statistics.lag;\n }\n\n if (!statistics.currentTime) {\n statistics.currentTime = currentTime;\n }\n\n if (!statistics.isNative) {\n statistics.lag = Math.max(0.0, trueCurrentTime - currentTime);\n }\n\n if (statistics.estimatedBandwidth > 0) {\n statistics.networkState = NetworkStates.NetworkLoading;\n } else if (statistics.playTime > 0) {\n statistics.networkState = NetworkStates.NetworkIdle;\n } else if (statistics.video) {\n statistics.networkState = NetworkStates.NetworkEmpty;\n } else {\n statistics.networkState = NetworkStates.NetworkNoSource;\n }\n\n return statistics;\n }\n\n dispose(): void {\n if (this._player) {\n this._player.dispose();\n }\n\n this._player = null;\n }\n\n private canReload(): boolean {\n const hasElapsedMinTimeSinceLastReload = !this._lastReloadTime || Date.now() - this._lastReloadTime > minTimeBeforeNextReload;\n\n return this._videoElement && this._player && this._videoElement.buffered.length !== 0 && hasElapsedMinTimeSinceLastReload;\n }\n\n private reloadIfAble(): void {\n if (!this.canReload()) {\n return;\n }\n\n this._logger.warn('[%s] Reloading unhealthy stream that was active for at least [%s] seconds', this._streamId, minTimeBeforeNextReload / 1000);\n\n this._lastReloadTime = Date.now();\n\n this.reload();\n }\n\n private reload(): void {\n this._player.dispose();\n\n this._player = null;\n\n this.start();\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport {ILogger} from '../../logger/LoggerInterface';\nimport LoggerFactory from '../../logger/LoggerFactory';\nimport {LiveStreaming} from './LiveStreaming';\nimport {LiveStreamingOptions, LiveStreamingStatistics} from './StreamTypes';\nimport {NetworkStates} from './NetworkStates';\n\ntype ShakaOptions = {\n abr: {\n defaultBandwidthEstimate: number;\n };\n manifest: {\n retryParameters: {\n timeout: number;\n };\n };\n streaming: {\n rebufferingGoal: number;\n bufferingGoal: number;\n bufferBehind: number;\n retryParameters: {\n timeout: number;\n maxAttempts: number;\n backoffFactor: number;\n };\n };\n}\n\nexport interface IShaka {\n configure: (o: ShakaOptions) => void;\n load: (uri: string) => Promise<void>;\n getStats: () => LiveStreamingStatistics;\n destroy: () => void;\n unload: () => void;\n}\n\nexport default class ShakaPlayer {\n private readonly _logger: ILogger = LoggerFactory.getLogger('ShakaPlayer');\n private readonly _videoElement: HTMLVideoElement;\n private readonly _kind: string;\n private readonly _streamId: string;\n private readonly _manifestURI: string;\n private readonly _options: LiveStreamingOptions;\n private _player: IShaka;\n\n constructor(videoElement: HTMLVideoElement, kind: string, streamId: string, manifestURI: string, options: LiveStreamingOptions) {\n this._videoElement = videoElement;\n this._kind = kind;\n this._streamId = streamId;\n this._manifestURI = encodeURI(manifestURI).replace(/[#]/g, '%23');\n this._options = options;\n }\n\n start(): void {\n if (LiveStreaming.shaka) {\n const playerOptions: ShakaOptions = {\n abr: {defaultBandwidthEstimate: 2000000},\n manifest: {retryParameters: {timeout: 10000}},\n streaming: {\n rebufferingGoal: 2,\n bufferingGoal: 10,\n bufferBehind: 30,\n retryParameters: {\n timeout: 10000,\n maxAttempts: 10,\n backoffFactor: 1.1\n }\n }\n };\n\n this._player = new LiveStreaming.shaka.Player(this._videoElement);\n this.loadPlayer(playerOptions);\n\n return;\n }\n }\n\n getStats(): LiveStreamingStatistics {\n if (!this._player) {\n return {\n width: 0,\n height: 0,\n currentTime: 0,\n lag: 0,\n networkState: NetworkStates.NetworkNoSource\n };\n }\n\n const statistics = {\n ...this._player.getStats(),\n currentTime: 0,\n lag: 0\n };\n const currentTime = this._videoElement['currentTime'] || 0;\n const trueCurrentTime = (Date.now() - this._options.originStartTime) / 1000;\n const lag = Math.max(0.0, trueCurrentTime - currentTime);\n\n if (this._videoElement) {\n statistics.currentTime = currentTime;\n statistics.lag = lag;\n\n if (this._videoElement.buffered && this._videoElement.buffered.length) {\n statistics.dataBuffered = this._videoElement.buffered.end(0);\n }\n }\n\n if (statistics.estimatedBandwidth > 0) {\n statistics.networkState = NetworkStates.NetworkLoading;\n } else if (statistics.playTime > 0) {\n statistics.networkState = NetworkStates.NetworkIdle;\n } else if (statistics.video) {\n statistics.networkState = NetworkStates.NetworkEmpty;\n } else {\n statistics.networkState = NetworkStates.NetworkNoSource;\n }\n\n return statistics;\n }\n\n dispose(): void {\n if (this._player) {\n this._player.unload();\n this._player.destroy();\n }\n\n this._player = null;\n }\n\n private loadPlayer(playerConfig: ShakaOptions): void {\n this._player.configure(playerConfig);\n\n const ignored = this._player.load(this._manifestURI).then(() => {\n this._logger.info('[%s] DASH live stream has been loaded', this._streamId);\n\n if (this._videoElement.play) {\n this._videoElement.play();\n }\n }).catch(e => {\n this._logger.error('[%s] Error while loading DASH live stream [%s]', this._streamId, e.code, e);\n });\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport {LiveStreaming} from './LiveStreaming';\nimport {LiveStreamingOptions, LiveStreamingStatistics} from './StreamTypes';\nimport {IHlsPlayerType} from './IHlsPlayer';\nimport {NetworkStates} from './NetworkStates';\n\nexport default class HlsPlayer {\n private readonly _videoElement: HTMLVideoElement;\n private readonly _kind: string;\n private readonly _streamId: string;\n private readonly _manifestURI: string;\n private readonly _options: LiveStreamingOptions;\n private _player: IHlsPlayerType;\n\n constructor(videoElement: HTMLVideoElement, kind: string, streamId: string, manifestURI: string, options: LiveStreamingOptions) {\n this._videoElement = videoElement;\n this._kind = kind;\n this._streamId = streamId;\n this._manifestURI = encodeURI(manifestURI).replace(/[#]/g, '%23');\n this._options = options;\n }\n\n start(): void {\n if (LiveStreaming.hlsPlayer) {\n if (LiveStreaming.hlsPlayer.isSupported()) {\n this._player = new LiveStreaming.hlsPlayer({\n enableWorker: true,\n maxBufferLength: 1,\n liveBackBufferLength: 0,\n liveSyncDuration: 7,\n liveDurationInfinity: true,\n liveMaxLatencyDuration: Infinity,\n highBufferWatchdogPeriod: 1\n });\n this._player.loadSource(this._manifestURI);\n this._player.attachMedia(this._videoElement);\n } else if (this._videoElement.canPlayType('application/vnd.apple.mpegurl')) {\n this._videoElement.src = this._manifestURI;\n }\n }\n }\n\n isSupported(): boolean {\n return LiveStreaming.hlsPlayer && LiveStreaming.hlsPlayer.isSupported();\n }\n\n getStats(): LiveStreamingStatistics {\n if (!this._player) {\n return {\n width: 0,\n height: 0,\n currentTime: 0.0,\n lag: 0.0,\n networkState: NetworkStates.NetworkNoSource\n };\n }\n\n const statistics = {\n width: this._player.media.offsetWidth,\n height: this._player.media.offsetHeight,\n currentTime: this._player.media.currentTime,\n lag: 0.0,\n networkState: NetworkStates.NetworkIdle,\n dataBuffered: 0.0\n };\n\n if (this._videoElement.buffered && this._videoElement.buffered.length) {\n statistics.dataBuffered = this._videoElement.buffered.end(0);\n }\n\n if (this._player.streamController.state === 'IDLE') {\n statistics.networkState = NetworkStates.NetworkIdle;\n } else if (this._player.streamController.state === 'ERROR' || this._player.streamController.state === 'ENDED') {\n statistics.networkState = NetworkStates.NetworkNoSource;\n } else if (this._player.streamController.state.includes('LOADING') || this._player.streamController.state.includes('WAITING')) {\n statistics.networkState = NetworkStates.NetworkLoading;\n } else {\n statistics.networkState = NetworkStates.NetworkEmpty;\n }\n\n const currentTime = this._videoElement['currentTime'] || 0;\n const trueCurrentTime = (Date.now() - this._options.originStartTime) / 1000;\n\n statistics.lag = Math.max(0.0, (currentTime + (this._options.lag / 1000)) - trueCurrentTime);\n\n return statistics;\n }\n\n dispose(): void {\n if (this._player && this._player.destroy) {\n this._player.destroy();\n\n this._player = null;\n }\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport FeatureEnablement from '../feature/FeatureEnablement';\nimport WebPlayer from './WebPlayer';\nimport SDK from '../SDK';\nimport ShakaPlayer from './ShakaPlayer';\nimport HlsPlayer from './HlsPlayer';\nimport IDisposable from '../../lang/IDisposable';\nimport {HlsPlayerType, LiveStreamingOptions, LiveStreamingStatistics, ShakaType, WebPlayerType} from './StreamTypes';\n\nexport class LiveStreaming {\n private static _pending = false;\n private static _hlsPlayer: HlsPlayerType;\n private static _phenixWebPlayer: WebPlayerType;\n private static _shaka: ShakaType;\n private static _options: LiveStreamingOptions;\n private static _player: ShakaPlayer | WebPlayer | HlsPlayer;\n\n static get hlsPlayer(): HlsPlayerType {\n return this._hlsPlayer;\n }\n\n static get phenixWebPlayer(): WebPlayerType {\n return this._phenixWebPlayer;\n }\n\n static get shaka(): ShakaType {\n return this._shaka;\n }\n\n static async start(videoElement: HTMLVideoElement, streamId: string, offerSdp: string, options: LiveStreamingOptions): Promise<IDisposable> {\n this._options = options;\n\n if (this._hlsPlayer || this._shaka || this._phenixWebPlayer) {\n return this.loaded(videoElement, streamId, offerSdp);\n }\n\n if (!SDK.webPlayerLoader && !SDK.shakaPlayerLoader && !SDK.hlsJsLoader) {\n throw new Error('No player is provided');\n }\n\n if (!SDK.webPlayerLoader && !SDK.shakaPlayerLoader && !SDK.hlsJsLoader) {\n throw new Error('Unsupported-feature, add stream player');\n }\n\n return new Promise(resolve => {\n if (SDK.hlsJsLoader) {\n this._pending = true;\n SDK.hlsJsLoader(player => {\n this._hlsPlayer = player;\n\n if (this._pending) {\n this._pending = false;\n\n resolve(this.loaded(videoElement, streamId, offerSdp));\n }\n });\n }\n\n if (SDK.webPlayerLoader) {\n this._pending = true;\n SDK.webPlayerLoader(player => {\n this._phenixWebPlayer = player;\n\n if (this._pending) {\n this._pending = false;\n\n resolve(this.loaded(videoElement, streamId, offerSdp));\n }\n });\n }\n\n if (SDK.shakaPlayerLoader) {\n this._pending = true;\n SDK.shakaPlayerLoader(player => {\n this._shaka = player;\n\n if (this._pending) {\n this._pending = false;\n\n resolve(this.loaded(videoElement, streamId, offerSdp));\n }\n });\n }\n });\n }\n\n static getStats(): LiveStreamingStatistics {\n if (this._player) {\n return this._player.getStats();\n }\n\n return null;\n }\n\n private static play(Player: typeof WebPlayer | typeof ShakaPlayer | typeof HlsPlayer, videoElement: HTMLVideoElement, streamId: string, offerSdp: string, options: LiveStreamingOptions): IDisposable {\n const dashManifestUrlMatch = offerSdp.match(/a=x-playlist:([^\\n]*[.]mpd\\??[^\\s]*)/m);\n const hlsManifestUrlMatch = offerSdp.match(/a=x-playlist:([^\\n]*[.]m3u8\\??[^\\s]*)/m);\n const manifestUrl = dashManifestUrlMatch && dashManifestUrlMatch[1] ? dashManifestUrlMatch[1] : '';\n const playlistUrl = hlsManifestUrlMatch && hlsManifestUrlMatch[1] ? hlsManifestUrlMatch[1] : '';\n\n if (FeatureEnablement.shouldUseNativeHls || (this._hlsPlayer && this._hlsPlayer.isSupported())) {\n this._player = new Player(videoElement, 'hls', streamId, playlistUrl, options);\n\n this._player.start();\n\n return this._player;\n }\n\n this._player = new Player(videoElement, 'dash', streamId, manifestUrl, options);\n\n this._player.start();\n\n return this._player;\n }\n\n private static loaded(videoElement: HTMLVideoElement, streamId: string, offerSdp: string): IDisposable {\n if (!this._shaka && !this._phenixWebPlayer && !this._hlsPlayer) {\n return;\n }\n\n if (this._hlsPlayer) {\n return this.play(HlsPlayer, videoElement, streamId, offerSdp, {\n ...this._options,\n preferNative: FeatureEnablement.shouldUseNativeHls\n });\n }\n\n if (this._phenixWebPlayer) {\n return this.play(WebPlayer, videoElement, streamId, offerSdp, {\n ...this._options,\n preferNative: FeatureEnablement.shouldUseNativeHls\n });\n }\n\n if (this._shaka) {\n return this.play(ShakaPlayer, videoElement, streamId, offerSdp, {\n ...this._options,\n preferNative: FeatureEnablement.shouldUseNativeHls\n });\n }\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport ChannelContext from '../channels/ChannelContext';\nimport Discovery from '../discovery/Discovery';\nimport Disposable from '../../lang/Disposable';\nimport DisposableList from '../../lang/DisposableList';\nimport LoggerFactory from '../../logger/LoggerFactory';\nimport {ChannelState} from '../channels';\nimport {LiveStreaming} from './LiveStreaming';\nimport {LiveStreamingStatistics} from './StreamTypes';\nimport IDisposable from '../../lang/IDisposable';\nimport {IStream} from './IStream';\nimport {ILogger} from '../../logger/LoggerInterface';\n\nexport default class ChunkedStream implements IStream {\n private readonly _logger: ILogger = LoggerFactory.getLogger('ChunkedStream');\n private readonly _channelContext: ChannelContext;\n private readonly _monitorDisposables = new DisposableList();\n private readonly _handleStreamFailure: () => Promise<void>;\n private _streamStatistics: LiveStreamingStatistics;\n private _monitorFailureCount = 0;\n\n constructor(channelContext, handleStreamFailure: () => Promise<void>) {\n this._channelContext = channelContext;\n this._handleStreamFailure = handleStreamFailure;\n this._channelContext.disposables.add(this);\n }\n\n start(uri: URL, token: string): Promise<void | IDisposable> {\n return Discovery.discoverClosestEndPointWithCaching(uri)\n .then(endPoint => {\n this._channelContext.online.value = true;\n this._channelContext.endPoint.value = endPoint;\n this._logger.info('Connecting to [%s]', endPoint.toString());\n\n return endPoint.subscribe(token, null, this._channelContext.failureCount.value);\n })\n .then(({status, stream, createOfferDescriptionResponse, lag}) => {\n this._channelContext.stream.value = stream;\n this._channelContext.lag.value = lag;\n\n this._channelContext.applySessionAndStreamPropertiesToVideoElement();\n\n this._logger.debug(\n '[%s] Subscribe completed [%s] [%j] [%j] [%j] [%j]',\n this._channelContext.streamId,\n status,\n createOfferDescriptionResponse,\n );\n\n this._channelContext.state.value = this._channelContext.mapSubscribeStatusToChannelStatus(status);\n\n this._channelContext.applyStatus(status);\n\n if (status !== 'ok') {\n return;\n }\n\n const offerSdp = createOfferDescriptionResponse.sessionDescription.sdp;\n const options = {\n originStartTime: Date.now() - lag + this._channelContext.endPoint.value.roundTripTime / 2,\n lag\n };\n\n return LiveStreaming.start(this._channelContext.videoElement.value, this._channelContext.streamId, offerSdp, options)\n .then(player => {\n this.monitor(player);\n\n return player;\n })\n .catch(e => {\n this._logger.error('LiveStreaming failed', e);\n this._channelContext.loading.value = false;\n this._channelContext.playing.value = false;\n this._channelContext.state.value = ChannelState.Stopped;\n });\n });\n }\n\n private monitor(player: IDisposable): void {\n this._monitorDisposables.dispose();\n\n const timeout = window.setTimeout(() => {\n const newStreamStatistics = LiveStreaming.getStats();\n\n if (this._streamStatistics &&\n this._streamStatistics.currentTime >= newStreamStatistics.currentTime &&\n this._streamStatistics.dataBuffered >= newStreamStatistics.dataBuffered\n ) {\n this._monitorFailureCount++;\n\n if (this._monitorFailureCount > 6) {\n this._monitorFailureCount = 0;\n this._channelContext.state.value = ChannelState.Error;\n\n this._channelContext.playing.value = false;\n this._channelContext.loading.value = true;\n player.dispose();\n this._monitorDisposables.dispose();\n\n const ignored = this._handleStreamFailure()\n .catch(e => {\n this._logger.error('Failed handling stream failure', e);\n });\n\n return;\n }\n } else {\n this._monitorFailureCount = 0;\n }\n\n if (this._channelContext.videoElement.value.paused && this._channelContext.state.value === ChannelState.Playing) {\n this._channelContext.state.value = ChannelState.Paused;\n }\n\n if (!this._channelContext.videoElement.value.paused && this._channelContext.state.value !== ChannelState.Playing) {\n this._channelContext.state.value = ChannelState.Playing;\n }\n\n this._streamStatistics = newStreamStatistics;\n this.monitor(player);\n }, 1000);\n\n this._monitorDisposables.add(new Disposable(() => {\n clearTimeout(timeout);\n }));\n }\n\n dispose(): void {\n this._monitorDisposables.dispose();\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport LoggerFactory from '../logger/LoggerFactory';\nimport SDK from '../sdk/SDK';\nimport IPeerConnection from './IPeerConnection';\nimport {ILogger} from '../logger/LoggerInterface';\nimport FeatureEnablement from '../sdk/feature/FeatureEnablement';\n\nexport interface IPeerConnectionOfferInit {\n audioTransceiver?: RTCRtpTransceiver;\n videoTransceiver?: RTCRtpTransceiver;\n peerConnection: IPeerConnection;\n localOffer: RTCSessionDescriptionInit;\n}\n\nexport default class PeerConnectionService {\n private static _logger: ILogger = LoggerFactory.getLogger('PeerConnectionService');\n private static _cached: Promise<IPeerConnectionOfferInit>;\n\n static initiateInitialPrecaching(): void {\n if (FeatureEnablement.isPrecachingEnabled) {\n const ignored = PeerConnectionService.precacheCreatePeerConnectionOffer()\n .catch(e => PeerConnectionService._logger.error('Failed to pre-cache peer connection offer\"', e));\n }\n }\n\n static async precacheCreatePeerConnectionOffer(): Promise<IPeerConnectionOfferInit> {\n return PeerConnectionService._cached = PeerConnectionService.createPeerConnectionOffer()\n .catch(e => {\n PeerConnectionService._cached = null;\n\n throw e;\n });\n }\n\n static async createPeerConnectionOffer(): Promise<IPeerConnectionOfferInit> {\n if (PeerConnectionService._cached) {\n const value = PeerConnectionService._cached;\n\n PeerConnectionService._cached = null;\n\n return value;\n }\n\n const peerConnectionFactory = SDK.peerConnectionFactory.value;\n\n return peerConnectionFactory.createPeerConnection()\n .then(async peerConnection => {\n const supportsAddTransceiver = peerConnection.supportsAddTransceiver;\n let videoTransceiver, audioTransceiver;\n\n if (supportsAddTransceiver) {\n audioTransceiver = peerConnection.addTransceiver('audio', {direction: 'recvonly'});\n videoTransceiver = peerConnection.addTransceiver('video', {direction: 'recvonly'});\n }\n\n return {\n audioTransceiver,\n videoTransceiver,\n peerConnection: peerConnection,\n localOffer: await peerConnection.createOffer(supportsAddTransceiver ? undefined : {\n offerToReceiveAudio: true,\n offerToReceiveVideo: true\n })\n };\n });\n }\n\n private constructor() {\n throw new Error('PeerConnectionService is a static class that may not be instantiated');\n }\n}\n\nPeerConnectionService.initiateInitialPrecaching();","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nexport default class SdpParser {\n private readonly _sdp: string;\n private readonly _audioCodec: string;\n private readonly _videoCodec: string;\n\n constructor(sdp: string) {\n this._sdp = sdp;\n this._audioCodec = this.applyCodec('audio');\n this._videoCodec = this.applyCodec('video');\n }\n\n get audioCodec(): string {\n return this._audioCodec;\n }\n\n get videoCodec(): string {\n return this._videoCodec;\n }\n\n applyCodec(type: string): string {\n const splitSdp = this._sdp.split(/(\\r\\n|\\r|\\n)/);\n const usedCodecLine = splitSdp.find(item => item.includes(`a=rtpmap:${splitSdp.find(i => i.includes(`m=${type}`)).split(' ')[3]}`));\n const usedCodec = usedCodecLine.split(' ')[1];\n const codecName = usedCodec.split('/')[0];\n\n return codecName;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport IPeerConnection from './IPeerConnection';\nimport Subject from '../rx/Subject';\nimport FeatureEnablement from '../sdk/feature/FeatureEnablement';\nimport SdpParser from './SdpParser';\nimport IDisposable from '../lang/IDisposable';\n\nexport interface IRtcMonitorStatistic {\n [kind: string]: IRtcStatistic;\n}\n\nexport interface ILegacyRTCStatsReport {\n result: () => ILegacyRTCStatsReportItem[];\n}\n\nexport interface ILegacyRTCStatsReportItem extends RTCStatsReport {\n type: string;\n names: () => string[];\n stat: (name) => number;\n}\n\nexport interface IRtcStatistic {\n ssrc?: string;\n mediaType?: string;\n timestamp: number;\n bytesReceived?: number;\n framesDecoded?: number;\n packetsLost?: number;\n packetsReceived?: number;\n codec?: string;\n fps?: number;\n roundTripTime?: number;\n}\n\nconst updateStatisticTimeOut = 1000;\n\nexport default class RtcConnectionMonitor implements IDisposable {\n private readonly _estimatedRoundTripTime: number;\n private readonly _estimatedVideoCodec: string;\n private readonly _estimatedAudioCodec: string;\n private readonly _rtcStatistic: Subject<IRtcMonitorStatistic> = new Subject<IRtcMonitorStatistic>({});\n private _peerConnection: IPeerConnection;\n private _isMonitorRunning = true;\n private _updateTimeOut: number;\n private _tracksToMonitor: string[];\n\n constructor(peerConnection: IPeerConnection, mediaStream: MediaStream, estimatedRoundTripTime: number) {\n this._peerConnection = peerConnection;\n this._estimatedRoundTripTime = estimatedRoundTripTime;\n this._tracksToMonitor = mediaStream.getTracks().map(track => track.kind) || [];\n\n if (this._peerConnection) {\n if (!FeatureEnablement.getCurrentOfferDisabled) {\n const parsedSDP = new SdpParser(this._peerConnection.currentRemoteDescription.sdp);\n\n this._estimatedAudioCodec = parsedSDP.audioCodec;\n this._estimatedVideoCodec = parsedSDP.videoCodec;\n }\n\n this.updateStatistic();\n }\n }\n\n get rtcStatistic(): Subject<IRtcMonitorStatistic> {\n return this._rtcStatistic;\n }\n\n dispose(): void {\n this._isMonitorRunning = false;\n this._peerConnection = null;\n\n if (this._updateTimeOut) {\n clearTimeout(this._updateTimeOut);\n this._updateTimeOut = null;\n }\n }\n\n private async updateStatistic(): Promise<void> {\n if (FeatureEnablement.getStatsPromiseBasedDisabled) {\n const ignored = await this.updateStatisticLegacy();\n\n return;\n }\n\n // Safari 11 doesnt have kind or mediaType so we need to take it from the inbound-rtp object id\n const getKindForSafari11 = (item): string => item.id.includes('Audio') ? 'audio' : item.id.includes('Video') ? 'video' : '';\n const ignored = await this._peerConnection.getStats(null)\n .then(stats => {\n const rtcStats: IRtcMonitorStatistic = {};\n\n if (stats) {\n let roundTripTime = this._estimatedRoundTripTime;\n\n stats.forEach(i => {\n if (i.type === 'candidate-pair' && i.currentRoundTripTime) {\n roundTripTime = i.currentRoundTripTime * 1000;\n }\n\n if (i.type === 'inbound-rtp') {\n const kind = i.kind || i.mediaType || getKindForSafari11(i);\n let codec = '';\n\n stats.forEach(item => {\n if (item.id === i.codecId) {\n codec = item.mimeType;\n }\n });\n\n if (kind && this._tracksToMonitor.includes(kind)) {\n rtcStats[kind] = {\n ssrc: i.ssrc,\n mediaType: kind,\n timestamp: i.timestamp,\n bytesReceived: i.bytesReceived,\n packetsLost: i.packetsLost,\n packetsReceived: i.packetsReceived,\n codec: codec || this.getCodecByType(kind),\n roundTripTime\n };\n\n if (kind === 'video' && this._rtcStatistic.value && this._rtcStatistic.value.video) {\n rtcStats[kind].framesDecoded = i.framesDecoded;\n rtcStats[kind]['fps'] = (i.framesDecoded - this._rtcStatistic.value.video.framesDecoded) /\n (rtcStats[kind].timestamp - this._rtcStatistic.value.video.timestamp) *\n 1000 || 0;\n }\n }\n }\n });\n }\n\n this._rtcStatistic.value = rtcStats;\n }).then(() => {\n if (this._isMonitorRunning) {\n this._updateTimeOut = window.setTimeout(() => this.updateStatistic(), updateStatisticTimeOut);\n }\n });\n }\n\n private async updateStatisticLegacy(): Promise<void> {\n const ignored = await this._peerConnection.getStatsLegacy().then(stats => {\n const rtcStats: IRtcMonitorStatistic = {};\n let roundTripTime = this._estimatedRoundTripTime;\n\n stats.result().forEach(report => {\n report.names().forEach(name => {\n if (name === 'googRTT') {\n roundTripTime = report.stat(name);\n }\n });\n\n if (report.type === 'ssrc') {\n const mediaType = report.stat('mediaType').toString();\n\n rtcStats[mediaType] = {timestamp: Date.now()};\n rtcStats[mediaType]['ssrc'] = report.stat('ssrc').toString();\n rtcStats[mediaType]['mediaType'] = mediaType;\n rtcStats[mediaType]['bytesReceived'] = report.stat('bytesReceived');\n rtcStats[mediaType]['packetsLost'] = report.stat('packetsLost');\n rtcStats[mediaType]['packetsReceived'] = report.stat('packetsReceived');\n rtcStats[mediaType]['codec'] = report.stat('googCodecName').toString() || this.getCodecByType(mediaType);\n rtcStats[mediaType]['roundTripTime'] = roundTripTime;\n\n if (mediaType === 'video' && this._rtcStatistic.value && this._rtcStatistic.value.video) {\n rtcStats[mediaType]['framesDecoded'] = report.stat('framesDecoded');\n rtcStats[mediaType]['fps'] = (rtcStats[mediaType].framesDecoded - this._rtcStatistic.value.video.framesDecoded) /\n (rtcStats[mediaType].timestamp - this._rtcStatistic.value.video.timestamp) *\n 1000 || 0;\n }\n }\n });\n this._rtcStatistic.value = rtcStats;\n }).then(() => {\n if (this._isMonitorRunning) {\n this._updateTimeOut = window.setTimeout(() => this.updateStatistic(), updateStatisticTimeOut);\n }\n });\n }\n\n private getCodecByType(type: string): string {\n switch (type) {\n case 'audio':\n return this._estimatedAudioCodec;\n case 'video':\n return this._estimatedVideoCodec;\n default:\n return 'unknown';\n }\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport IPeerConnection from '../../rtc/IPeerConnection';\nimport SDK from '../SDK';\nimport {IStream} from './IStream';\nimport EndPoint, {SetRemoteDescriptionStatus} from '../discovery/EndPoint';\nimport PeerConnectionService, {IPeerConnectionOfferInit} from '../../rtc/PeerConnectionService';\nimport Discovery from '../discovery/Discovery';\nimport FeatureEnablement from '../feature/FeatureEnablement';\nimport ChannelState from '../channels/ChannelState';\nimport assertUnreachable from '../../lang/assertUnreachable';\nimport RtcConnectionMonitor from '../../rtc/RtcConnectionMonitor';\nimport Durations from '../../time/Duration';\nimport {ILogger} from '../../logger/LoggerInterface';\nimport LoggerFactory from '../../logger/LoggerFactory';\nimport ChannelContext from '../channels/ChannelContext';\n\nconst iceCandidateAccumulationInterval = 100;\nconst defaultStreamSetupTimeout = 30000;\n\nexport default class RealTimeStream implements IStream {\n private readonly _logger: ILogger = LoggerFactory.getLogger('RealTimeStream');\n private readonly _channelContext: ChannelContext;\n private readonly _handleStreamFailure: () => Promise<void>;\n\n constructor(channelContext, handleStreamFailure: () => Promise<void>) {\n this._channelContext = channelContext;\n this._handleStreamFailure = handleStreamFailure;\n }\n\n start(uri, token, listenOnStreamSetup, playMediaStreamInVideoElement): Promise<void> {\n return Promise.all<EndPoint, IPeerConnectionOfferInit>([\n Discovery.discoverClosestEndPointWithCaching(uri),\n PeerConnectionService.createPeerConnectionOffer()\n ])\n .then(([endPoint, {localOffer, peerConnection}]) => {\n this._channelContext.online.value = true;\n this._channelContext.endPoint.value = endPoint;\n this._logger.info('Connecting to [%s]', endPoint.toString());\n this._logger.info('Local offer:\\n' + localOffer.sdp);\n\n if (FeatureEnablement.clientOfferDisabled || !peerConnection.supportsSetConfiguration || !peerConnection.supportsGetConfiguration) {\n peerConnection.close();\n peerConnection = null;\n localOffer = null;\n }\n\n this._channelContext.peerConnection.value = peerConnection;\n\n return endPoint.subscribe(token, localOffer, this._channelContext.failureCount.value);\n })\n .then(({status, stream, rtcConfiguration, setRemoteDescriptionResponse, createOfferDescriptionResponse, createAnswerDescriptionResponse, lag}) => {\n this._channelContext.stream.value = stream;\n this._channelContext.lag.value = lag;\n\n this._channelContext.applySessionAndStreamPropertiesToVideoElement();\n\n this._logger.debug(\n '[%s] Subscribe completed [%s] [%j] [%j] [%j] [%j]',\n this._channelContext.streamId,\n status,\n rtcConfiguration,\n setRemoteDescriptionResponse,\n createOfferDescriptionResponse,\n createAnswerDescriptionResponse\n );\n\n this._channelContext.state.value = this._channelContext.mapSubscribeStatusToChannelStatus(status);\n\n this._channelContext.applyStatus(status);\n\n if (status !== 'ok') {\n return;\n }\n\n return this.applyRtcConfiguration(this._channelContext.peerConnection.value, rtcConfiguration)\n .then(peerConnection => {\n let submitCandidatesTimeout;\n let cancelDiscovery = false;\n let discoveryCompleted = false;\n const candidates: RTCIceCandidate[] = [];\n\n peerConnection.onicecandidate = (e): void => {\n if (this._channelContext.stream.value !== stream) {\n return;\n }\n\n if (this._channelContext.peerConnection.value !== peerConnection) {\n return;\n }\n\n if (cancelDiscovery) {\n return;\n }\n\n if (!SDK.sendLocalCandidates.value) {\n return;\n }\n\n if (e.candidate && e.candidate.candidate) {\n candidates.push(e.candidate);\n } else {\n discoveryCompleted = true;\n }\n\n if (!submitCandidatesTimeout) {\n submitCandidatesTimeout = setTimeout(() => {\n if (this._channelContext.stream.value !== stream) {\n return;\n }\n\n if (cancelDiscovery) {\n return;\n }\n\n const ignored = this._channelContext.endPoint.value.addIceCandidates(stream, candidates, discoveryCompleted)\n .then(({status, options}) => {\n if (status !== 'ok') {\n this._logger.warn('[%s] Failed to add ICE candidates with reason [%s]', this._channelContext.streamId, status);\n\n return;\n }\n\n if (options.includes('cancel')) {\n cancelDiscovery = true;\n }\n\n this._logger.info('[%s] Added ICE candidates with reason [%s] and options [%s]', this._channelContext.streamId, status, options);\n })\n .catch(e => {\n this._logger.error('[%s] Failed to add ICE candidates', this._channelContext.streamId, e);\n });\n }, iceCandidateAccumulationInterval);\n }\n };\n\n peerConnection.oniceconnectionstatechange = (): void => {\n if (this._channelContext.stream.value !== stream) {\n return;\n }\n\n if (this._channelContext.peerConnection.value !== peerConnection) {\n return;\n }\n\n const retryCallback = (): void => {\n // If we stop normally the peer connection is unregistered first.\n // Thus anytime we see a closed peer connection that is still valid, it is an error.\n this._channelContext.state.value = ChannelState.Error;\n\n if (this._channelContext.videoElement.value) {\n this._channelContext.videoElement.value.pause();\n this._channelContext.videoElement.value.srcObject = null;\n }\n\n this._channelContext.playing.value = false;\n this._channelContext.loading.value = true;\n\n const ignored = this._handleStreamFailure()\n .catch(e => {\n this._logger.error(\n '[%s] Failed handling stream failure after peer connection stopped with state [%s]',\n this._channelContext.streamId,\n peerConnection.iceConnectionState,\n e\n );\n });\n };\n\n switch (peerConnection.iceConnectionState) {\n case 'checking':\n case 'completed':\n case 'connected':\n case 'new':\n return;\n\n case 'disconnected':\n case 'failed':\n if (navigator.onLine) {\n this._logger.info('[%s] ICE connection state changed to [%s], trying to reconnect', this._channelContext.streamId, peerConnection.iceConnectionState);\n this.reconnectPeerConnection(peerConnection, retryCallback);\n }\n\n return;\n case 'closed':\n this._logger.info('[%s] ICE connection state changed to [%s], retrying to connect', this._channelContext.streamId, peerConnection.iceConnectionState);\n retryCallback();\n\n return;\n default:\n assertUnreachable(peerConnection.iceConnectionState);\n }\n };\n\n const mediaStreamPromise = new Promise<MediaStream>((resolve, reject) => {\n if (!FeatureEnablement.onTrackDisabled) {\n const timeoutId = setTimeout(() => reject(new Error('Stream setup timed out')), defaultStreamSetupTimeout);\n\n peerConnection.ontrack = (e): void => {\n clearTimeout(timeoutId);\n\n resolve(e.streams[0]);\n };\n\n return;\n }\n\n const trackListener = (e): void => {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n clearTimeout(timeoutId);\n peerConnection.removeEventListener('track', trackListener);\n peerConnection.removeEventListener('addstream', trackListener);\n\n if (e.streams) {\n resolve(e.streams[0]);\n } else {\n resolve(e.stream);\n }\n };\n\n const timeoutId = setTimeout(() => {\n peerConnection.removeEventListener('track', trackListener);\n peerConnection.removeEventListener('addstream', trackListener);\n reject(new Error('Stream setup timed out'));\n }, defaultStreamSetupTimeout);\n\n peerConnection.addEventListener('track', trackListener);\n peerConnection.addEventListener('addstream', trackListener);\n\n return;\n });\n\n return new Promise(resolve => {\n resolve();\n }).then(() => {\n if (!setRemoteDescriptionResponse) {\n return;\n }\n\n this._logger.info('[%s] Set local SDP offer [%s]', this._channelContext.streamId, setRemoteDescriptionResponse.sessionDescription.sdp);\n\n return peerConnection.setLocalDescription(setRemoteDescriptionResponse.sessionDescription);\n }).then(() => {\n if (!createAnswerDescriptionResponse) {\n return;\n }\n\n this._logger.info('[%s] Set remote SDP answer [%s]', this._channelContext.streamId, createAnswerDescriptionResponse.sessionDescription.sdp);\n\n return peerConnection.setRemoteDescription(createAnswerDescriptionResponse.sessionDescription);\n }).then(() => {\n if (!createOfferDescriptionResponse) {\n return;\n }\n\n this._logger.info('[%s] Set remote SDP offer [%s]', this._channelContext.streamId, createOfferDescriptionResponse.sessionDescription.sdp);\n\n return peerConnection.setRemoteDescription(createOfferDescriptionResponse.sessionDescription)\n .then(() => {\n return peerConnection.createAnswer({\n offerToReceiveAudio: true,\n offerToReceiveVideo: true\n });\n }).then(answer => {\n this._logger.info('[%s] Set local SDP answer [%j]', this._channelContext.streamId, answer);\n\n return this._channelContext.endPoint.value.setRemoteDescription(stream, answer);\n }).then(({status, sessionDescription}) => {\n this._channelContext.state.value = this.mapSetRemoteDescriptionStatusToChannelStatus(status);\n\n if (status !== 'ok') {\n this._channelContext.playing.value = false;\n this._channelContext.standby.value = true;\n this._channelContext.stopped.value = false;\n\n return;\n }\n\n return peerConnection.setLocalDescription(sessionDescription);\n });\n }).then(() => {\n listenOnStreamSetup.success(this._channelContext.streamId);\n\n return mediaStreamPromise;\n }).then(mediaStream => {\n this._channelContext.mediaStream.value = mediaStream;\n\n const rtcConnectionMonitor = new RtcConnectionMonitor(peerConnection, mediaStream, this._channelContext.endPoint.value.roundTripTime / 4);\n\n this._channelContext.disposables.add(rtcConnectionMonitor);\n\n const ignored = rtcConnectionMonitor.rtcStatistic.subscribe(statistics => {\n this._channelContext.rtcStatistics.value = statistics;\n\n if (!this._channelContext.rtcVideoStatistic && !this._channelContext.rtcAudioStatistic) {\n this._channelContext.rtcAudioStatistic = statistics.audio;\n this._channelContext.rtcVideoStatistic = statistics.video;\n\n return;\n }\n\n let audioTrackFailed = false;\n let videoTrackFailed = false;\n\n if (statistics.audio) {\n if (this._channelContext.rtcAudioStatistic && this._channelContext.rtcAudioStatistic.timestamp !== statistics.audio.timestamp) {\n audioTrackFailed = this._channelContext.rtcAudioStatistic && this._channelContext.rtcAudioStatistic.bytesReceived === statistics.audio.bytesReceived;\n\n if (audioTrackFailed && navigator.onLine) {\n this._logger.info(\n '[%s] Audio track failed with last bytesReceived [%s] is equal to previous bytesReceived [%s] within [%s]',\n this._channelContext.streamId,\n statistics.audio.bytesReceived,\n this._channelContext.rtcAudioStatistic.bytesReceived,\n new Durations(statistics.audio.timestamp - this._channelContext.rtcAudioStatistic.timestamp).toIsoString()\n );\n }\n\n this._channelContext.rtcAudioStatistic = statistics.audio;\n }\n }\n\n if (statistics.video) {\n if (this._channelContext.rtcVideoStatistic && this._channelContext.rtcVideoStatistic.timestamp !== statistics.video.timestamp) {\n videoTrackFailed = this._channelContext.rtcVideoStatistic && this._channelContext.rtcVideoStatistic.bytesReceived === statistics.video.bytesReceived;\n\n if (videoTrackFailed && navigator.onLine) {\n this._logger.info(\n '[%s] Video track failed with last bytesReceived [%s] is equal to previous bytesReceived [%s] within [%s]',\n this._channelContext.streamId,\n statistics.video.bytesReceived,\n this._channelContext.rtcVideoStatistic.bytesReceived,\n new Durations(statistics.video.timestamp - this._channelContext.rtcVideoStatistic.timestamp).toIsoString()\n );\n }\n\n this._channelContext.rtcVideoStatistic = statistics.video;\n }\n }\n\n if ((videoTrackFailed || audioTrackFailed) && navigator.onLine) {\n const retryCallback = (): void => {\n this._channelContext.state.value = ChannelState.Error;\n\n if (this._channelContext.videoElement.value) {\n this._channelContext.videoElement.value.pause();\n this._channelContext.videoElement.value.srcObject = null;\n }\n\n this._channelContext.playing.value = false;\n this._channelContext.loading.value = true;\n\n rtcConnectionMonitor.dispose();\n\n const ignored = this._handleStreamFailure()\n .catch(e => {\n this._logger.error(\n '[%s] Failed handling stream failure after track stopped with state [%s]',\n this._channelContext.streamId,\n peerConnection.iceConnectionState,\n e\n );\n });\n };\n\n this.reconnectPeerConnection(peerConnection, retryCallback);\n } else {\n this._channelContext.peerConnectionReconnectAttempts = 0;\n }\n });\n\n if (!SDK.automaticallyPlayMediaStream) {\n this._channelContext.autoMuted.value = false;\n this._channelContext.autoPaused.value = true;\n this._channelContext.loading.value = false;\n this._channelContext.playing.value = false;\n this._channelContext.state.value = ChannelState.Paused;\n\n return;\n }\n\n return playMediaStreamInVideoElement(mediaStream);\n });\n });\n });\n }\n\n private async applyRtcConfiguration(\n optionalPeerConnection: IPeerConnection | null,\n rtcConfiguration: RTCConfiguration): Promise<IPeerConnection> {\n if (!optionalPeerConnection) {\n rtcConfiguration = this.truncateIceServers(rtcConfiguration);\n\n return SDK.peerConnectionFactory.value.createPeerConnection(rtcConfiguration);\n }\n\n const newRtcConfiguration = {\n ...optionalPeerConnection.getConfiguration(),\n ...rtcConfiguration\n };\n\n optionalPeerConnection.setConfiguration(newRtcConfiguration);\n\n return optionalPeerConnection;\n }\n\n private truncateIceServers(configuration: RTCConfiguration): RTCConfiguration {\n const iceServers: RTCIceServer[] = [];\n\n for (let i = 0; i < configuration.iceServers.length; i++) {\n const urls: string[] = [];\n\n for (let index = 0; index < 2; index++) {\n const url = configuration.iceServers[i].urls[index];\n\n if (url) {\n urls.push(configuration.iceServers[i].urls[index]);\n }\n }\n\n iceServers.push({\n urls: urls,\n username: configuration.iceServers[i].username,\n credential: configuration.iceServers[i].credential\n });\n }\n\n configuration.iceServers = iceServers;\n\n return configuration;\n }\n\n private reconnectPeerConnection(peerConnection: IPeerConnection, retryCallback: () => void): void {\n if (peerConnection.iceConnectionState === 'closed') {\n return;\n }\n\n this._channelContext.state.value = ChannelState.Reconnecting;\n\n if (this._channelContext.peerConnectionReconnectAttempts < SDK.maximalNumberOfPeerConnectionReconnectAttempts || !SDK.automaticallyReconnectPeerConnection) {\n this._channelContext.peerConnectionReconnectAttempts++;\n\n if (FeatureEnablement.clientOfferDisabled ||\n !peerConnection.supportsSetConfiguration ||\n !peerConnection.supportsGetConfiguration ||\n this._channelContext.failureCount.value\n ) {\n return;\n }\n\n this._logger.info('Reconnecting peer connection by restarting ICE');\n\n const localOffer = peerConnection.currentLocalDescription;\n const ignored = peerConnection.createOffer({iceRestart: true}).then(offer => {\n return peerConnection.setLocalDescription(offer).then(() => {\n return peerConnection.setLocalDescription(localOffer);\n });\n })\n .catch(e => {\n this._logger.error('Failed to reconnect peer connection', e);\n this._channelContext.peerConnectionReconnectAttempts = 0;\n retryCallback();\n });\n\n return;\n }\n\n this._logger.info('Failed to reconnect peer connection after [%s] attempts, performing full recovery', this._channelContext.peerConnectionReconnectAttempts);\n this._channelContext.peerConnectionReconnectAttempts = 0;\n retryCallback();\n }\n\n private mapSetRemoteDescriptionStatusToChannelStatus(status: SetRemoteDescriptionStatus): ChannelState {\n switch (status) {\n case 'ok':\n return ChannelState.Starting;\n case 'unauthorized':\n return ChannelState.Unauthorized;\n case 'not-found':\n case 'capacity':\n case 'rate-limited':\n case 'timeout':\n return ChannelState.Recovering;\n case 'failed':\n return ChannelState.Error;\n default:\n assertUnreachable(status);\n }\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport {IStream} from './IStream';\nimport EdgeAuth from '../edgeAuth/EdgeAuth';\nimport RtmpStream from './RtmpStream';\nimport ChunkedStream from './ChunkedStream';\nimport RealTimeStream from './RealTimeStream';\nimport FeatureEnablement from '../feature/FeatureEnablement';\nimport {ILogger} from '../../logger/LoggerInterface';\nimport LoggerFactory from '../../logger/LoggerFactory';\nimport ChannelState from '../channels/ChannelState';\n\nexport default class LegacyStreamFactory {\n private static _logger: ILogger = LoggerFactory.getLogger('Streaming');\n\n static create(token: string, channelContext, handleStreamFailure: () => Promise<void>): IStream {\n const parsedToken = EdgeAuth.parseToken(token);\n const isRtmp = parsedToken && parsedToken.token && parsedToken.token.capabilities && parsedToken.token.capabilities.includes('rtmp');\n\n if (isRtmp) {\n if (FeatureEnablement.isRTMPEnabled) {\n return new RtmpStream(channelContext, handleStreamFailure);\n }\n\n channelContext.state.value = ChannelState.UnsupportedFeature;\n\n this._logger.error('RTMP playback is not enabled.');\n\n return;\n }\n\n const isStreaming = parsedToken && parsedToken.token && parsedToken.token.capabilities && parsedToken.token.capabilities.includes('streaming');\n\n if (isStreaming) {\n return new ChunkedStream(channelContext, handleStreamFailure);\n }\n\n return new RealTimeStream(channelContext, handleStreamFailure);\n }\n\n constructor() {\n throw new Error('LegacyStreamFactory is a static class that may not be instantiated');\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport LoggerFactory from '../../logger/LoggerFactory';\nimport IDisposable from '../../lang/IDisposable';\nimport ReadOnlySubject from '../../rx/ReadOnlySubject';\nimport Dimension from '../../video/Dimension';\nimport EndPoint, {IStream} from '../discovery/EndPoint';\nimport SDK from '../SDK';\nimport IPeerConnection from '../../rtc/IPeerConnection';\nimport ChannelState from './ChannelState';\nimport assertUnreachable from '../../lang/assertUnreachable';\nimport Disposable from '../../lang/Disposable';\nimport EdgeAuth from '../edgeAuth/EdgeAuth';\nimport {ILogger} from '../../logger/LoggerInterface';\nimport VideoTelemetry from '../../video/VideoTelemetry';\nimport SessionTelemetry from '../../video/SessionTelemetry';\nimport {IRtcMonitorStatistic} from '../../rtc/RtcConnectionMonitor';\nimport {BitrateMode, BitrateState} from '../api/SetTemporaryMaximalBitrate';\n\nimport {EdgeToken} from '../edgeAuth/EdgeToken';\nimport {BitsPerSecond, Millisecond} from '../../units/Units';\nimport ChannelContext from './ChannelContext';\nimport StreamFactory from '../streaming/StreamFactory';\nimport DiscoveryUri from '../discovery/DiscoveryUri';\nimport MetricsFactory from '../../metrics/MetricsFactory';\nimport MetricsService from '../../metrics/MetricsService';\n\nconst defaultTargetLag = 0;\nconst defaultStreamTerminationReason = 'client:termination';\nconst backoffIntervalInMilliseconds = 2000;\nconst failureCountCleanUpIntervalInMilliseconds = 3000;\nconst maxBackoffIntervalInMilliseconds = 300000;\nconst standbyPollingIntervalInMilliseconds = 15000;\n\nexport default class Channel implements IDisposable {\n private readonly _logger: ILogger = LoggerFactory.getLogger('Channel');\n private readonly _context: ChannelContext;\n private readonly _channelStartTime: number;\n private readonly _readOnlyVideoElement: ReadOnlySubject<HTMLVideoElement>;\n private readonly _readOnlyToken: ReadOnlySubject<EdgeToken>;\n private readonly _readOnlyPeerConnection: ReadOnlySubject<IPeerConnection>;\n private readonly _readOnlyState: ReadOnlySubject<ChannelState>;\n private readonly _readOnlyAutoMuted: ReadOnlySubject<boolean>;\n private readonly _readOnlyAutoPaused: ReadOnlySubject<boolean>;\n private readonly _readOnlyTokenExpiring: ReadOnlySubject<boolean>;\n private readonly _readOnlyAuthorized: ReadOnlySubject<boolean>;\n private readonly _readOnlyOnline: ReadOnlySubject<boolean>;\n private readonly _readOnlyLoading: ReadOnlySubject<boolean>;\n private readonly _readOnlyPlaying: ReadOnlySubject<boolean>;\n private readonly _readOnlyStandby: ReadOnlySubject<boolean>;\n private readonly _readOnlyStopped: ReadOnlySubject<boolean>;\n private readonly _readOnlyTargetLag: ReadOnlySubject<Millisecond>;\n private readonly _readOnlyLag: ReadOnlySubject<Millisecond>;\n private readonly _readOnlyBitrateLimit: ReadOnlySubject<BitsPerSecond>;\n private readonly _readOnlyResolution: ReadOnlySubject<Dimension>;\n private readonly _readOnlyFailureCount: ReadOnlySubject<number>;\n private readonly _readOnlyEndPoint: ReadOnlySubject<EndPoint>;\n private readonly _readOnlyStream: ReadOnlySubject<IStream>;\n private readonly _readOnlyRtcStatistics: ReadOnlySubject<IRtcMonitorStatistic>;\n private readonly _readOnlyMediaStream: ReadOnlySubject<MediaStream>;\n\n private _metricsService: MetricsService;\n private readonly _videoMetaDataChangedHandler: () => void;\n\n constructor(videoElement: HTMLVideoElement, token: string, targetLag: number = defaultTargetLag) {\n this._context = new ChannelContext(token, targetLag);\n this._channelStartTime = Date.now();\n this._readOnlyVideoElement = new ReadOnlySubject<HTMLVideoElement>(this._context.videoElement);\n this._readOnlyToken = new ReadOnlySubject<string>(this._context.token);\n this._readOnlyPeerConnection = new ReadOnlySubject<IPeerConnection>(this._context.peerConnection);\n this._readOnlyState = new ReadOnlySubject<ChannelState>(this._context.state);\n this._readOnlyAutoMuted = new ReadOnlySubject<boolean>(this._context.autoMuted);\n this._readOnlyAutoPaused = new ReadOnlySubject<boolean>(this._context.autoPaused);\n this._readOnlyTokenExpiring = new ReadOnlySubject<boolean>(this._context.tokenExpiring);\n this._readOnlyAuthorized = new ReadOnlySubject<boolean>(this._context.authorized);\n this._readOnlyOnline = new ReadOnlySubject<boolean>(this._context.online);\n this._readOnlyLoading = new ReadOnlySubject<boolean>(this._context.loading);\n this._readOnlyPlaying = new ReadOnlySubject<boolean>(this._context.playing);\n this._readOnlyStandby = new ReadOnlySubject<boolean>(this._context.standby);\n this._readOnlyStopped = new ReadOnlySubject<boolean>(this._context.stopped);\n this._readOnlyTargetLag = new ReadOnlySubject<number>(this._context.targetLag);\n this._readOnlyLag = new ReadOnlySubject<number>(this._context.lag);\n this._readOnlyBitrateLimit = new ReadOnlySubject<number>(this._context.bitrateLimit);\n this._readOnlyResolution = new ReadOnlySubject<Dimension>(this._context.resolution);\n this._readOnlyFailureCount = new ReadOnlySubject<number>(this._context.failureCount);\n this._readOnlyEndPoint = new ReadOnlySubject<EndPoint>(this._context.endPoint);\n this._readOnlyStream = new ReadOnlySubject<IStream>(this._context.stream);\n this._readOnlyRtcStatistics = new ReadOnlySubject<IRtcMonitorStatistic>(this._context.rtcStatistics);\n this._readOnlyMediaStream = new ReadOnlySubject<MediaStream>(this._context.mediaStream);\n\n const parsedToken = EdgeAuth.parseToken(this._context.token.value);\n const discoveryUri = (EdgeAuth.getUri(parsedToken) || SDK.discoveryUri.value).toString();\n\n SDK.tenancy.value = EdgeAuth.getTenancy(parsedToken) || SDK.tenancy.value;\n DiscoveryUri.uri.value = discoveryUri;\n this._metricsService = MetricsFactory.getMetricsService(discoveryUri);\n this._context.sessionTelemetry = new SessionTelemetry(SDK.pageLoadTime, this._metricsService);\n this._context.channelDisposables.add(this._context.sessionTelemetry);\n this._videoMetaDataChangedHandler = this.handleVideoMetaDataChanged.bind(this);\n this.videoElement = videoElement;\n\n this._context.channelDisposables.add(\n this._context.videoElement.subscribe(videoElement => {\n this._context.rendererDisposables.dispose();\n\n if (!videoElement) {\n return;\n }\n\n this._context.rendererDisposables.add(this._context.stream.subscribe(stream => {\n if (this._context.videoTelemetry) {\n this._context.videoTelemetry.dispose();\n }\n\n if (!stream) {\n return;\n }\n\n if (!this.videoElement) {\n return;\n }\n\n if (this.videoElement.dataset) {\n this.videoElement.dataset.sessionId = SDK.clientSessionId;\n this.videoElement.dataset.streamId = this.streamId;\n }\n\n this._context.videoTelemetry = new VideoTelemetry(this.streamId, SDK.pageLoadTime, this._channelStartTime, this._metricsService);\n this._context.videoTelemetry.setupListenerForTimeToFirstTime(this.videoElement);\n this._context.videoTelemetry.setupListenerForRebuffering(this.videoElement);\n\n if (this._context.state.value === ChannelState.Stopped) {\n const ignored = this.restartAfterStop();\n }\n }));\n\n this._context.channelDisposables.add(this._context.rendererDisposables);\n }));\n this._context.channelDisposables.add(\n this._context.state.subscribe(state => {\n if (this._context.clearFailureCountTimeout) {\n clearTimeout(this._context.clearFailureCountTimeout);\n }\n\n if (!this._context.failureCount.value) {\n return;\n }\n\n if (state !== ChannelState.Playing) {\n return;\n }\n\n this._context.clearFailureCountTimeout = window.setTimeout(() => {\n this._context.failureCount.value = 0;\n }, failureCountCleanUpIntervalInMilliseconds);\n }));\n this._context.channelDisposables.add(\n this._context.resolution.subscribe(resolution => {\n if (this._context.videoTelemetry) {\n this._context.videoTelemetry.onVideoResolutionChanges(resolution.toString());\n }\n }));\n this._context.channelDisposables.add(\n this._context.bitrateLimit.subscribe(bitrateLimit => {\n if (bitrateLimit && this._context.endPoint.value && this._context.stream.value) {\n const elapsedInMilliseconds = Date.now() - this._context.channelInitialization.getTime();\n const ignored = this._context.endPoint.value.limitBitrate(\n this._context.stream.value,\n elapsedInMilliseconds,\n bitrateLimit,\n BitrateState.Keep,\n BitrateMode.Normal\n )\n .catch(e => {\n this._logger.error('Error while setting limit bitrate', e);\n });\n }\n })\n );\n\n this.start();\n }\n\n get videoElement(): HTMLVideoElement {\n return this._context.videoElement.value;\n }\n\n set videoElement(videoElement: HTMLVideoElement) {\n if (this._context.videoElement.value) {\n this._context.videoElement.value.removeEventListener('loadeddata', this._videoMetaDataChangedHandler);\n this._context.videoElement.value.removeEventListener('loadedmetadata', this._videoMetaDataChangedHandler);\n this._context.videoElement.value.removeEventListener('resize', this._videoMetaDataChangedHandler);\n\n if (this._context.videoElement.value.dataset) {\n this._context.videoElement.value.dataset.sessionId = '';\n this._context.videoElement.value.dataset.streamId = '';\n }\n\n this._context.rendererDisposables.dispose();\n\n this._context.videoElement.value.pause();\n this._context.videoElement.value.srcObject = null;\n }\n\n this._context.autoMuted.value = false;\n this._context.autoPaused.value = false;\n this._context.loading.value = false;\n this._context.playing.value = false;\n this._context.state.value = ChannelState.Stopped;\n\n this._context.videoElement.value = videoElement;\n\n if (this._context.videoElement.value) {\n this._context.videoElement.value.addEventListener('loadeddata', this._videoMetaDataChangedHandler);\n this._context.videoElement.value.addEventListener('loadedmetadata', this._videoMetaDataChangedHandler);\n this._context.videoElement.value.addEventListener('resize', this._videoMetaDataChangedHandler);\n }\n }\n\n private handleVideoMetaDataChanged(): void {\n const videoElement = this._context.videoElement.value;\n\n if (videoElement) {\n if (this.resolution.value.width !== videoElement.videoWidth || this.resolution.value.height !== videoElement.videoHeight) {\n this._context.resolution.value = new Dimension(videoElement.videoWidth, videoElement.videoHeight);\n }\n } else {\n this._context.resolution.value = Dimension.empty;\n }\n }\n\n get token(): EdgeToken {\n return this._context.token.value;\n }\n\n set token(token: EdgeToken) {\n this._context.disposables.dispose();\n\n this._context.token.value = token;\n this._context.tokenExpiring.value = false;\n\n const parsedToken = EdgeAuth.parseToken(this._context.token.value);\n const discoveryUri = (EdgeAuth.getUri(parsedToken) || SDK.discoveryUri.value).toString();\n\n SDK.tenancy.value = EdgeAuth.getTenancy(parsedToken) || SDK.tenancy.value;\n DiscoveryUri.uri.value = discoveryUri;\n\n this._metricsService = MetricsFactory.getMetricsService(discoveryUri);\n\n this.start();\n }\n\n get peerConnection(): ReadOnlySubject<IPeerConnection> {\n return this._readOnlyPeerConnection;\n }\n\n get state(): ReadOnlySubject<ChannelState> {\n return this._readOnlyState;\n }\n\n get autoMuted(): ReadOnlySubject<boolean> {\n return this._readOnlyAutoMuted;\n }\n\n get autoPaused(): ReadOnlySubject<boolean> {\n return this._readOnlyAutoPaused;\n }\n\n get tokenExpiring(): ReadOnlySubject<boolean> {\n return this._readOnlyTokenExpiring;\n }\n\n get authorized(): ReadOnlySubject<boolean> {\n return this._readOnlyAuthorized;\n }\n\n get online(): ReadOnlySubject<boolean> {\n return this._readOnlyOnline;\n }\n\n get loading(): ReadOnlySubject<boolean> {\n return this._readOnlyLoading;\n }\n\n get playing(): ReadOnlySubject<boolean> {\n return this._readOnlyPlaying;\n }\n\n get standby(): ReadOnlySubject<boolean> {\n return this._readOnlyStandby;\n }\n\n get stopped(): ReadOnlySubject<boolean> {\n return this._readOnlyStopped;\n }\n\n get targetLag(): ReadOnlySubject<Millisecond> {\n return this._readOnlyTargetLag;\n }\n\n get lag(): ReadOnlySubject<Millisecond> {\n return this._readOnlyLag;\n }\n\n get bitrateLimit(): number {\n return this._readOnlyBitrateLimit.value;\n }\n\n get resolution(): ReadOnlySubject<Dimension> {\n return this._readOnlyResolution;\n }\n\n get failureCount(): ReadOnlySubject<number> {\n return this._readOnlyFailureCount;\n }\n\n get endPoint(): ReadOnlySubject<EndPoint> {\n return this._readOnlyEndPoint;\n }\n\n get stream(): ReadOnlySubject<IStream> {\n return this._readOnlyStream;\n }\n\n get streamId(): string {\n return this._context.streamId;\n }\n\n get rtcStats(): ReadOnlySubject<IRtcMonitorStatistic> {\n return this._readOnlyRtcStatistics;\n }\n\n get mediaStream(): ReadOnlySubject<MediaStream> {\n return this._readOnlyMediaStream;\n }\n\n setBitrateLimit(bitrateLimit: BitsPerSecond): void {\n this._context.bitrateLimit.value = bitrateLimit;\n }\n\n clearBitrateLimit(): void {\n if (this._context.bitrateLimit.value && this._context.endPoint.value && this._context.stream.value) {\n const elapsedInMilliseconds = Date.now() - this._context.channelInitialization.getTime();\n const bitrateInBitsPerSecond = 0;\n const ignored = this._context.endPoint.value.limitBitrate(\n this._context.stream.value,\n elapsedInMilliseconds,\n bitrateInBitsPerSecond,\n BitrateState.Keep,\n BitrateMode.Reset\n )\n .then(({status}) => {\n if (status === 'ok') {\n this._context.bitrateLimit.value = 0;\n }\n })\n .catch(e => {\n this._logger.error('Error while setting limit bitrate', e);\n });\n }\n }\n\n updateTargetLag(lag: Millisecond): void {\n this._context.targetLag.value = lag;\n }\n\n stop(reason: string): void {\n if (this._context.videoElement.value) {\n this._context.videoElement.value.pause();\n this._context.videoElement.value.srcObject = null;\n }\n\n this._context.rendererDisposables.dispose();\n\n this.cleanUpResources(reason);\n\n this._context.state.value = ChannelState.Stopped;\n }\n\n async resume(): Promise<void> {\n if (this._context.mediaStream.value) {\n this._context.autoPaused.value = false;\n\n return this.playMediaStreamInVideoElement(this._context.mediaStream.value);\n }\n }\n\n mute(): void {\n const videoElement = this._context.videoElement.value;\n\n if (videoElement) {\n videoElement.muted = true;\n }\n }\n\n unmute(): void {\n const videoElement = this._context.videoElement.value;\n\n if (videoElement) {\n videoElement.muted = false;\n this._context.autoMuted.value = false;\n }\n }\n\n dispose(): void {\n this.stop('client:channel-dispose');\n this._context.channelDisposables.dispose();\n this._context.isDisposed = true;\n }\n\n getUri(token): URL {\n const parsedToken = EdgeAuth.parseToken(token);\n const url = EdgeAuth.getUri(parsedToken);\n\n if (url) {\n return url;\n }\n\n this._logger.info('Fall back to the default discover URI [%s]', SDK.discoveryUri.value);\n\n return new URL(SDK.discoveryUri.value);\n }\n\n async start(): Promise<void> {\n if (this._context.isDisposed) {\n throw new Error('Channel was already disposed');\n }\n\n const token = this._context.token.value;\n const listenOnStreamSetup = this._context.sessionTelemetry.listenOnStreamSetup();\n\n if (!EdgeAuth.isValidToken(token)) {\n this._logger.error('Failed to parse token [%s]', token);\n this._context.state.value = ChannelState.Unauthorized;\n this._context.authorized.value = false;\n\n return;\n }\n\n this.cleanUpResources('client:start');\n this._context.state.value = ChannelState.Starting;\n this._context.loading.value = true;\n\n const uri = this.getUri(token);\n const streamPlayer = StreamFactory.create(token, this._context, this.handleStreamFailure.bind(this));\n\n if (!streamPlayer) {\n return;\n }\n\n return streamPlayer.start(\n uri,\n token,\n listenOnStreamSetup,\n this.playMediaStreamInVideoElement.bind(this))\n .then(() => {\n this._context.loading.value = false;\n })\n .then(() => {\n this._context.loading.value = false;\n })\n .catch(e => {\n listenOnStreamSetup.fail();\n\n this._context.failureCount.value++;\n\n this._context.online.value = false;\n\n this.cleanUpResources('client:cleanup-after-failed-setup');\n\n this._context.state.value = ChannelState.Error;\n\n this._logger.error('Failed to discover end point, marking as offline', e);\n })\n .finally(() => {\n if (this._context.state.value === ChannelState.Playing || !SDK.automaticRetryOnFailure) {\n return;\n }\n\n const timeoutId = setTimeout(() => {\n const ignored = this.handleStreamFailure()\n .catch(e => {\n this._logger.error('Failed handling stream failure', e);\n });\n }, this.getRetryInterval());\n\n this._context.disposables.add(new Disposable(() => {\n clearTimeout(timeoutId);\n }));\n });\n }\n\n private async restartAfterStop(): Promise<void> {\n if (this._context.isDisposed) {\n throw new Error('Channel was already disposed');\n }\n\n if (this._context.mediaStream.value) {\n return this.playMediaStreamInVideoElement(this._context.mediaStream.value);\n }\n\n if (this._context.token.value) {\n const ignored = this.start();\n }\n }\n\n public async play(): Promise<void> {\n const mediaStream = this._context.mediaStream.value;\n\n if (!mediaStream) {\n return this.start();\n }\n\n return this.playMediaStreamInVideoElement(mediaStream);\n }\n\n private getRetryInterval(): number {\n switch (this._context.state.value) {\n case ChannelState.StandBy:\n case ChannelState.Offline:\n return standbyPollingIntervalInMilliseconds;\n case ChannelState.Error:\n case ChannelState.Recovering:\n case ChannelState.Unauthorized:\n case ChannelState.GeoRestricted:\n case ChannelState.GeoBlocked:\n case ChannelState.Stopped:\n case ChannelState.Starting:\n case ChannelState.Playing:\n case ChannelState.Paused:\n case ChannelState.Reconnecting:\n case ChannelState.UnsupportedFeature:\n // First and second attempt fast, after that exponential with backoff interval\n return Math.min(maxBackoffIntervalInMilliseconds, Math.pow(backoffIntervalInMilliseconds, Math.max(0, this._context.failureCount.value - 1)));\n default:\n assertUnreachable(this._context.state.value);\n }\n }\n\n private async handleStreamFailure(): Promise<void> {\n switch (this._context.state.value) {\n case ChannelState.Error:\n case ChannelState.Reconnecting:\n case ChannelState.StandBy:\n case ChannelState.Offline:\n case ChannelState.Recovering:\n this._logger.info('Retry start with initial state [%s] [%s]', this._context.state.value, ChannelState[this._context.state.value]);\n\n break;\n case ChannelState.Unauthorized:\n this._logger.info('Channel is unauthorized, skipping retry of start. Please provide a new token and invoke start()');\n\n return;\n case ChannelState.GeoRestricted:\n this._logger.info('Channel is geo restricted, skipping retry of start. Please provide a new token and invoke start()');\n\n return;\n case ChannelState.GeoBlocked:\n this._logger.info('Channel is geo blocked, skipping retry of start. Please provide a new token and invoke start()');\n\n return;\n case ChannelState.Stopped:\n this._logger.info('Channel is stopped, skipping retry of start.');\n\n return;\n case ChannelState.Playing:\n this._logger.info('Channel is playing, skipping retry of start');\n\n return;\n case ChannelState.Paused:\n this._logger.info('Channel is paused, skipping retry of start. Please invoke play()');\n\n return;\n case ChannelState.Starting:\n this._logger.info('Channel is already starting, skipping retry of start');\n\n return;\n case ChannelState.UnsupportedFeature:\n this._logger.info('Channel is stopped due to unsupported feature, skipping retry of start.');\n\n return;\n default:\n assertUnreachable(this._context.state.value);\n }\n\n return this.start();\n }\n\n private cleanUpResources(reason: string = defaultStreamTerminationReason): void {\n this._context.disposables.dispose();\n\n const peerConnection = this._context.peerConnection.value;\n\n if (peerConnection) {\n this._context.peerConnection.value = null;\n peerConnection.close();\n }\n\n if (this._context.mediaStream.value) {\n this._context.mediaStream.value.getTracks().forEach(track => track.stop());\n this._context.mediaStream.value = null;\n }\n\n this._context.autoPaused.value = false;\n this._context.autoMuted.value = false;\n this._context.playing.value = false;\n this._context.stopped.value = true;\n this._context.standby.value = false;\n\n if (this._context.stream.value && this._context.endPoint.value) {\n const ignored = this._context.endPoint.value.destroyStream(this._context.stream.value, reason)\n .then(({status}) => {\n if (status !== 'ok') {\n this._logger.warn('[%s] Failed to destroy stream with reason [%s]', this.streamId, status);\n\n return;\n }\n\n this._logger.info('[%s] Destroyed stream with reason [%s]', this.streamId, status);\n })\n .catch(e => {\n this._logger.error('[%s] Failed to destroy stream', this.streamId, e);\n });\n }\n\n if (this.videoElement && this.videoElement.dataset) {\n this.videoElement.dataset.sessionId = '';\n this.videoElement.dataset.streamId = '';\n }\n\n this._context.stream.value = null;\n this._context.endPoint.value = null;\n }\n\n private async playMediaStreamInVideoElement(mediaStream: MediaStream): Promise<void> {\n const videoElement = this._context.videoElement.value;\n\n if (!videoElement) {\n this._context.autoMuted.value = false;\n this._context.autoPaused.value = false;\n this._context.loading.value = false;\n this._context.playing.value = false;\n this._context.state.value = ChannelState.Stopped;\n\n return;\n }\n\n videoElement.srcObject = mediaStream;\n\n const playPromise = videoElement.play();\n\n if (playPromise === undefined) {\n this._context.autoMuted.value = false;\n this._context.autoPaused.value = false;\n this._context.loading.value = false;\n this._context.playing.value = true;\n this._context.state.value = ChannelState.Playing;\n\n return;\n }\n\n return playPromise.then(() => {\n this._context.autoMuted.value = false;\n this._context.autoPaused.value = false;\n this._context.loading.value = false;\n this._context.playing.value = true;\n this._context.state.value = ChannelState.Playing;\n }).catch(e => {\n const hasAudioTrack = !!mediaStream.getTracks().filter(track => {\n return track.kind === 'audio';\n });\n const automaticallyMuteVideoOnPlayFailureOff = !SDK.automaticallyMuteVideoOnPlayFailure;\n\n if (automaticallyMuteVideoOnPlayFailureOff || videoElement.muted || !hasAudioTrack) {\n this._context.autoMuted.value = false;\n this._context.autoPaused.value = true;\n this._context.loading.value = false;\n this._context.playing.value = false;\n this._context.state.value = ChannelState.Paused;\n\n if (automaticallyMuteVideoOnPlayFailureOff) {\n this._logger.info('[%s] Paused video after play failed. Manual user action required.', this.streamId, e);\n videoElement.srcObject = null;\n\n return;\n }\n\n if (hasAudioTrack) {\n this._logger.info('[%s] Failed to play video. Manual user action required.', this.streamId, e);\n\n return;\n }\n\n this._logger.info('[%s] Failed to play muted video. Manual user action required.', this.streamId, e);\n\n return;\n }\n\n videoElement.muted = true;\n\n return videoElement.play()\n .then(() => {\n this._logger.info('[%s] Played video after auto muting. Manual user action required to unmute.', this.streamId);\n\n this._context.autoMuted.value = true;\n this._context.autoPaused.value = false;\n this._context.loading.value = false;\n this._context.playing.value = true;\n this._context.state.value = ChannelState.Playing;\n }).catch(e => {\n videoElement.muted = false;\n\n this._logger.info('[%s] Failed to play video. Manual user action required.', this.streamId, e);\n\n this._context.autoMuted.value = false;\n this._context.autoPaused.value = true;\n this._context.loading.value = false;\n this._context.playing.value = false;\n this._context.state.value = ChannelState.Playing;\n });\n });\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nimport Channel from './Channel';\nimport SDK from '../SDK';\nimport {EdgeToken} from '../edgeAuth/EdgeToken';\nimport {Millisecond} from '../../units/Units';\n\ntype CreateChannelOptions = {\n videoElement: HTMLVideoElement;\n token: EdgeToken;\n targetLag?: Millisecond;\n}\n\nexport default class Channels {\n static createChannel(options: CreateChannelOptions): Channel {\n if (!SDK.initialized.value) {\n throw new Error('SDK is not loaded.');\n }\n\n return new Channel(options.videoElement, options.token, options.targetLag);\n }\n\n private constructor() {\n throw new Error('Channels is a static class that may not be instantiated');\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nimport SDK from '../SDK';\nimport Channels from './Channels';\nimport ChannelState from './ChannelState';\n\nexport {\n SDK,\n Channels,\n ChannelState\n};\n\nexport default {\n SDK,\n Channels,\n ChannelState\n};","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nconst defaultDiscoveryUri = 'https://pcast.phenixrts.com/pcast/endPoints';\n\nexport {defaultDiscoveryUri};","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nimport {defaultDiscoveryUri} from '../defaults';\nimport Subject from '../../rx/Subject';\nimport VersionManager from '../version/VersionManager';\n\nexport default class DiscoveryUri {\n private static readonly _discoveryUri: Subject<string> = new Subject<string>(defaultDiscoveryUri);\n\n static get uri(): Subject<string> {\n return DiscoveryUri._discoveryUri;\n }\n\n static buildDiscoveryUrl(uri: URL): string {\n const url = new URL(uri.toString());\n const sdkVersion = VersionManager.sdkVersion;\n\n url.search = `?${new URLSearchParams([['version', sdkVersion], ['_', `${Date.now()}`]]).toString()}`;\n\n if (url.pathname === '/') {\n url.pathname = '/pcast/endPoints';\n }\n\n return url.toString();\n }\n\n private constructor() {\n throw new Error('DiscoveryUri is a static class that may not be instantiated');\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport LoggerFactory from '../../logger/LoggerFactory';\nimport {IEdgeAuth} from './EdgeAuthToken';\nimport {ILogger} from '../../logger/LoggerInterface';\nimport {EdgeToken} from './EdgeToken';\n\nconst edgeAuthTokenPrefix = 'DIGEST:';\n\nexport default class EdgeAuth {\n private static _logger: ILogger = LoggerFactory.getLogger('EdgeAuth');\n\n static parseToken(token: EdgeToken): IEdgeAuth {\n if (!this.isValidToken(token)) {\n EdgeAuth._logger.error('Token is not valid [%s]', token);\n\n return undefined;\n }\n\n try {\n const encodedEdgeAuthToken = atob(token.substr(edgeAuthTokenPrefix.length));\n const edgeAuthToken = JSON.parse(encodedEdgeAuthToken);\n\n edgeAuthToken.token = JSON.parse(edgeAuthToken.token);\n\n return edgeAuthToken;\n } catch (e) {\n EdgeAuth._logger.error('Cannot parse token value', e);\n\n return undefined;\n }\n }\n\n static getUri(parsedToken: IEdgeAuth): URL {\n return parsedToken && parsedToken.token && parsedToken.token.uri ?\n new URL(parsedToken.token.uri) : null;\n }\n\n static getTenancy(parsedToken: IEdgeAuth): string {\n return parsedToken && parsedToken.applicationId ?\n parsedToken.applicationId : '';\n }\n\n static isValidToken(token: EdgeToken): boolean {\n return !!token && token.startsWith(edgeAuthTokenPrefix);\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport BrowserDetector from '../../dom/BrowserDetector';\n\nexport default class FeatureEnablement {\n static get clientOfferDisabled(): boolean {\n // Client offer workflow does not work correctly in the following browsers\n return BrowserDetector.isChrome74 ||\n BrowserDetector.isChrome75 ||\n BrowserDetector.isChrome76 ||\n BrowserDetector.isChrome77;\n }\n\n static get addTranceiverDisabled(): boolean {\n // Chrome 69, 70, 71, 72 exposes `addTranceiver` but it does not work correctly\n return BrowserDetector.isChrome69 ||\n BrowserDetector.isChrome70 ||\n BrowserDetector.isChrome71 ||\n BrowserDetector.isChrome72;\n }\n\n static get getStatsPromiseBasedDisabled(): boolean {\n return BrowserDetector.browserName === 'Chrome' && BrowserDetector.browserMajorVersion <= 66;\n }\n\n static get getCurrentOfferDisabled(): boolean {\n return BrowserDetector.browserName === 'Chrome' && BrowserDetector.browserMajorVersion <= 69 ||\n BrowserDetector.browserName === 'Firefox' && BrowserDetector.browserMajorVersion <= 56;\n }\n\n static get onTrackDisabled(): boolean {\n return BrowserDetector.browserName === 'Chrome' && BrowserDetector.browserMajorVersion <= 63 ||\n BrowserDetector.browserName === 'Firefox' && BrowserDetector.browserMajorVersion <= 52;\n }\n\n static get webkitRTCPeerConnectionEnabled(): boolean {\n return BrowserDetector.browserName === 'Chrome' && BrowserDetector.browserMajorVersion <= 55;\n }\n\n static get promiseBasedPCMethodsDisabled(): boolean {\n return BrowserDetector.browserName === 'Firefox' && BrowserDetector.browserMajorVersion <= 52;\n }\n\n static get shouldUseNativeHls(): boolean {\n return BrowserDetector.browserName === 'Safari' ||\n BrowserDetector.browserName === 'SamsungBrowser';\n }\n\n static get isRTMPEnabled(): boolean {\n return (BrowserDetector.browserName === 'Firefox' && BrowserDetector.browserMajorVersion < 84) ||\n (BrowserDetector.browserName === 'Chrome' && BrowserDetector.browserMajorVersion < 70) ||\n BrowserDetector.browserName === 'Edge' ||\n BrowserDetector.browserName === 'IE';\n }\n\n static get isPrecachingEnabled(): boolean {\n return BrowserDetector.browserName !== 'IE';\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\ndeclare const __SDKVERSION__: string;\n\nexport default class VersionManager {\n private static _defaultVersion = new Date().toISOString();\n\n static get sdkVersion(): string {\n try {\n return __SDKVERSION__;\n } catch (e) {\n return this._defaultVersion;\n }\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport TelemetryService from './TelemetryService';\nimport TelemetryConfiguration from './TelemetryConfiguration';\nimport {IAppender} from '../logger/IAppender';\nimport {LoggingLevel} from '../logger/Logger';\n\nexport default class TelemetryAppender implements IAppender {\n private readonly _telemetryService: TelemetryService;\n private readonly _tenancy: string;\n private readonly _sessionId: string;\n private readonly _threshold: LoggingLevel;\n\n constructor(telemetryConfiguration: TelemetryConfiguration) {\n this._tenancy = telemetryConfiguration.tenancy;\n this._sessionId = telemetryConfiguration.sessionId;\n this._threshold = telemetryConfiguration.threshold;\n this._telemetryService = new TelemetryService(telemetryConfiguration);\n }\n\n log(logLevel: LoggingLevel, message: string, category: string, date: Date): void {\n if (logLevel < this._threshold) {\n return;\n }\n\n this._telemetryService.push(logLevel, message, category, date);\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport {LoggingLevel} from '../logger/Logger';\nimport LoggerDefaults from '../logger/LoggerDefaults';\n\nexport default class TelemetryConfiguration {\n private _url = 'https://telemetry.phenixrts.com/telemetry/logs';\n private _tenancy: string;\n private _sessionId: string;\n private _environment: string;\n private _threshold = LoggerDefaults.defaultTelemetryLoggingLevel;\n\n get url(): string {\n return this._url;\n }\n\n set url(url: string) {\n const telemetryUrl = new URL(url);\n\n telemetryUrl.pathname = telemetryUrl.pathname + '/logs';\n\n this._url = telemetryUrl.toString();\n }\n\n get environment(): string {\n return this._environment;\n }\n\n set environment(environment: string) {\n this._environment = environment;\n }\n\n get tenancy(): string {\n return this._tenancy;\n }\n\n set tenancy(tenancy: string) {\n this._tenancy = tenancy;\n }\n\n get sessionId(): string {\n return this._sessionId;\n }\n\n set sessionId(sessionId: string) {\n this._sessionId = sessionId;\n }\n\n get threshold(): LoggingLevel {\n return this._threshold;\n }\n\n set threshold(threshold: LoggingLevel) {\n this._threshold = threshold;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport {LoggingLevel} from '../logger/Logger';\nimport VersionManager from '../sdk/version/VersionManager';\nimport TelemetryConfiguration from './TelemetryConfiguration';\n\nconst requestSizeLimit = 8192;\n\ninterface ILogItem {\n timestamp: string;\n tenancy: string;\n level: string;\n category: string;\n message: string;\n sessionId: string;\n version: string;\n environment: string;\n fullQualifiedName: string;\n}\n\nexport default class TelemetryService {\n private readonly _telemetryConfiguration: TelemetryConfiguration;\n\n private _logs: Array<ILogItem> = [];\n private _isSending: boolean;\n private _domain = location.hostname;\n\n constructor(telemetryConfiguration: TelemetryConfiguration) {\n this._telemetryConfiguration = telemetryConfiguration;\n }\n\n push(logLevel: LoggingLevel, message: string, category: string, timestamp: Date): void {\n const logRecord = {\n timestamp: timestamp.toISOString(),\n tenancy: this._telemetryConfiguration.tenancy,\n level: LoggingLevel[logLevel],\n category,\n message,\n sessionId: this._telemetryConfiguration.sessionId,\n version: VersionManager.sdkVersion,\n environment: this._telemetryConfiguration.environment,\n fullQualifiedName: this._domain\n };\n\n if (logLevel < LoggingLevel.Error) {\n this._logs.push(logRecord);\n } else {\n this._logs.unshift(logRecord);\n }\n\n const ignored = this.sendLogsIfAble();\n }\n\n private async sendLogs(logMessages: Array<ILogItem>): Promise<Response | void> {\n const formData = new FormData();\n\n formData.append('jsonBody', JSON.stringify({records: logMessages}));\n\n return await fetch(this._telemetryConfiguration.url, {\n method: 'POST',\n body: formData\n });\n }\n\n private async sendLogsIfAble(): Promise<Response | void> {\n if (this._logs.length <= 0 || this._isSending) {\n return;\n }\n\n let numberOfLogsToSend = 0;\n let sizeOfLogsToSend = 0;\n\n this._isSending = true;\n\n const getLogSize = (log: ILogItem): number => Object.values(log)\n .reduce((sum, item) => sum + (item ? item.length : 0), 0);\n\n while (this._logs.length > numberOfLogsToSend && getLogSize(this._logs[numberOfLogsToSend]) + sizeOfLogsToSend < requestSizeLimit) {\n sizeOfLogsToSend += getLogSize(this._logs[numberOfLogsToSend]);\n numberOfLogsToSend++;\n }\n\n if (!numberOfLogsToSend) {\n this._logs[numberOfLogsToSend].message = this._logs[numberOfLogsToSend].message.substring(0,\n getLogSize(this._logs[numberOfLogsToSend]) + (requestSizeLimit - getLogSize(this._logs[numberOfLogsToSend])));\n numberOfLogsToSend = 1;\n }\n\n const logMessages = this._logs.slice(0, numberOfLogsToSend);\n\n this._logs = this._logs.slice(numberOfLogsToSend);\n\n return this.sendLogs(logMessages).then(response => {\n this._isSending = false;\n\n const ignored = this.sendLogsIfAble();\n\n return response;\n }).catch(() => {\n this._isSending = false;\n\n const ignored = this.sendLogsIfAble();\n });\n }\n}","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\nmodule.exports = (!STRICT_METHOD || !USES_TO_LENGTH) ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.github.io/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n result = new C();\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterOut }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_OUT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_OUT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push.call(target, value); // filterOut\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterOut` method\n // https://github.com/tc39/proposal-array-filtering\n filterOut: createMethod(7)\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\n\nvar defineProperty = Object.defineProperty;\nvar cache = {};\n\nvar thrower = function (it) { throw it; };\n\nmodule.exports = function (METHOD_NAME, options) {\n if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];\n if (!options) options = {};\n var method = [][METHOD_NAME];\n var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;\n var argument0 = has(options, 0) ? options[0] : thrower;\n var argument1 = has(options, 1) ? options[1] : undefined;\n\n return cache[METHOD_NAME] = !!method && !fails(function () {\n if (ACCESSORS && !DESCRIPTORS) return true;\n var O = { length: -1 };\n\n if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower });\n else O[1] = 1;\n\n method.call(O, argument0, argument1);\n });\n};\n","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar padStart = require('../internals/string-pad').start;\n\nvar abs = Math.abs;\nvar DatePrototype = Date.prototype;\nvar getTime = DatePrototype.getTime;\nvar nativeDateToISOString = DatePrototype.toISOString;\n\n// `Date.prototype.toISOString` method implementation\n// https://tc39.github.io/ecma262/#sec-date.prototype.toisostring\n// PhantomJS / old WebKit fails here:\nmodule.exports = (fails(function () {\n return nativeDateToISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n nativeDateToISOString.call(new Date(NaN));\n})) ? function toISOString() {\n if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');\n var date = this;\n var year = date.getUTCFullYear();\n var milliseconds = date.getUTCMilliseconds();\n var sign = year < 0 ? '-' : year > 9999 ? '+' : '';\n return sign + padStart(abs(year), sign ? 6 : 4, 0) +\n '-' + padStart(date.getUTCMonth() + 1, 2, 0) +\n '-' + padStart(date.getUTCDate(), 2, 0) +\n 'T' + padStart(date.getUTCHours(), 2, 0) +\n ':' + padStart(date.getUTCMinutes(), 2, 0) +\n ':' + padStart(date.getUTCSeconds(), 2, 0) +\n '.' + padStart(milliseconds, 3, 0) +\n 'Z';\n} : nativeDateToISOString;\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","var fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(iphone|ipod|ipad).*applewebkit/i.test(userAgent);\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar regexpExec = require('../internals/regexp-exec');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$<a>') !== '7';\n});\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\nvar REPLACE = wellKnownSymbol('replace');\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !(\n REPLACE_SUPPORTS_NAMED_GROUPS &&\n REPLACE_KEEPS_$0 &&\n !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n )) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }, {\n REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n });\n var stringMethod = methods[0];\n var regexMethod = methods[1];\n\n redefine(String.prototype, KEY, stringMethod);\n redefine(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return regexMethod.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return regexMethod.call(string, this); }\n );\n }\n\n if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\nvar aFunction = require('../internals/a-function');\nvar isObject = require('../internals/is-object');\n\nvar slice = [].slice;\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n if (!(argsLength in factories)) {\n for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[argsLength] = Function('C,a', 'return new C(' + list.join(',') + ')');\n } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.github.io/ecma262/#sec-function.prototype.bind\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = slice.call(arguments, 1);\n var boundFunction = function bound(/* args... */) {\n var args = partArgs.concat(slice.call(arguments));\n return this instanceof boundFunction ? construct(fn, args.length, args) : fn.apply(that, args);\n };\n if (isObject(fn.prototype)) boundFunction.prototype = fn.prototype;\n return boundFunction;\n};\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var anObject = require('../internals/an-object');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = function (it) {\n var iteratorMethod = getIteratorMethod(it);\n if (typeof iteratorMethod != 'function') {\n throw TypeError(String(it) + ' is not iterable');\n } return anObject(iteratorMethod.call(it));\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func\n (function () { return this; })() || Function('return this')();\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","module.exports = {};\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n }\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = false;\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n","var anObject = require('../internals/an-object');\n\nmodule.exports = function (iterator) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) {\n return anObject(returnMethod.call(iterator)).value;\n }\n};\n","'use strict';\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","module.exports = {};\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n if (!IS_IOS && !IS_NODE && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n then = promise.then;\n notify = function () {\n then.call(promise, flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\n var searchParams = url.searchParams;\n var result = '';\n url.pathname = 'c%20d';\n searchParams.forEach(function (value, key) {\n searchParams['delete']('b');\n result += key + value;\n });\n return (IS_PURE && !url.toJSON)\n || !searchParams.sort\n || url.href !== 'http://a/c%20d?a=1&c=3'\n || searchParams.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !searchParams[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('http://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('http://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('http://x', undefined).host !== 'x';\n});\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","'use strict';\nvar aFunction = require('../internals/a-function');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n};\n\n// 25.4.1.5 NewPromiseCapability(C)\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseInt = global.parseInt;\nvar hex = /^[+-]?0[Xx]/;\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22;\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n var S = trim(String(string));\n return $parseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10));\n} : $parseInt;\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\nvar nativeAssign = Object.assign;\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\nmodule.exports = !nativeAssign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : nativeAssign;\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return nativeGetOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","var anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var DESCRIPTORS = require('../internals/descriptors');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {\n result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.github.io/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.github.io/ecma262/#sec-object.values\n values: createMethod(false)\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var state;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) {\n createNonEnumerableProperty(value, 'name', key);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","'use strict';\nvar regexpFlags = require('./regexp-flags');\nvar stickyHelpers = require('./regexp-sticky-helpers');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = regexpFlags.call(re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = flags.replace('y', '');\n if (flags.indexOf('g') === -1) {\n flags += 'g';\n }\n\n strCopy = String(str).slice(re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = match.input.slice(charsAdded);\n match[0] = match[0].slice(charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\n\nvar fails = require('./fails');\n\n// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n// so we use an intermediate function.\nfunction RE(s, f) {\n return RegExp(s, f);\n}\n\nexports.UNSUPPORTED_Y = fails(function () {\n // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n var re = RE('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = RE('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// `SameValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-samevalue\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.8.1',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.github.io/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","// https://github.com/zloirock/core-js/issues/280\nvar userAgent = require('../internals/engine-user-agent');\n\n// eslint-disable-next-line unicorn/no-unsafe-regex\nmodule.exports = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('../internals/to-length');\nvar repeat = require('../internals/string-repeat');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar ceil = Math.ceil;\n\n// `String.prototype.{ padStart, padEnd }` methods implementation\nvar createMethod = function (IS_END) {\n return function ($this, maxLength, fillString) {\n var S = String(requireObjectCoercible($this));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n var fillLen, stringFiller;\n if (intMaxLength <= stringLength || fillStr == '') return S;\n fillLen = intMaxLength - stringLength;\n stringFiller = repeat.call(fillStr, ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return IS_END ? S + stringFiller : stringFiller + S;\n };\n};\n\nmodule.exports = {\n // `String.prototype.padStart` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.padstart\n start: createMethod(false),\n // `String.prototype.padEnd` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.padend\n end: createMethod(true)\n};\n","'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\n// eslint-disable-next-line max-statements\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n output.push(delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n for (var k = base; /* no condition */; k += base) {\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n\n ++delta;\n ++n;\n }\n return output.join('');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = input.toLowerCase().replace(regexSeparators, '\\u002E').split('.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);\n }\n return encoded.join('.');\n};\n","'use strict';\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.repeat` method implementation\n// https://tc39.github.io/ecma262/#sec-string.prototype.repeat\nmodule.exports = ''.repeat || function repeat(count) {\n var str = String(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar bind = require('../internals/function-bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar location = global.location;\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\n\nvar run = function (id) {\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(id + '', location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n typeof postMessage == 'function' &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n // eslint-disable-next-line no-undef\n && !Symbol.sham\n // eslint-disable-next-line no-undef\n && typeof Symbol.iterator == 'symbol';\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name)) {\n if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n concat: function concat(arg) { // eslint-disable-line no-unused-vars\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","var $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n fill: fill\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n// Edge 14- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength(FIND_INDEX);\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength(FIND);\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n forEach: forEach\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n// `Array.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: !USES_TO_LENGTH }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\nvar $ = require('../internals/export');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n// `Array.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? nativeIndexOf.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\n// `Array.isArray` method\n// https://tc39.github.io/ecma262/#sec-array.isarray\n$({ target: 'Array', stat: true }, {\n isArray: isArray\n});\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.github.io/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n// FF49- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('map');\n\n// `Array.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { 1: 0 });\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\n\n// `Array.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH || CHROME_BUG }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('slice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('splice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","var $ = require('../internals/export');\n\n// `Date.now` method\n// https://tc39.github.io/ecma262/#sec-date.now\n$({ target: 'Date', stat: true }, {\n now: function now() {\n return new Date().getTime();\n }\n});\n","var $ = require('../internals/export');\nvar toISOString = require('../internals/date-to-iso-string');\n\n// `Date.prototype.toISOString` method\n// https://tc39.github.io/ecma262/#sec-date.prototype.toisostring\n// PhantomJS / old WebKit has a broken implementations\n$({ target: 'Date', proto: true, forced: Date.prototype.toISOString !== toISOString }, {\n toISOString: toISOString\n});\n","var redefine = require('../internals/redefine');\n\nvar DatePrototype = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar nativeDateToString = DatePrototype[TO_STRING];\nvar getTime = DatePrototype.getTime;\n\n// `Date.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-date.prototype.tostring\nif (new Date(NaN) + '' != INVALID_DATE) {\n redefine(DatePrototype, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? nativeDateToString.call(this) : INVALID_DATE;\n });\n}\n","var $ = require('../internals/export');\nvar bind = require('../internals/function-bind');\n\n// `Function.prototype.bind` method\n// https://tc39.github.io/ecma262/#sec-function.prototype.bind\n$({ target: 'Function', proto: true }, {\n bind: bind\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.github.io/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.github.io/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n var first, third, radix, maxCode, digits, length, index, code;\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = it.charCodeAt(0);\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = it.slice(2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = digits.charCodeAt(index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.github.io/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var dummy = this;\n return dummy instanceof NumberWrapper\n // check on 1..constructor(foo) case\n && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,' +\n // ESNext\n 'fromString,range'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperties = require('../internals/object-define-properties');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\n$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, {\n defineProperties: defineProperties\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar objectDefinePropertyModile = require('../internals/object-define-property');\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\n$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, {\n defineProperty: objectDefinePropertyModile.f\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.github.io/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n","var $ = require('../internals/export');\nvar parseIntImplementation = require('../internals/number-parse-int');\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != parseIntImplementation }, {\n parseInt: parseIntImplementation\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar redefine = require('../internals/redefine');\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromise && fails(function () {\n NativePromise.prototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.github.io/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n }\n});\n\n// patch native Promise.prototype for native async functions\nif (!IS_PURE && typeof NativePromise == 'function' && !NativePromise.prototype['finally']) {\n redefine(NativePromise.prototype, 'finally', getBuiltIn('Promise').prototype['finally']);\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar isObject = require('../internals/is-object');\nvar aFunction = require('../internals/a-function');\nvar anInstance = require('../internals/an-instance');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar PromiseConstructor = NativePromise;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar $fetch = getBuiltIn('fetch');\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar NATIVE_REJECTION_EVENT = typeof PromiseRejectionEvent == 'function';\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor);\n if (!GLOBAL_CORE_JS_PROMISE) {\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (V8_VERSION === 66) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n if (!IS_NODE && !NATIVE_REJECTION_EVENT) return true;\n }\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromiseConstructor.prototype['finally']) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = PromiseConstructor.resolve(1);\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n return !(promise.then(function () { /* empty */ }) instanceof FakePromise);\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0;\n // variable length - can't use forEach\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n }\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n then.call(value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromiseConstructor, PROMISE);\n aFunction(executor);\n Internal.call(this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromiseConstructor.prototype, {\n // `Promise.prototype.then` method\n // https://tc39.github.io/ecma262/#sec-promise.prototype.then\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n state.reactions.push(reaction);\n if (state.state != PENDING) notify(state, false);\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.github.io/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && typeof NativePromise == 'function') {\n nativeThen = NativePromise.prototype.then;\n\n // wrap native Promise#then for native async functions\n redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n nativeThen.call(that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n\n // wrap fetch result\n if (typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, {\n // eslint-disable-next-line no-unused-vars\n fetch: function fetch(input /* , init */) {\n return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments));\n }\n });\n }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.github.io/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n capability.reject.call(undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.github.io/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.github.io/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n $promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.github.io/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n iterate(iterable, function (promise) {\n $promiseResolve.call(C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar aFunction = require('../internals/a-function');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar bind = require('../internals/function-bind');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\n\n// `Reflect.construct` method\n// https://tc39.github.io/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n nativeConstruct(function () { /* empty */ });\n});\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar nativeEndsWith = ''.endsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = String(requireObjectCoercible(this));\n notARegExp(searchString);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n var search = String(searchString);\n return nativeEndsWith\n ? nativeEndsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~String(requireObjectCoercible(this))\n .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : regexp[MATCH];\n return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative(nativeMatch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $padStart = require('../internals/string-pad').start;\nvar WEBKIT_BUG = require('../internals/string-pad-webkit-bug');\n\n// `String.prototype.padStart` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.padstart\n$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $padStart(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $ = require('../internals/export');\nvar repeat = require('../internals/string-repeat');\n\n// `String.prototype.repeat` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.repeat\n$({ target: 'String', proto: true }, {\n repeat: repeat\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n if (\n (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n ) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n }\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return nativeReplace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = requireObjectCoercible(this);\n var searcher = regexp == undefined ? undefined : regexp[SEARCH];\n return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative(nativeSearch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\n\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SUPPORTS_Y);\n","'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar nativeStartsWith = ''.startsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = String(requireObjectCoercible(this));\n notARegExp(searchString);\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return nativeStartsWith\n ? nativeStartsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","// `Symbol.prototype.description` getter\n// https://tc39.github.io/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar has = require('../internals/has');\nvar isObject = require('../internals/is-object');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n var result = this instanceof SymbolWrapper\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n symbolPrototype.constructor = SymbolWrapper;\n\n var symbolToString = symbolPrototype.toString;\n var native = String(NativeSymbol('test')) == 'Symbol(test)';\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n defineProperty(symbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = isObject(this) ? this.valueOf() : this;\n var string = symbolToString.call(symbol);\n if (has(EmptyStringDescriptionStore, symbol)) return '';\n var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar isSymbol = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPrimitive(P, true);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPrimitive(V, true);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPrimitive(P, true);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.github.io/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n redefine($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.github.io/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = String(key);\n if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.github.io/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.github.io/ecma262/#sec-json.stringify\nif ($stringify) {\n var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n });\n\n $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n // eslint-disable-next-line no-unused-vars\n stringify: function stringify(it, replacer, space) {\n var args = [it];\n var index = 1;\n var $replacer;\n while (arguments.length > index) args.push(arguments[index++]);\n $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return $stringify.apply(null, args);\n }\n });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar slice = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\n\nvar wrap = function (scheduler) {\n return function (handler, timeout /* , ...arguments */) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice.call(arguments, 2) : undefined;\n return scheduler(boundArgs ? function () {\n // eslint-disable-next-line no-new-func\n (typeof handler == 'function' ? handler : Function(handler)).apply(this, args);\n } : handler, timeout);\n };\n};\n\n// ie9- setTimeout & setInterval additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\n$({ global: true, bind: true, forced: MSIE }, {\n // `setTimeout` method\n // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout\n setTimeout: wrap(global.setTimeout),\n // `setInterval` method\n // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval\n setInterval: wrap(global.setInterval)\n});\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has');\nvar bind = require('../internals/function-bind-context');\nvar classof = require('../internals/classof');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $fetch = getBuiltIn('fetch');\nvar Headers = getBuiltIn('Headers');\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\n\nvar deserialize = function (it) {\n var result = it.replace(plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = result.replace(percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replace[match];\n};\n\nvar serialize = function (it) {\n return encodeURIComponent(it).replace(find, replacer);\n};\n\nvar parseSearchParams = function (result, query) {\n if (query) {\n var attributes = query.split('&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = attribute.split('=');\n result.push({\n key: deserialize(entry.shift()),\n value: deserialize(entry.join('='))\n });\n }\n }\n }\n};\n\nvar updateSearchParams = function (query) {\n this.entries.length = 0;\n parseSearchParams(this.entries, query);\n};\n\nvar validateArgumentsLength = function (passed, required) {\n if (passed < required) throw TypeError('Not enough arguments');\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n } return step;\n});\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n var that = this;\n var entries = [];\n var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;\n\n setInternalState(that, {\n type: URL_SEARCH_PARAMS,\n entries: entries,\n updateURL: function () { /* empty */ },\n updateSearchParams: updateSearchParams\n });\n\n if (init !== undefined) {\n if (isObject(init)) {\n iteratorMethod = getIteratorMethod(init);\n if (typeof iteratorMethod === 'function') {\n iterator = iteratorMethod.call(init);\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = entryNext.call(entryIterator)).done ||\n (second = entryNext.call(entryIterator)).done ||\n !entryNext.call(entryIterator).done\n ) throw TypeError('Expected sequence with length 2');\n entries.push({ key: first.value + '', value: second.value + '' });\n }\n } else for (key in init) if (hasOwn(init, key)) entries.push({ key: key, value: init[key] + '' });\n } else {\n parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');\n }\n }\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\nredefineAll(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.append` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n validateArgumentsLength(arguments.length, 2);\n var state = getInternalParamsState(this);\n state.entries.push({ key: name + '', value: value + '' });\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index].key === key) entries.splice(index, 1);\n else index++;\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) result.push(entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index++].key === key) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var found = false;\n var key = name + '';\n var val = value + '';\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) entries.splice(index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) entries.push({ key: key, value: val });\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n var entries = state.entries;\n // Array#sort is not stable in some engines\n var slice = entries.slice();\n var entry, entriesIndex, sliceIndex;\n entries.length = 0;\n for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {\n entry = slice[sliceIndex];\n for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {\n if (entries[entriesIndex].key > entry.key) {\n entries.splice(entriesIndex, 0, entry);\n break;\n }\n }\n if (entriesIndex === sliceIndex) entries.push(entry);\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries);\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n var entries = getInternalParamsState(this).entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n result.push(serialize(entry.key) + '=' + serialize(entry.value));\n } return result.join('&');\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` for correct work with polyfilled `URLSearchParams`\n// https://github.com/zloirock/core-js/issues/674\nif (!USE_NATIVE_URL && typeof $fetch == 'function' && typeof Headers == 'function') {\n $({ global: true, enumerable: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n var args = [input];\n var init, body, headers;\n if (arguments.length > 1) {\n init = arguments[1];\n if (isObject(init)) {\n body = init.body;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headers.has('content-type')) {\n headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n init = create(init, {\n body: createPropertyDescriptor(0, String(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n }\n args.push(init);\n } return $fetch.apply(this, args);\n }\n });\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar global = require('../internals/global');\nvar defineProperties = require('../internals/object-define-properties');\nvar redefine = require('../internals/redefine');\nvar anInstance = require('../internals/an-instance');\nvar has = require('../internals/has');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/string-punycode-to-ascii');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar URLSearchParamsModule = require('../modules/web.url-search-params');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar NativeURL = global.URL;\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar floor = Math.floor;\nvar pow = Math.pow;\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[A-Za-z]/;\nvar ALPHANUMERIC = /[\\d+-.A-Za-z]/;\nvar DIGIT = /\\d/;\nvar HEX_START = /^(0x|0X)/;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\dA-Fa-f]+$/;\n// eslint-disable-next-line no-control-regex\nvar FORBIDDEN_HOST_CODE_POINT = /[\\u0000\\u0009\\u000A\\u000D #%/:?@[\\\\]]/;\n// eslint-disable-next-line no-control-regex\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\u0000\\u0009\\u000A\\u000D #/:?@[\\\\]]/;\n// eslint-disable-next-line no-control-regex\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u001F ]+|[\\u0000-\\u001F ]+$/g;\n// eslint-disable-next-line no-control-regex\nvar TAB_AND_NEW_LINE = /[\\u0009\\u000A\\u000D]/g;\nvar EOF;\n\nvar parseHost = function (url, input) {\n var result, codePoints, index;\n if (input.charAt(0) == '[') {\n if (input.charAt(input.length - 1) != ']') return INVALID_HOST;\n result = parseIPv6(input.slice(1, -1));\n if (!result) return INVALID_HOST;\n url.host = result;\n // opaque host\n } else if (!isSpecial(url)) {\n if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n url.host = result;\n } else {\n input = toASCII(input);\n if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n url.host = result;\n }\n};\n\nvar parseIPv4 = function (input) {\n var parts = input.split('.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] == '') {\n parts.pop();\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part == '') return input;\n radix = 10;\n if (part.length > 1 && part.charAt(0) == '0') {\n radix = HEX_START.test(part) ? 16 : 8;\n part = part.slice(radix == 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input;\n number = parseInt(part, radix);\n }\n numbers.push(number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index == partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = numbers.pop();\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// eslint-disable-next-line max-statements\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var char = function () {\n return input.charAt(pointer);\n };\n\n if (char() == ':') {\n if (input.charAt(1) != ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (char()) {\n if (pieceIndex == 8) return;\n if (char() == ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && HEX.test(char())) {\n value = value * 16 + parseInt(char(), 16);\n pointer++;\n length++;\n }\n if (char() == '.') {\n if (length == 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (char()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (char() == '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!DIGIT.test(char())) return;\n while (DIGIT.test(char())) {\n number = parseInt(char(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece == 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n }\n if (numbersSeen != 4) return;\n break;\n } else if (char() == ':') {\n pointer++;\n if (!char()) return;\n } else if (char()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\n\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n result.unshift(host % 256);\n host = floor(host / 256);\n } return result.join('.');\n // ipv6\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += host[index].toString(16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (char, set) {\n var code = codeAt(char, 0);\n return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char);\n};\n\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\nvar isSpecial = function (url) {\n return has(specialSchemes, url.scheme);\n};\n\nvar includesCredentials = function (url) {\n return url.username != '' || url.password != '';\n};\n\nvar cannotHaveUsernamePasswordPort = function (url) {\n return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n};\n\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && ALPHA.test(string.charAt(0))\n && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));\n};\n\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (\n string.length == 2 ||\n ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\nvar shortenURLsPath = function (url) {\n var path = url.path;\n var pathSize = path.length;\n if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.pop();\n }\n};\n\nvar isSingleDot = function (segment) {\n return segment === '.' || segment.toLowerCase() === '%2e';\n};\n\nvar isDoubleDot = function (segment) {\n segment = segment.toLowerCase();\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\n// eslint-disable-next-line max-statements\nvar parseURL = function (url, input, stateOverride, base) {\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, char, bufferCodePoints, failure;\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n }\n\n input = input.replace(TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n char = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (char && ALPHA.test(char)) {\n buffer += char.toLowerCase();\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) {\n buffer += char.toLowerCase();\n } else if (char == ':') {\n if (stateOverride && (\n (isSpecial(url) != has(specialSchemes, buffer)) ||\n (buffer == 'file' && (includesCredentials(url) || url.port !== null)) ||\n (url.scheme == 'file' && !url.host)\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (isSpecial(url) && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (isSpecial(url)) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n url.path.push('');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && char == '#') {\n url.scheme = base.scheme;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (char == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (char == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (char == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '/' || (char == '\\\\' && isSpecial(url))) {\n state = RELATIVE_SLASH;\n } else if (char == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.path.pop();\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (isSpecial(url) && (char == '/' || char == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (char == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (char != '/' || buffer.charAt(pointer + 1) != '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (char != '/' && char != '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (char == '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += char;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (char == ':' && !seenBracket) {\n if (buffer == '') return INVALID_HOST;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME) return;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (isSpecial(url) && buffer == '') return INVALID_HOST;\n if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (char == '[') seenBracket = true;\n else if (char == ']') seenBracket = false;\n buffer += char;\n } break;\n\n case PORT:\n if (DIGIT.test(char)) {\n buffer += char;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url)) ||\n stateOverride\n ) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (char == '/' || char == '\\\\') state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (char == EOF) {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '?') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n url.host = base.host;\n url.path = base.path.slice();\n shortenURLsPath(url);\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (char == '/' || char == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (char == EOF || char == '/' || char == '\\\\' || char == '?' || char == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = parseHost(url, buffer);\n if (failure) return failure;\n if (url.host == 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += char;\n break;\n\n case PATH_START:\n if (isSpecial(url)) {\n state = PATH;\n if (char != '/' && char != '\\\\') continue;\n } else if (!stateOverride && char == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n state = PATH;\n if (char != '/') continue;\n } break;\n\n case PATH:\n if (\n char == EOF || char == '/' ||\n (char == '\\\\' && isSpecial(url)) ||\n (!stateOverride && (char == '?' || char == '#'))\n ) {\n if (isDoubleDot(buffer)) {\n shortenURLsPath(url);\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else if (isSingleDot(buffer)) {\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = buffer.charAt(0) + ':'; // normalize windows drive letter\n }\n url.path.push(buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n url.path.shift();\n }\n }\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(char, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n url.path[0] += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n if (char == \"'\" && isSpecial(url)) url.query += '%27';\n else if (char == '#') url.query += '%23';\n else url.query += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (char != EOF) url.fragment += percentEncode(char, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLConstructor, 'URL');\n var base = arguments.length > 1 ? arguments[1] : undefined;\n var urlString = String(url);\n var state = setInternalState(that, { type: 'URL' });\n var baseState, failure;\n if (base !== undefined) {\n if (base instanceof URLConstructor) baseState = getInternalURLState(base);\n else {\n failure = parseURL(baseState = {}, String(base));\n if (failure) throw TypeError(failure);\n }\n }\n failure = parseURL(state, urlString, null, baseState);\n if (failure) throw TypeError(failure);\n var searchParams = state.searchParams = new URLSearchParams();\n var searchParamsState = getInternalSearchParamsState(searchParams);\n searchParamsState.updateSearchParams(state.query);\n searchParamsState.updateURL = function () {\n state.query = String(searchParams) || null;\n };\n if (!DESCRIPTORS) {\n that.href = serializeURL.call(that);\n that.origin = getOrigin.call(that);\n that.protocol = getProtocol.call(that);\n that.username = getUsername.call(that);\n that.password = getPassword.call(that);\n that.host = getHost.call(that);\n that.hostname = getHostname.call(that);\n that.port = getPort.call(that);\n that.pathname = getPathname.call(that);\n that.search = getSearch.call(that);\n that.searchParams = getSearchParams.call(that);\n that.hash = getHash.call(that);\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar serializeURL = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (includesCredentials(url)) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme == 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n};\n\nvar getOrigin = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var port = url.port;\n if (scheme == 'blob') try {\n return new URL(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !isSpecial(url)) return 'null';\n return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');\n};\n\nvar getProtocol = function () {\n return getInternalURLState(this).scheme + ':';\n};\n\nvar getUsername = function () {\n return getInternalURLState(this).username;\n};\n\nvar getPassword = function () {\n return getInternalURLState(this).password;\n};\n\nvar getHost = function () {\n var url = getInternalURLState(this);\n var host = url.host;\n var port = url.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n};\n\nvar getHostname = function () {\n var host = getInternalURLState(this).host;\n return host === null ? '' : serializeHost(host);\n};\n\nvar getPort = function () {\n var port = getInternalURLState(this).port;\n return port === null ? '' : String(port);\n};\n\nvar getPathname = function () {\n var url = getInternalURLState(this);\n var path = url.path;\n return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n};\n\nvar getSearch = function () {\n var query = getInternalURLState(this).query;\n return query ? '?' + query : '';\n};\n\nvar getSearchParams = function () {\n return getInternalURLState(this).searchParams;\n};\n\nvar getHash = function () {\n var fragment = getInternalURLState(this).fragment;\n return fragment ? '#' + fragment : '';\n};\n\nvar accessorDescriptor = function (getter, setter) {\n return { get: getter, set: setter, configurable: true, enumerable: true };\n};\n\nif (DESCRIPTORS) {\n defineProperties(URLPrototype, {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n href: accessorDescriptor(serializeURL, function (href) {\n var url = getInternalURLState(this);\n var urlString = String(href);\n var failure = parseURL(url, urlString);\n if (failure) throw TypeError(failure);\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n origin: accessorDescriptor(getOrigin),\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n protocol: accessorDescriptor(getProtocol, function (protocol) {\n var url = getInternalURLState(this);\n parseURL(url, String(protocol) + ':', SCHEME_START);\n }),\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n username: accessorDescriptor(getUsername, function (username) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(username));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n password: accessorDescriptor(getPassword, function (password) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(password));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n host: accessorDescriptor(getHost, function (host) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(host), HOST);\n }),\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n hostname: accessorDescriptor(getHostname, function (hostname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(hostname), HOSTNAME);\n }),\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n port: accessorDescriptor(getPort, function (port) {\n var url = getInternalURLState(this);\n if (cannotHaveUsernamePasswordPort(url)) return;\n port = String(port);\n if (port == '') url.port = null;\n else parseURL(url, port, PORT);\n }),\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n pathname: accessorDescriptor(getPathname, function (pathname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n url.path = [];\n parseURL(url, pathname + '', PATH_START);\n }),\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n search: accessorDescriptor(getSearch, function (search) {\n var url = getInternalURLState(this);\n search = String(search);\n if (search == '') {\n url.query = null;\n } else {\n if ('?' == search.charAt(0)) search = search.slice(1);\n url.query = '';\n parseURL(url, search, QUERY);\n }\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n searchParams: accessorDescriptor(getSearchParams),\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n hash: accessorDescriptor(getHash, function (hash) {\n var url = getInternalURLState(this);\n hash = String(hash);\n if (hash == '') {\n url.fragment = null;\n return;\n }\n if ('#' == hash.charAt(0)) hash = hash.slice(1);\n url.fragment = '';\n parseURL(url, hash, FRAGMENT);\n })\n });\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\nredefine(URLPrototype, 'toJSON', function toJSON() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\nredefine(URLPrototype, 'toString', function toString() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n // eslint-disable-next-line no-unused-vars\n if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {\n return nativeCreateObjectURL.apply(NativeURL, arguments);\n });\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n // eslint-disable-next-line no-unused-vars\n if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {\n return nativeRevokeObjectURL.apply(NativeURL, arguments);\n });\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","var global =\n (typeof globalThis !== 'undefined' && globalThis) ||\n (typeof self !== 'undefined' && self) ||\n (typeof global !== 'undefined' && global)\n\nvar support = {\n searchParams: 'URLSearchParams' in global,\n iterable: 'Symbol' in global && 'iterator' in Symbol,\n blob:\n 'FileReader' in global &&\n 'Blob' in global &&\n (function() {\n try {\n new Blob()\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in global,\n arrayBuffer: 'ArrayBuffer' in global\n}\n\nfunction isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n}\n\nif (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n }\n return name.toLowerCase()\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n}\n\nexport function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n}\n\nHeaders.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue + ', ' + value : value\n}\n\nHeaders.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n}\n\nHeaders.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n}\n\nHeaders.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n}\n\nHeaders.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n}\n\nHeaders.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n}\n\nHeaders.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push(name)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.values = function() {\n var items = []\n this.forEach(function(value) {\n items.push(value)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push([name, value])\n })\n return iteratorFor(items)\n}\n\nif (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n}\n\nfunction consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n}\n\nfunction fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n}\n\nfunction readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n}\n\nfunction readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n}\n\nfunction readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n}\n\nfunction bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n}\n\nfunction Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n this.bodyUsed = this.bodyUsed\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n this._bodyText = body = Object.prototype.toString.call(body)\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n var isConsumed = consumed(this)\n if (isConsumed) {\n return isConsumed\n }\n if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n return Promise.resolve(\n this._bodyArrayBuffer.buffer.slice(\n this._bodyArrayBuffer.byteOffset,\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n )\n )\n } else {\n return Promise.resolve(this._bodyArrayBuffer)\n }\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n}\n\n// HTTP methods whose capitalization should be normalized\nvar methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\nfunction normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return methods.indexOf(upcased) > -1 ? upcased : method\n}\n\nexport function Request(input, options) {\n if (!(this instanceof Request)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n this.signal = input.signal\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.signal = options.signal || this.signal\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime())\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime()\n }\n }\n }\n}\n\nRequest.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n}\n\nfunction decode(body) {\n var form = new FormData()\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n}\n\nfunction parseHeaders(rawHeaders) {\n var headers = new Headers()\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n preProcessedHeaders\n .split('\\r')\n .map(function(header) {\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n })\n .forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n}\n\nBody.call(Request.prototype)\n\nexport function Response(bodyInit, options) {\n if (!(this instanceof Response)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = options.status === undefined ? 200 : options.status\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = options.statusText === undefined ? '' : '' + options.statusText\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n}\n\nBody.call(Response.prototype)\n\nResponse.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n}\n\nResponse.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n}\n\nvar redirectStatuses = [301, 302, 303, 307, 308]\n\nResponse.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n}\n\nexport var DOMException = global.DOMException\ntry {\n new DOMException()\n} catch (err) {\n DOMException = function(message, name) {\n this.message = message\n this.name = name\n var error = Error(message)\n this.stack = error.stack\n }\n DOMException.prototype = Object.create(Error.prototype)\n DOMException.prototype.constructor = DOMException\n}\n\nexport function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n\n if (request.signal && request.signal.aborted) {\n return reject(new DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest()\n\n function abortXhr() {\n xhr.abort()\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n setTimeout(function() {\n resolve(new Response(body, options))\n }, 0)\n }\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'))\n }, 0)\n }\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'))\n }, 0)\n }\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new DOMException('Aborted', 'AbortError'))\n }, 0)\n }\n\n function fixUrl(url) {\n try {\n return url === '' && global.location.href ? global.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob'\n } else if (\n support.arrayBuffer &&\n request.headers.get('Content-Type') &&\n request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1\n ) {\n xhr.responseType = 'arraybuffer'\n }\n }\n\n if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers)) {\n Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n xhr.setRequestHeader(name, normalizeValue(init.headers[name]))\n })\n } else {\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n }\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr)\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr)\n }\n }\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n}\n\nfetch.polyfill = true\n\nif (!global.fetch) {\n global.fetch = fetch\n global.Headers = Headers\n global.Request = Request\n global.Response = Response\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\n__webpack_require__(7147);\nreturn __webpack_require__(4146);\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack://phenix/webpack/universalModuleDefinition","webpack://phenix/./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://phenix/./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack://phenix/./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://phenix/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://phenix/./node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack://phenix/./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://phenix/./node_modules/@babel/runtime/helpers/createClass.js","webpack://phenix/./node_modules/@babel/runtime/helpers/defineProperty.js","webpack://phenix/./node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack://phenix/./node_modules/@babel/runtime/helpers/inherits.js","webpack://phenix/./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://phenix/./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack://phenix/./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack://phenix/./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://phenix/./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack://phenix/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://phenix/./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack://phenix/./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://phenix/./node_modules/@babel/runtime/helpers/typeof.js","webpack://phenix/./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://phenix/./node_modules/@babel/runtime/regenerator/index.js","webpack://phenix/./src/dom/ApplicationActivityMonitor.ts","webpack://phenix/./src/dom/BrowserDetector.ts","webpack://phenix/./src/dom/ConfigurationParameterReader.ts","webpack://phenix/./src/dom/PrivacyMode.ts","webpack://phenix/./src/lang/Disposable.ts","webpack://phenix/./src/lang/DisposableList.ts","webpack://phenix/./src/lang/Strings.ts","webpack://phenix/./src/lang/assertUnreachable.ts","webpack://phenix/./src/logger/Appenders.ts","webpack://phenix/./src/logger/ConsoleAppender.ts","webpack://phenix/./src/logger/Logger.ts","webpack://phenix/./src/logger/LoggerDefaults.ts","webpack://phenix/./src/logger/LoggerFactory.ts","webpack://phenix/./src/logger/LoggingLevelMapping.ts","webpack://phenix/./src/logger/LoggingThreshold.ts","webpack://phenix/./src/metrics/MetricType.ts","webpack://phenix/./src/metrics/MetricsConfiguration.ts","webpack://phenix/./src/metrics/MetricsFactory.ts","webpack://phenix/./src/metrics/MetricsService.ts","webpack://phenix/./src/metrics/MetricsType.ts","webpack://phenix/./src/metrics/TelemetricLevelMapping.ts","webpack://phenix/./src/metrics/TelemetryDefault.ts","webpack://phenix/./src/promise/PromiseHandler.ts","webpack://phenix/./src/promise/Promise.ts","webpack://phenix/./src/rtc/VanillaPeerConnection.ts","webpack://phenix/./src/rtc/VanillaPeerConnectionFactory.ts","webpack://phenix/./src/rx/ReadOnlySubject.ts","webpack://phenix/./src/rx/Subject.ts","webpack://phenix/./src/sdk/Environment.ts","webpack://phenix/./src/sdk/SDK.ts","webpack://phenix/./src/sdk/TelemetryUrl.ts","webpack://phenix/./src/sdk/channels/ChannelState.ts","webpack://phenix/./src/sdk/api/SetTemporaryMaximalBitrate.ts","webpack://phenix/./src/video/Dimension.ts","webpack://phenix/./src/time/Duration.ts","webpack://phenix/./src/video/VideoTelemetry.ts","webpack://phenix/./src/dom/StreamSetupListener.ts","webpack://phenix/./src/dom/NetworkMonitor.ts","webpack://phenix/./src/video/SessionTelemetry.ts","webpack://phenix/./src/sdk/channels/ChannelContext.ts","webpack://phenix/./src/sdk/discovery/BitrateModeMapping.ts","webpack://phenix/./src/sdk/discovery/BitrateStateMapping.ts","webpack://phenix/./src/sdk/discovery/EndPoint.ts","webpack://phenix/./src/sdk/discovery/DiscoveryService.ts","webpack://phenix/./src/sdk/discovery/Discovery.ts","webpack://phenix/./src/sdk/streaming/NetworkStates.ts","webpack://phenix/./src/sdk/streaming/FlashPlayer.ts","webpack://phenix/./src/sdk/streaming/PhenixFlashVideo.ts","webpack://phenix/./src/sdk/streaming/FlashRenderer.ts","webpack://phenix/./src/sdk/streaming/RtmpStream.ts","webpack://phenix/./src/sdk/streaming/WebPlayer.ts","webpack://phenix/./src/sdk/streaming/ShakaPlayer.ts","webpack://phenix/./src/sdk/streaming/HlsPlayer.ts","webpack://phenix/./src/sdk/streaming/LiveStreaming.ts","webpack://phenix/./src/sdk/streaming/ChunkedStream.ts","webpack://phenix/./src/rtc/PeerConnectionService.ts","webpack://phenix/./src/rtc/SdpParser.ts","webpack://phenix/./src/rtc/RtcConnectionMonitor.ts","webpack://phenix/./src/sdk/streaming/RealTimeStream.ts","webpack://phenix/./src/sdk/streaming/LegacyStreamFactory.ts","webpack://phenix/./src/sdk/channels/Channel.ts","webpack://phenix/./src/sdk/channels/Channels.ts","webpack://phenix/./src/sdk/channels/index.ts","webpack://phenix/./src/sdk/defaults.ts","webpack://phenix/./src/sdk/discovery/DiscoveryUri.ts","webpack://phenix/./src/sdk/edgeAuth/EdgeAuth.ts","webpack://phenix/./src/sdk/feature/FeatureEnablement.ts","webpack://phenix/./src/sdk/version/VersionManager.ts","webpack://phenix/./src/telemetry/TelemetryApender.ts","webpack://phenix/./src/telemetry/TelemetryConfiguration.ts","webpack://phenix/./src/telemetry/TelemetryService.ts","webpack://phenix/./node_modules/core-js/internals/a-function.js","webpack://phenix/./node_modules/core-js/internals/a-possible-prototype.js","webpack://phenix/./node_modules/core-js/internals/add-to-unscopables.js","webpack://phenix/./node_modules/core-js/internals/advance-string-index.js","webpack://phenix/./node_modules/core-js/internals/an-instance.js","webpack://phenix/./node_modules/core-js/internals/an-object.js","webpack://phenix/./node_modules/core-js/internals/array-fill.js","webpack://phenix/./node_modules/core-js/internals/array-for-each.js","webpack://phenix/./node_modules/core-js/internals/array-from.js","webpack://phenix/./node_modules/core-js/internals/array-includes.js","webpack://phenix/./node_modules/core-js/internals/array-iteration.js","webpack://phenix/./node_modules/core-js/internals/array-method-has-species-support.js","webpack://phenix/./node_modules/core-js/internals/array-method-is-strict.js","webpack://phenix/./node_modules/core-js/internals/array-method-uses-to-length.js","webpack://phenix/./node_modules/core-js/internals/array-reduce.js","webpack://phenix/./node_modules/core-js/internals/array-species-create.js","webpack://phenix/./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack://phenix/./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack://phenix/./node_modules/core-js/internals/classof-raw.js","webpack://phenix/./node_modules/core-js/internals/classof.js","webpack://phenix/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://phenix/./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack://phenix/./node_modules/core-js/internals/correct-prototype-getter.js","webpack://phenix/./node_modules/core-js/internals/create-iterator-constructor.js","webpack://phenix/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://phenix/./node_modules/core-js/internals/create-property-descriptor.js","webpack://phenix/./node_modules/core-js/internals/create-property.js","webpack://phenix/./node_modules/core-js/internals/date-to-iso-string.js","webpack://phenix/./node_modules/core-js/internals/define-iterator.js","webpack://phenix/./node_modules/core-js/internals/define-well-known-symbol.js","webpack://phenix/./node_modules/core-js/internals/descriptors.js","webpack://phenix/./node_modules/core-js/internals/document-create-element.js","webpack://phenix/./node_modules/core-js/internals/dom-iterables.js","webpack://phenix/./node_modules/core-js/internals/engine-is-ios.js","webpack://phenix/./node_modules/core-js/internals/engine-is-node.js","webpack://phenix/./node_modules/core-js/internals/engine-user-agent.js","webpack://phenix/./node_modules/core-js/internals/engine-v8-version.js","webpack://phenix/./node_modules/core-js/internals/enum-bug-keys.js","webpack://phenix/./node_modules/core-js/internals/export.js","webpack://phenix/./node_modules/core-js/internals/fails.js","webpack://phenix/./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack://phenix/./node_modules/core-js/internals/function-bind-context.js","webpack://phenix/./node_modules/core-js/internals/function-bind.js","webpack://phenix/./node_modules/core-js/internals/get-built-in.js","webpack://phenix/./node_modules/core-js/internals/get-iterator-method.js","webpack://phenix/./node_modules/core-js/internals/get-iterator.js","webpack://phenix/./node_modules/core-js/internals/global.js","webpack://phenix/./node_modules/core-js/internals/has.js","webpack://phenix/./node_modules/core-js/internals/hidden-keys.js","webpack://phenix/./node_modules/core-js/internals/host-report-errors.js","webpack://phenix/./node_modules/core-js/internals/html.js","webpack://phenix/./node_modules/core-js/internals/ie8-dom-define.js","webpack://phenix/./node_modules/core-js/internals/indexed-object.js","webpack://phenix/./node_modules/core-js/internals/inherit-if-required.js","webpack://phenix/./node_modules/core-js/internals/inspect-source.js","webpack://phenix/./node_modules/core-js/internals/internal-state.js","webpack://phenix/./node_modules/core-js/internals/is-array-iterator-method.js","webpack://phenix/./node_modules/core-js/internals/is-array.js","webpack://phenix/./node_modules/core-js/internals/is-forced.js","webpack://phenix/./node_modules/core-js/internals/is-object.js","webpack://phenix/./node_modules/core-js/internals/is-pure.js","webpack://phenix/./node_modules/core-js/internals/is-regexp.js","webpack://phenix/./node_modules/core-js/internals/iterate.js","webpack://phenix/./node_modules/core-js/internals/iterator-close.js","webpack://phenix/./node_modules/core-js/internals/iterators-core.js","webpack://phenix/./node_modules/core-js/internals/iterators.js","webpack://phenix/./node_modules/core-js/internals/microtask.js","webpack://phenix/./node_modules/core-js/internals/native-promise-constructor.js","webpack://phenix/./node_modules/core-js/internals/native-symbol.js","webpack://phenix/./node_modules/core-js/internals/native-url.js","webpack://phenix/./node_modules/core-js/internals/native-weak-map.js","webpack://phenix/./node_modules/core-js/internals/new-promise-capability.js","webpack://phenix/./node_modules/core-js/internals/not-a-regexp.js","webpack://phenix/./node_modules/core-js/internals/number-parse-int.js","webpack://phenix/./node_modules/core-js/internals/object-assign.js","webpack://phenix/./node_modules/core-js/internals/object-create.js","webpack://phenix/./node_modules/core-js/internals/object-define-properties.js","webpack://phenix/./node_modules/core-js/internals/object-define-property.js","webpack://phenix/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://phenix/./node_modules/core-js/internals/object-get-own-property-names-external.js","webpack://phenix/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://phenix/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://phenix/./node_modules/core-js/internals/object-get-prototype-of.js","webpack://phenix/./node_modules/core-js/internals/object-keys-internal.js","webpack://phenix/./node_modules/core-js/internals/object-keys.js","webpack://phenix/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://phenix/./node_modules/core-js/internals/object-set-prototype-of.js","webpack://phenix/./node_modules/core-js/internals/object-to-array.js","webpack://phenix/./node_modules/core-js/internals/object-to-string.js","webpack://phenix/./node_modules/core-js/internals/own-keys.js","webpack://phenix/./node_modules/core-js/internals/path.js","webpack://phenix/./node_modules/core-js/internals/perform.js","webpack://phenix/./node_modules/core-js/internals/promise-resolve.js","webpack://phenix/./node_modules/core-js/internals/redefine-all.js","webpack://phenix/./node_modules/core-js/internals/redefine.js","webpack://phenix/./node_modules/core-js/internals/regexp-exec-abstract.js","webpack://phenix/./node_modules/core-js/internals/regexp-exec.js","webpack://phenix/./node_modules/core-js/internals/regexp-flags.js","webpack://phenix/./node_modules/core-js/internals/regexp-sticky-helpers.js","webpack://phenix/./node_modules/core-js/internals/require-object-coercible.js","webpack://phenix/./node_modules/core-js/internals/same-value.js","webpack://phenix/./node_modules/core-js/internals/set-global.js","webpack://phenix/./node_modules/core-js/internals/set-species.js","webpack://phenix/./node_modules/core-js/internals/set-to-string-tag.js","webpack://phenix/./node_modules/core-js/internals/shared-key.js","webpack://phenix/./node_modules/core-js/internals/shared-store.js","webpack://phenix/./node_modules/core-js/internals/shared.js","webpack://phenix/./node_modules/core-js/internals/species-constructor.js","webpack://phenix/./node_modules/core-js/internals/string-multibyte.js","webpack://phenix/./node_modules/core-js/internals/string-pad-webkit-bug.js","webpack://phenix/./node_modules/core-js/internals/string-pad.js","webpack://phenix/./node_modules/core-js/internals/string-punycode-to-ascii.js","webpack://phenix/./node_modules/core-js/internals/string-repeat.js","webpack://phenix/./node_modules/core-js/internals/string-trim.js","webpack://phenix/./node_modules/core-js/internals/task.js","webpack://phenix/./node_modules/core-js/internals/to-absolute-index.js","webpack://phenix/./node_modules/core-js/internals/to-indexed-object.js","webpack://phenix/./node_modules/core-js/internals/to-integer.js","webpack://phenix/./node_modules/core-js/internals/to-length.js","webpack://phenix/./node_modules/core-js/internals/to-object.js","webpack://phenix/./node_modules/core-js/internals/to-primitive.js","webpack://phenix/./node_modules/core-js/internals/to-string-tag-support.js","webpack://phenix/./node_modules/core-js/internals/uid.js","webpack://phenix/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://phenix/./node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack://phenix/./node_modules/core-js/internals/well-known-symbol.js","webpack://phenix/./node_modules/core-js/internals/whitespaces.js","webpack://phenix/./node_modules/core-js/modules/es.array.concat.js","webpack://phenix/./node_modules/core-js/modules/es.array.fill.js","webpack://phenix/./node_modules/core-js/modules/es.array.filter.js","webpack://phenix/./node_modules/core-js/modules/es.array.find-index.js","webpack://phenix/./node_modules/core-js/modules/es.array.find.js","webpack://phenix/./node_modules/core-js/modules/es.array.for-each.js","webpack://phenix/./node_modules/core-js/modules/es.array.includes.js","webpack://phenix/./node_modules/core-js/modules/es.array.index-of.js","webpack://phenix/./node_modules/core-js/modules/es.array.is-array.js","webpack://phenix/./node_modules/core-js/modules/es.array.iterator.js","webpack://phenix/./node_modules/core-js/modules/es.array.join.js","webpack://phenix/./node_modules/core-js/modules/es.array.map.js","webpack://phenix/./node_modules/core-js/modules/es.array.reduce.js","webpack://phenix/./node_modules/core-js/modules/es.array.slice.js","webpack://phenix/./node_modules/core-js/modules/es.array.splice.js","webpack://phenix/./node_modules/core-js/modules/es.date.now.js","webpack://phenix/./node_modules/core-js/modules/es.date.to-iso-string.js","webpack://phenix/./node_modules/core-js/modules/es.date.to-string.js","webpack://phenix/./node_modules/core-js/modules/es.function.bind.js","webpack://phenix/./node_modules/core-js/modules/es.function.name.js","webpack://phenix/./node_modules/core-js/modules/es.number.constructor.js","webpack://phenix/./node_modules/core-js/modules/es.object.assign.js","webpack://phenix/./node_modules/core-js/modules/es.object.define-properties.js","webpack://phenix/./node_modules/core-js/modules/es.object.define-property.js","webpack://phenix/./node_modules/core-js/modules/es.object.get-own-property-descriptor.js","webpack://phenix/./node_modules/core-js/modules/es.object.get-own-property-descriptors.js","webpack://phenix/./node_modules/core-js/modules/es.object.keys.js","webpack://phenix/./node_modules/core-js/modules/es.object.to-string.js","webpack://phenix/./node_modules/core-js/modules/es.object.values.js","webpack://phenix/./node_modules/core-js/modules/es.parse-int.js","webpack://phenix/./node_modules/core-js/modules/es.promise.finally.js","webpack://phenix/./node_modules/core-js/modules/es.promise.js","webpack://phenix/./node_modules/core-js/modules/es.reflect.construct.js","webpack://phenix/./node_modules/core-js/modules/es.regexp.exec.js","webpack://phenix/./node_modules/core-js/modules/es.regexp.to-string.js","webpack://phenix/./node_modules/core-js/modules/es.string.ends-with.js","webpack://phenix/./node_modules/core-js/modules/es.string.includes.js","webpack://phenix/./node_modules/core-js/modules/es.string.iterator.js","webpack://phenix/./node_modules/core-js/modules/es.string.match.js","webpack://phenix/./node_modules/core-js/modules/es.string.pad-start.js","webpack://phenix/./node_modules/core-js/modules/es.string.repeat.js","webpack://phenix/./node_modules/core-js/modules/es.string.replace.js","webpack://phenix/./node_modules/core-js/modules/es.string.search.js","webpack://phenix/./node_modules/core-js/modules/es.string.split.js","webpack://phenix/./node_modules/core-js/modules/es.string.starts-with.js","webpack://phenix/./node_modules/core-js/modules/es.symbol.description.js","webpack://phenix/./node_modules/core-js/modules/es.symbol.js","webpack://phenix/./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack://phenix/./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack://phenix/./node_modules/core-js/modules/web.timers.js","webpack://phenix/./node_modules/core-js/modules/web.url-search-params.js","webpack://phenix/./node_modules/core-js/modules/web.url.js","webpack://phenix/./node_modules/regenerator-runtime/runtime.js","webpack://phenix/./node_modules/whatwg-fetch/fetch.js","webpack://phenix/webpack/bootstrap","webpack://phenix/webpack/startup","webpack://phenix/webpack/runtime/compat get default export","webpack://phenix/webpack/runtime/define property getters","webpack://phenix/webpack/runtime/global","webpack://phenix/webpack/runtime/hasOwnProperty shorthand","webpack://phenix/webpack/runtime/make namespace object"],"names":["root","factory","exports","module","define","amd","self","arr","len","length","i","arr2","Array","isArray","arrayLikeToArray","ReferenceError","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","fn","this","args","arguments","apply","err","undefined","instance","Constructor","TypeError","_defineProperties","target","props","descriptor","enumerable","configurable","writable","Object","defineProperty","protoProps","staticProps","prototype","obj","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","subClass","superClass","create","constructor","iter","Symbol","iterator","from","_arr","_n","_d","_e","_s","_i","next","push","_typeof","assertThisInitialized","call","_setPrototypeOf","p","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","arrayWithoutHoles","iterableToArray","nonIterableSpread","minLen","n","toString","slice","name","test","ApplicationActivityMonitor","DisposableList","Date","now","_isForeground","Subject","_readOnlyIsForeground","ReadOnlySubject","detectTabFocusChange","_timeOfLastTabFocusChange","_disposables","dispose","hidden","visibilityChange","document","msHidden","webkitHidden","handleVisibilityChange","isForeground","setFocusState","addEventListener","add","Disposable","removeEventListener","listenForDocumentFocus","_documentFocusInterval","window","setInterval","hasFocus","clearInterval","BrowserDetector","navigator","userAgent","browserNameAndVersion","match","_browserNameAndVersionRegex","parseBrowserNameAndVersionForIE","_browserNameAndVersion","browserNameList","split","browserVersionList","fullVersion","Number","msie","indexOf","parseInt","substring","version","_browserName","_browserMajorVersion","_isChrome69","_isChrome70","_isChrome71","_isChrome72","_isChrome74","_isChrome75","_isChrome76","_isChrome77","parseBrowserNameAndVersion","parseBrowserName","parseBrowserMajorVersion","includes","ConfigurationParameterReader","readConfigurationParameterValue","readConfigurationParameterURIValue","defaultStringValue","defaultBooleanValue","metaValue","querySelector","getAttribute","valueURIParameterName","URLSearchParams","location","search","get","TelemetryLevelMapping","TelemetryDefault","LoggingLevelMapping","LoggerDefaults","PrivacyMode","_isPrivate","__PRIVACY_MODE__","e","applyIsPrivate","disposable","_disposed","_disposable","_list","forEach","Strings","Error","loops","Math","ceil","fill","random","reduce","string","func","x","Appenders","appender","_appenders","items","item","ConsoleAppender","threshold","_threshold","logLevel","message","category","date","fullMessage","toISOString","LoggingLevel","console","log","Logger","appenders","_category","Trace","Debug","Info","Warn","Fatal","level","replacePlaceholders","replacePlaceholdersString","index","replaceArgument","splice","stringify","accumulator","currentValue","array","stack","cache","JSON","argument","data","toStringStr","LoggerFactory","_loggers","applyLoggingLevel","applyAppenderLoggingLevel","applyConsoleLogger","bind","applyTelemetryLogger","parameterValue","_configurationParameterReader","getStringValue","setThreshold","applyAppender","_telemetryConfiguration","TelemetryAppender","LoggingThreshold","TelemetryConfiguration","applyLoggerConfigFromParameterConfiguration","loggingLevel","assertUnreachable","loggingLevelType","MetricType","metrics","_metrics","MetricsType","TelemetryLevel","MetricsConfiguration","_url","url","metricsUrl","URL","pathname","_environment","environment","_tenancy","tenancy","_sessionId","sessionId","MetricsFactory","metricsServices","_metricsServices","metricsConfiguration","SDK","TelemetryUrl","Environment","MetricsService","telemetryLevel","values","metricsService","hostname","_metricsConfiguration","metric","streamId","previousValue","runtime","resource","kind","metricType","getTelemetryLevel","metricRecord","timestamp","getName","fullQualifiedName","_domain","VersionManager","sendMetricsIfAble","metricsMessages","formData","FormData","append","records","fetch","method","body","_isSending","sendMetrics","response","telemetryLevelType","PromiseHandler","onFulfilled","onRejected","promise","callback","_state","_handled","_value","_deferreds","doResolve","promiseResolve","reason","promiseReject","newValue","finale","_immediate","_unhandledRejection","handle","deferred","result","remaining","manageResponse","_","setTimeout","warn","VanillaPeerConnection","configuration","FeatureEnablement","_peerConnection","webkitRTCPeerConnection","RTCPeerConnection","options","createOffer","createAnswer","description","setLocalDescription","RTCSessionDescription","sdp","_logger","setRemoteDescription","selector","getStats","type","listener","addTransceiver","getConfiguration","setConfiguration","close","currentLocalDescription","currentRemoteDescription","iceConnectionState","handler","ontrack","onicecandidate","oniceconnectionstatechange","VanillaPeerConnectionFactory","subject","_subject","subscribe","DisposableListener","listeners","idx","_listeners","changed","comparable","equals","origin","pageLoadTime","telemetryConfiguration","clientSessionId","telemetryUrl","telemetryAppender","find","remove","_metricsService","DiscoveryUri","_telemetryLevel","_automaticallyRetryOnFailure","getBooleanValue","_automaticallyReconnectPeerConnection","discoveryUri","getTelemetryUrl","channelToken","parsedToken","EdgeAuth","uriValue","baseURIValue","_initialized","_applicationActivityMonitor","peerConnectionFactory","_peerConnectionFactory","consoleLoggingLevel","consoleAppender","automaticallyPlayMediaStream","_automaticallyPlayMediaStream","automaticallyMuteVideoOnPlayFailure","_automaticallyMuteVideoOnPlayFailure","webPlayerLoader","_webPlayerLoader","shakaPlayerLoader","_shakaPlayerLoader","hlsJsLoader","_hlsJsLoader","_sendLocalCandidates","_clientSessionId","_loadedTimestamp","_readOnlyInitialized","_readOnlyDiscoveryUri","_readOnlyPeerConnectionFactory","_telemetryUrl","_maximalNumberOfPeerConnectionReconnectAttempts","retriesAmount","applyDiscoveryUriDefaultFromParameterConfiguration","applyMetricsConfiguration","applyTelemetryConfiguration","applyAutomaticallyRetryOnFailureFromParameterConfiguration","applyAutomaticallyReconnectPeerConnectionFromParameterConfiguration","init","baseURL","segments","protocol","unshift","startsWith","endsWith","join","ChannelState","BitrateState","BitrateMode","Dimension","width","height","other","Durations","duration","_duration","isNegative","abs","offset","floor","milliseconds","seconds","minutes","hours","parts","String","padStart","targetLength","padString","repeat","VideoTelemetry","channelStartTime","_streamId","_pageLoadTime","_channelStartTime","video","_startRecordingFirstFrame","_listenToFirstTime","callTimeToFirstFrame","_clearTimeToFirstFrameListener","_listenForStall","onStall","_listenForContinuation","event","onContinuation","_clearRebufferingListener","pushTimeToFirstFrame","pushChannelCreationTimeToFirstFrame","_timeToFirstFrame","uint64","durationSincePageLoad","toIsoString","_channelCreationTimeToFirstFrame","_videoStalled","buffered","bufferLength","hasNotProgressedSinceLastProgressEvent","end","_lastProgress","timeSinceStop","newResolution","_videoResolution","StreamSetupListener","_startTime","recordStreamMetric","_metricSubmitted","setupTime","metricName","NetworkMonitor","isSupported","setupNetworkChangeListeners","updateStatistics","downlink","downlinkMax","effectiveType","rtt","_rtt","getRoundTripTime","_effectiveType","getEffectiveType","_downlinkThroughputCapacity","getDownlinkThroughputCapacity","_isSupported","SessionTelemetry","_networkMonitor","recordForegroundChange","recordNetworkRTTUpdate","recordNetworkTypeChangeUpdate","downlinkThroughputCapacity","recordNetworkDownlinkThroughputCapacityUpdate","timeSinceLastChange","getTimeSinceLastChange","newRTT","oldRtt","_lastNetworkStatistics","newNetworkType","oldNetworkType","newCapacity","oldCapacity","float","ChannelContext","token","targetLag","isDisposed","isStarting","disposables","channelDisposables","rendererDisposables","channelInitialization","videoElement","peerConnection","mediaStream","state","autoMuted","autoPaused","tokenExpiring","authorized","online","loading","playing","standby","stopped","lag","bitrateLimit","resolution","empty","failureCount","endPoint","stream","rtcStatistics","peerConnectionReconnectAttempts","status","dataset","BitrateModeMapping","bitrateMode","Normal","Force","Reset","BitrateStateMapping","bitrateState","Keep","EndPoint","uri","timeout","_uri","_timeout","buildPingUrl","start","race","finished","ok","_roundTripTime","localSessionDescription","applicationId","buildUrl","clientVersion","bodyWithOffer","apiVersion","edgeAuthToken","sessionDescription","convertRTCSdpTypeToSdpType","createAnswerDescription","bodyWithoutOffer","createOfferDescription","clearTimeout","httpResponse","mapHttpStatusToSubscribeStatus","convertHttpResponseToSubscribeResponse","subscribeResponse","debug","sharedSecret","mapHttpStatusToSetRemoteDescriptionStatus","convertHttpResponseToSetRemoteDescriptionResponse","setRemoteDescriptionResponse","elapsedInMilliseconds","bitrateInBitsPerSecond","convertBitrateStateToBitrateStateType","convertBitrateModeToBitrateModeType","mapHttpStatusToSetTemporaryMaximalBitrateStatus","candidates","discoveryCompleted","mapHttpStatusToAddIceCandidatesStatus","convertHttpResponseToAddIceCandidatesResponse","addIceCandidatesResponse","mapHttpStatusToSetDestroyStreamStatus","convertHttpResponseToDestroyStreamResponse","destroyStreamResponse","path","pathAsArray","concat","sdkVersion","json","rtcConfiguration","bundlePolicy","iceCandidatePoolSize","iceServers","urls","username","credential","iceTransportPolicy","peerIdentity","rtcpMuxPolicy","convertISessionDescriptionToRTCSessionDescription","createAnswerDescriptionResponse","createOfferDescriptionResponse","rtcSessionDescription","destroyStream","DiscoveryService","text","asString","endPoints","map","discoverNearbyEndPoints","neverResolve","ping","time","Discovery","discoverClosestEndPointWithCaching","_cache","discoveryService","cachedValue","discoverClosestEndPoint","precacheClosestEndPointDiscovery","NetworkStates","defaultPropertyValues","videoWidth","videoHeight","muted","volume","currentTime","Infinity","readyState","ended","autoplay","isEdgeAndRequiresFlashObject","FlashPlayer","ghost","streamInfo","_isVideo","tagName","_swfSrc","swfSrc","_id","id","_width","clientWidth","_height","clientHeight","_ghost","_element","_eventDisposables","_flashVars","triggerFlashEvent","createMicrosoftFlashElement","setupCrossBrowserFlashElement","setupElement","findEventListenerIndex","eventDisposableIndex","eventName","triggerEvent","createElement","element","setAttribute","parameter","assign","setupAccessors","propagateAttributeChanges","setupVolumeAndMutedListeners","eventFrags","detail","namespace","customEvent","createEvent","initCustomEvent","CustomEvent","parse","details","dispatchEvent","paused","getValueFromFlash","nativeFullScreen","requestFullscreen","mozRequestFullScreen","webkitRequestFullScreen","msRequestFullscreen","play","load","seek","pause","_isFullscreen","addListenerForExitFullScreen","_previousHeight","style","_previousWidth","_previousPosition","position","ActiveXObject","wscript","SendKeys","triggerFlashSetSize","screen","embedObject","missingFlashMessageElement","childrenElements","createParameterElement","innerHTML","object","appendChild","existingChildElement","children","childElement","replaceChild","outerHTML","getElementById","ignored","observer","MutationObserver","mutations","mutation","attributeName","setFlashValue","observe","attributes","disconnect","handleModifiedEvent","attachEvent","detachEvent","mutedListener","getMutedListener","volumeListener","getVolumeListener","intervalId","ghostLastMutedState","elementLastMutedState","newGhostMutedState","newElementMutedState","ghostLastVolume","elementLastVolume","newGhostVolume","newElementVolume","findIndex","eventDisposable","PhenixFlashVideo","_stream","_options","_flashPlayer","loaded","success","_loaded","_enabled","initialize","_onReady","_video","createPhenixFlashVideoElement","className","_ghostInitStyleCssText","cssText","onunload","observeInsertion","contains","parentNode","finishInitializationInDom","onError","onMute","onUnmute","onEnded","onLoadedMetadata","onLoadedData","onResize","source","initEvent","createEventObject","eventType","fireEvent","getElement","addedNodes","node","isDescendant","childList","characterData","subtree","domInsertedListener","hookUpEvents","innerHtml","defaultMuted","parent","child","readonly","mostRecentSwfFile","defaultSwfFileSrcs","local","staging","production","FlashRenderer","streamsInfo","stopPlayer","defaultSwfFileSrc","env","_streamsInfo","encodeURI","replace","_phenixVideo","_playerElement","_player","_originElement","_onStalled","stalled","_onEnded","_stopPlayer","detectFlashPlugin","finalizeStreamEnded","code","statistics","networkState","NetworkNoSource","trueCurrentTime","originStartTime","max","defaultVersion","pluginName","mimeType","_hasFlashPlugin","plugins","mimeTypes","enabledPlugin","total","ax","versionInfo","GetVariable","currentVideoTime","canReload","timeoutForStallWithoutProgressToRestart","reloadIfAble","hasElapsedMinTimeSinceLastReload","_lastReloadTime","minTimeBeforeNextReload","reload","RtmpStream","channelContext","handleStreamFailure","_channelContext","_handleStreamFailure","applySessionAndStreamPropertiesToVideoElement","mapSubscribeStatusToChannelStatus","applyStatus","offerSdp","roundTripTime","rtmpStreamManifestMatch","rtmpOption","rtmpUriAndAttributes","rtmpUri","bitrate","player","monitor","getPlayer","_monitorDisposables","playerElement","newStreamStatistics","isNaN","_monitorFailureCount","WebPlayer","manifestURI","_videoElement","_kind","_manifestURI","LiveStreaming","phenixWebPlayer","playerOptions","bandwidthToStartAt","errorObject","severity","errors","RECOVERABLE","dataBuffered","isNative","deliveryType","estimatedBandwidth","NetworkLoading","playTime","NetworkIdle","NetworkEmpty","ShakaPlayer","shaka","Player","loadPlayer","abr","defaultBandwidthEstimate","manifest","retryParameters","streaming","rebufferingGoal","bufferingGoal","bufferBehind","maxAttempts","backoffFactor","unload","destroy","playerConfig","configure","HlsPlayer","hlsPlayer","enableWorker","maxBufferLength","liveBackBufferLength","liveSyncDuration","liveDurationInfinity","liveMaxLatencyDuration","highBufferWatchdogPeriod","loadSource","attachMedia","canPlayType","src","media","offsetWidth","offsetHeight","streamController","_hlsPlayer","_shaka","_phenixWebPlayer","_pending","dashManifestUrlMatch","hlsManifestUrlMatch","manifestUrl","playlistUrl","preferNative","ChunkedStream","_streamStatistics","PeerConnectionService","precacheCreatePeerConnectionOffer","_cached","createPeerConnectionOffer","createPeerConnection","supportsAddTransceiver","audioTransceiver","direction","videoTransceiver","offerToReceiveAudio","offerToReceiveVideo","localOffer","initiateInitialPrecaching","SdpParser","_sdp","_audioCodec","applyCodec","_videoCodec","splitSdp","RtcConnectionMonitor","estimatedRoundTripTime","_estimatedRoundTripTime","_tracksToMonitor","getTracks","track","parsedSDP","_estimatedAudioCodec","audioCodec","_estimatedVideoCodec","videoCodec","updateStatistic","_isMonitorRunning","_updateTimeOut","updateStatisticLegacy","getKindForSafari11","stats","rtcStats","lastPacketReceivedTimestamp","report","currentRoundTripTime","mediaType","codec","codecId","ssrc","bytesReceived","packetsLost","packetsReceived","getCodecByType","_rtcStatistic","framesDecoded","getStatsLegacy","names","stat","RealTimeStream","listenOnStreamSetup","playMediaStreamInVideoElement","all","supportsSetConfiguration","supportsGetConfiguration","applyRtcConfiguration","submitCandidatesTimeout","cancelDiscovery","candidate","addIceCandidates","retryCallback","srcObject","onLine","reconnectPeerConnection","mediaStreamPromise","trackListener","timeoutId","streams","answer","mapSetRemoteDescriptionStatusToChannelStatus","rtcConnectionMonitor","rtcStatistic","rtcVideoStatistic","rtcAudioStatistic","audio","audioTrackFailed","videoTrackFailed","optionalPeerConnection","truncateIceServers","newRtcConfiguration","iceRestart","offer","LegacyStreamFactory","capabilities","defaultStreamTerminationReason","Channel","_context","_readOnlyVideoElement","_readOnlyToken","_readOnlyPeerConnection","_readOnlyState","_readOnlyAutoMuted","_readOnlyAutoPaused","_readOnlyTokenExpiring","_readOnlyAuthorized","_readOnlyOnline","_readOnlyLoading","_readOnlyPlaying","_readOnlyStandby","_readOnlyStopped","_readOnlyTargetLag","_readOnlyLag","_readOnlyBitrateLimit","_readOnlyResolution","_readOnlyFailureCount","_readOnlyEndPoint","_readOnlyStream","_readOnlyRtcStatistics","_readOnlyMediaStream","sessionTelemetry","_videoMetaDataChangedHandler","handleVideoMetaDataChanged","videoTelemetry","setupListenerForTimeToFirstTime","setupListenerForRebuffering","restartAfterStop","clearFailureCountTimeout","onVideoResolutionChanges","getTime","limitBitrate","processStop","cleanUpResources","stop","processStart","getUri","handleStreamFailureCallback","streamPlayer","StreamFactory","fail","getRetryInterval","min","pow","playPromise","hasAudioTrack","filter","automaticallyMuteVideoOnPlayFailureOff","Channels","defaultDiscoveryUri","_discoveryUri","edgeAuthTokenPrefix","isValidToken","encodedEdgeAuthToken","atob","substr","__SDKVERSION__","_defaultVersion","_telemetryService","TelemetryService","logRecord","_logs","sendLogsIfAble","logMessages","numberOfLogsToSend","sizeOfLogsToSend","getLogSize","sum","sendLogs","it","isObject","wellKnownSymbol","definePropertyModule","UNSCOPABLES","ArrayPrototype","f","charAt","S","unicode","toObject","toAbsoluteIndex","toLength","O","argumentsLength","endPos","$forEach","arrayMethodIsStrict","arrayMethodUsesToLength","STRICT_METHOD","USES_TO_LENGTH","callbackfn","callWithSafeIterationClosing","isArrayIteratorMethod","createProperty","getIteratorMethod","arrayLike","step","C","mapfn","mapping","iteratorMethod","toIndexedObject","createMethod","IS_INCLUDES","$this","el","fromIndex","IndexedObject","arraySpeciesCreate","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_OUT","NO_HOLES","that","specificCreate","boundFunction","some","every","filterOut","fails","V8_VERSION","SPECIES","METHOD_NAME","foo","Boolean","DESCRIPTORS","has","thrower","ACCESSORS","argument0","argument1","aFunction","IS_RIGHT","memo","left","right","originalArray","anObject","iteratorClose","ENTRIES","ITERATOR","SAFE_CLOSING","called","iteratorWithReturn","exec","SKIP_CLOSING","ITERATION_SUPPORT","TO_STRING_TAG_SUPPORT","classofRaw","TO_STRING_TAG","CORRECT_ARGUMENTS","tag","tryGet","callee","ownKeys","getOwnPropertyDescriptorModule","keys","getOwnPropertyDescriptor","MATCH","regexp","error1","error2","F","IteratorPrototype","createPropertyDescriptor","setToStringTag","Iterators","returnThis","IteratorConstructor","NAME","bitmap","toPrimitive","propertyKey","DatePrototype","nativeDateToISOString","NaN","isFinite","RangeError","year","getUTCFullYear","getUTCMilliseconds","sign","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","$","createIteratorConstructor","createNonEnumerableProperty","redefine","IS_PURE","IteratorsCore","BUGGY_SAFARI_ITERATORS","KEYS","VALUES","Iterable","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","methods","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","proto","forced","wrappedWellKnownSymbolModule","global","EXISTS","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","classof","process","getBuiltIn","versions","v8","setGlobal","copyConstructorProperties","isForced","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","noTargetGet","sham","regexpExec","REPLACE_SUPPORTS_NAMED_GROUPS","re","groups","a","REPLACE_KEEPS_$0","REPLACE","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","flags","nativeRegExpMethod","nativeMethod","str","arg2","forceStringMethod","stringMethod","regexMethod","RegExp","b","c","factories","construct","argsLength","list","Function","partArgs","variable","check","globalThis","g","hasOwnProperty","propertyIsEnumerable","dummy","Wrapper","NewTarget","NewTargetPrototype","store","functionToString","inspectSource","set","NATIVE_WEAK_MAP","objectHas","shared","sharedKey","hiddenKeys","WeakMap","wmget","wmhas","wmset","metadata","facade","STATE","enforce","getterFor","replacement","feature","detection","normalize","POLYFILL","NATIVE","toLowerCase","isRegExp","Result","iterable","unboundFunction","iterFn","AS_ENTRIES","IS_ITERATOR","INTERRUPTED","condition","callFn","returnMethod","PrototypeOfArrayIteratorPrototype","arrayIterator","flush","head","last","notify","toggle","macrotask","IS_IOS","IS_NODE","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","domain","exit","enter","createTextNode","nextTick","task","getOwnPropertySymbols","searchParams","toJSON","sort","href","host","hash","PromiseCapability","$$resolve","$$reject","trim","whitespaces","$parseInt","hex","radix","objectKeys","getOwnPropertySymbolsModule","propertyIsEnumerableModule","nativeAssign","A","B","symbol","alphabet","chr","T","j","activeXDocument","defineProperties","enumBugKeys","html","documentCreateElement","IE_PROTO","EmptyConstructor","scriptTag","content","LT","NullProtoObject","iframeDocument","iframe","write","temp","parentWindow","NullProtoObjectViaActiveX","display","contentWindow","open","Properties","IE8_DOM_DEFINE","nativeDefineProperty","P","Attributes","nativeGetOwnPropertyDescriptor","nativeGetOwnPropertyNames","windowNames","getOwnPropertyNames","getWindowNames","internalObjectKeys","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","nativePropertyIsEnumerable","NASHORN_BUG","1","V","aPossiblePrototype","setter","CORRECT_SETTER","TO_ENTRIES","getOwnPropertyNamesModule","newPromiseCapability","promiseCapability","InternalStateModule","getInternalState","enforceInternalState","TEMPLATE","unsafe","simple","R","re1","re2","regexpFlags","stickyHelpers","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","lastIndex","UNSUPPORTED_Y","BROKEN_CARET","NPCG_INCLUDED","reCopy","sticky","charsAdded","strCopy","multiline","input","ignoreCase","dotAll","RE","s","is","y","CONSTRUCTOR_NAME","TAG","uid","SHARED","mode","copyright","defaultConstructor","toInteger","requireObjectCoercible","CONVERT_TO_STRING","pos","first","second","size","charCodeAt","codeAt","IS_END","maxLength","fillString","fillLen","stringFiller","stringLength","fillStr","intMaxLength","maxInt","regexNonASCII","regexSeparators","OVERFLOW_ERROR","stringFromCharCode","fromCharCode","digitToBasic","digit","adapt","delta","numPoints","firstTime","k","baseMinusTMin","base","encode","output","inputLength","counter","extra","ucs2decode","bias","basicLength","handledCPCount","m","handledCPCountPlusOne","q","t","qMinusT","baseMinusT","label","encoded","labels","count","whitespace","ltrim","rtrim","defer","channel","port","setImmediate","clear","clearImmediate","MessageChannel","Dispatch","queue","run","runner","post","postMessage","port2","port1","onmessage","importScripts","removeChild","integer","PREFERRED_STRING","val","valueOf","postfix","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","arrayMethodHasSpeciesSupport","IS_CONCAT_SPREADABLE","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_INDEX_EXCEEDED","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","E","addToUnscopables","$filter","HAS_SPECIES_SUPPORT","$findIndex","FIND_INDEX","SKIPS_HOLES","$find","FIND","$includes","$indexOf","nativeIndexOf","NEGATIVE_ZERO","searchElement","defineIterator","ARRAY_ITERATOR","setInternalState","iterated","Arguments","nativeJoin","ES3_STRINGS","separator","$map","$reduce","CHROME_VERSION","0","nativeSlice","fin","MAXIMUM_ALLOWED_LENGTH_EXCEEDED","deleteCount","insertCount","actualDeleteCount","to","actualStart","INVALID_DATE","nativeDateToString","FunctionPrototype","FunctionPrototypeToString","nameRE","inheritIfRequired","NUMBER","NativeNumber","NumberPrototype","BROKEN_CLASSOF","toNumber","third","maxCode","digits","NumberWrapper","FAILS_ON_PRIMITIVES","getOwnPropertyDescriptors","nativeKeys","$values","parseIntImplementation","NativePromise","speciesConstructor","real","onFinally","isFunction","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","redefineAll","setSpecies","anInstance","iterate","checkCorrectnessOfIteration","microtask","hostReportErrors","newPromiseCapabilityModule","perform","PROMISE","getInternalPromiseState","PromiseConstructor","$fetch","newGenericPromiseCapability","DISPATCH_EVENT","NATIVE_REJECTION_EVENT","PromiseRejectionEvent","UNHANDLED_REJECTION","FakePromise","INCORRECT_ITERATION","isThenable","isReject","notified","chain","reactions","exited","reaction","rejection","onHandleUnhandled","onUnhandled","isUnhandled","emit","unwrap","internalReject","internalResolve","wrapper","executor","wrap","r","capability","$promiseResolve","alreadyCalled","nativeConstruct","NEW_TARGET_BUG","ARGS_BUG","Target","newTarget","$args","TO_STRING","RegExpPrototype","nativeToString","NOT_GENERIC","INCORRECT_NAME","rf","notARegExp","correctIsRegExpLogic","nativeEndsWith","CORRECT_IS_REGEXP_LOGIC","searchString","endPosition","STRING_ITERATOR","point","fixRegExpWellKnownSymbolLogic","advanceStringIndex","regExpExec","nativeMatch","maybeCallNative","matcher","res","rx","fullUnicode","matchStr","$padStart","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","UNSAFE_SUBSTITUTE","searchValue","replaceValue","replacer","functionalReplace","results","accumulatedResult","nextSourcePosition","matched","captures","namedCaptures","replacerArgs","getSubstitution","tailPos","symbols","ch","capture","sameValue","SEARCH","nativeSearch","searcher","previousLastIndex","callRegExpExec","arrayPush","MAX_UINT32","SUPPORTS_Y","SPLIT","nativeSplit","internalSplit","limit","lim","lastLength","lastLastIndex","separatorCopy","splitter","unicodeMatching","z","nativeStartsWith","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","native","desc","nativeObjectCreate","getOwnPropertyNamesExternal","defineWellKnownSymbol","HIDDEN","TO_PRIMITIVE","$Symbol","$stringify","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","QObject","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","isSymbol","$defineProperty","$defineProperties","properties","$getOwnPropertySymbols","$propertyIsEnumerable","$getOwnPropertyDescriptor","$getOwnPropertyNames","IS_OBJECT_PROTOTYPE","keyFor","sym","useSetter","useSimple","space","$replacer","DOMIterables","COLLECTION_NAME","Collection","CollectionPrototype","ArrayIteratorMethods","ArrayValues","scheduler","boundArgs","USE_NATIVE_URL","hasOwn","getIterator","Headers","URL_SEARCH_PARAMS","URL_SEARCH_PARAMS_ITERATOR","getInternalParamsState","getInternalIteratorState","plus","sequences","percentSequence","bytes","percentDecode","sequence","decodeURIComponent","deserialize","serialize","encodeURIComponent","parseSearchParams","query","attribute","entry","shift","updateSearchParams","validateArgumentsLength","passed","required","URLSearchParamsIterator","params","URLSearchParamsConstructor","entryIterator","entryNext","updateURL","URLSearchParamsPrototype","getAll","found","entriesIndex","sliceIndex","headers","getState","EOF","arrayFrom","toASCII","URLSearchParamsModule","NativeURL","getInternalSearchParamsState","getInternalURLState","INVALID_SCHEME","INVALID_HOST","INVALID_PORT","ALPHA","ALPHANUMERIC","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","parseHost","codePoints","parseIPv6","isSpecial","parseIPv4","percentEncode","C0ControlPercentEncodeSet","partsLength","numbers","part","number","ipv4","pop","numbersSeen","ipv4Piece","swaps","swap","address","pieceIndex","compress","pointer","char","serializeHost","ignore0","ipv6","maxIndex","currStart","currLength","findLongestZeroSequence","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","specialSchemes","ftp","file","http","https","ws","wss","scheme","includesCredentials","password","cannotHaveUsernamePasswordPort","cannotBeABaseURL","isWindowsDriveLetter","normalized","startsWithWindowsDriveLetter","shortenURLsPath","pathSize","isSingleDot","segment","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","AUTHORITY","HOST","HOSTNAME","PORT","FILE","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","QUERY","FRAGMENT","parseURL","stateOverride","bufferCodePoints","failure","buffer","seenAt","seenBracket","seenPasswordToken","fragment","codePoint","encodedCodePoints","URLConstructor","baseState","urlString","searchParamsState","serializeURL","getOrigin","getProtocol","getUsername","getPassword","getHost","getHostname","getPort","getPathname","getSearch","getSearchParams","getHash","URLPrototype","accessorDescriptor","getter","nativeCreateObjectURL","createObjectURL","nativeRevokeObjectURL","revokeObjectURL","blob","Op","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","context","Context","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","async","reverse","skipTempReset","prev","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","support","Blob","viewClasses","isArrayBufferView","ArrayBuffer","isView","normalizeName","normalizeValue","iteratorFor","header","consumed","bodyUsed","fileReaderReady","reader","onload","onerror","readBlobAsArrayBuffer","FileReader","readAsArrayBuffer","bufferClone","buf","view","Uint8Array","byteLength","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","_bodyFormData","DataView","_bodyArrayBuffer","rejected","arrayBuffer","byteOffset","readAsText","chars","readArrayBufferAsText","decode","oldValue","thisArg","Request","upcased","credentials","signal","toUpperCase","referrer","reParamSearch","form","Response","bodyInit","statusText","clone","redirectStatuses","redirect","DOMException","request","aborted","xhr","XMLHttpRequest","abortXhr","abort","rawHeaders","getAllResponseHeaders","line","responseURL","responseText","ontimeout","onabort","fixUrl","withCredentials","responseType","setRequestHeader","onreadystatechange","send","polyfill","__webpack_module_cache__","__webpack_require__","moduleId","__webpack_modules__","__esModule","d","definition","prop"],"mappings":"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","file":"channels.js","sourcesContent":["(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[\"phenix\"] = factory();\n\telse\n\t\troot[\"phenix\"] = factory();\n})(self, function() {\nreturn ","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","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}\n\nmodule.exports = _nonIterableRest;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;","var _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;","module.exports = require(\"regenerator-runtime\");\n","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport Disposable from '../lang/Disposable';\nimport Subject from '../rx/Subject';\nimport ReadOnlySubject from '../rx/ReadOnlySubject';\nimport DisposableList from '../lang/DisposableList';\n\nconst defaultDocumentFocusIntervalTimeout = 3000;\n\nexport default class ApplicationActivityMonitor {\n private readonly _disposables: DisposableList = new DisposableList();\n private readonly _readOnlyIsForeground: ReadOnlySubject<boolean>;\n private readonly _isForeground: Subject<boolean>;\n private _timeOfLastTabFocusChange: number = Date.now();\n private _documentFocusInterval: number;\n\n constructor() {\n this._isForeground = new Subject<boolean>(true);\n this._readOnlyIsForeground = new ReadOnlySubject(this._isForeground);\n this.detectTabFocusChange();\n }\n\n get isForeground(): ReadOnlySubject<boolean> {\n return this._readOnlyIsForeground;\n }\n\n getTimeSinceLastChange(): number {\n return Date.now() - this._timeOfLastTabFocusChange;\n }\n\n dispose(): void {\n this._disposables.dispose();\n }\n\n private detectTabFocusChange(): void {\n let hidden;\n let visibilityChange;\n\n if (typeof document !== 'object') {\n return;\n }\n\n // Ignored as typescript does not have legacy getStats types\n /* eslint-disable @typescript-eslint/ban-ts-ignore */\n // @ts-ignore\n if (typeof document.msHidden !== 'undefined') {\n hidden = 'msHidden';\n visibilityChange = 'msvisibilitychange';\n // @ts-ignore\n } else if (typeof document.webkitHidden !== 'undefined') {\n hidden = 'webkitHidden';\n visibilityChange = 'webkitvisibilitychange';\n } else if (typeof document.hidden !== 'undefined') { // Opera 12.10 and Firefox 18 and later support\n hidden = 'hidden';\n visibilityChange = 'visibilitychange';\n }\n /* eslint-enable */\n\n const handleVisibilityChange = (): void => {\n const isForeground = !document[hidden];\n\n this.setFocusState(isForeground);\n };\n\n if (typeof document.addEventListener !== 'undefined' && typeof document[hidden] !== 'undefined') {\n document.addEventListener(visibilityChange, handleVisibilityChange, false);\n\n this._disposables.add(new Disposable(() => {\n document.removeEventListener(visibilityChange, handleVisibilityChange, false);\n }));\n } else {\n this.listenForDocumentFocus.call(this);\n }\n }\n\n private listenForDocumentFocus(): void {\n this._documentFocusInterval = window.setInterval(() => {\n const isForeground = document.hasFocus();\n\n this.setFocusState(isForeground);\n }, defaultDocumentFocusIntervalTimeout);\n\n this._disposables.add(new Disposable(() => {\n if (this._documentFocusInterval) {\n clearInterval(this._documentFocusInterval);\n }\n\n this._documentFocusInterval = null;\n }));\n }\n\n private setFocusState(isForeground): void {\n if (this._isForeground === isForeground) {\n return;\n }\n\n this._isForeground.value = isForeground;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nexport default class BrowserDetector {\n private static readonly _browserNameAndVersionRegex = /(MSIE|(?!Gecko.+)Firefox|(?!AppleWebKit.+Chrome.+)Safari|(?!AppleWebKit.+)Chrome|AppleWebKit(?!.+Chrome|.+Safari)|Gecko(?!.+Firefox))(?: |\\/)([\\d.apre]+)/g;\n private static readonly _browserNameAndVersion = BrowserDetector.parseBrowserNameAndVersion();\n private static readonly _browserName = BrowserDetector.parseBrowserName();\n private static readonly _browserMajorVersion = BrowserDetector.parseBrowserMajorVersion();\n\n private static readonly _isChrome69 = BrowserDetector._browserNameAndVersion.includes('Chrome/69.');\n private static readonly _isChrome70 = BrowserDetector._browserNameAndVersion.includes('Chrome/70.');\n private static readonly _isChrome71 = BrowserDetector._browserNameAndVersion.includes('Chrome/71.');\n private static readonly _isChrome72 = BrowserDetector._browserNameAndVersion.includes('Chrome/72.');\n private static readonly _isChrome74 = BrowserDetector._browserNameAndVersion.includes('Chrome/74.');\n private static readonly _isChrome75 = BrowserDetector._browserNameAndVersion.includes('Chrome/75.');\n private static readonly _isChrome76 = BrowserDetector._browserNameAndVersion.includes('Chrome/76.');\n private static readonly _isChrome77 = BrowserDetector._browserNameAndVersion.includes('Chrome/77.');\n\n static get browserNameAndVersion(): string {\n return BrowserDetector._browserNameAndVersion;\n }\n\n static get browserName(): string {\n return this._browserName;\n }\n\n static get browserMajorVersion(): number {\n return this._browserMajorVersion;\n }\n\n static get isChrome69(): boolean {\n return BrowserDetector._isChrome69;\n }\n\n static get isChrome70(): boolean {\n return BrowserDetector._isChrome70;\n }\n\n static get isChrome71(): boolean {\n return BrowserDetector._isChrome71;\n }\n\n static get isChrome72(): boolean {\n return BrowserDetector._isChrome72;\n }\n\n static get isChrome74(): boolean {\n return BrowserDetector._isChrome74;\n }\n\n static get isChrome75(): boolean {\n return BrowserDetector._isChrome75;\n }\n\n static get isChrome76(): boolean {\n return BrowserDetector._isChrome76;\n }\n\n static get isChrome77(): boolean {\n return BrowserDetector._isChrome77;\n }\n\n private static parseBrowserNameAndVersion(): string {\n if (!navigator || !navigator.userAgent) {\n return '';\n }\n\n const browserNameAndVersion = navigator.userAgent.match(BrowserDetector._browserNameAndVersionRegex);\n\n if (browserNameAndVersion && browserNameAndVersion[0]) {\n return browserNameAndVersion[0];\n }\n\n return BrowserDetector.parseBrowserNameAndVersionForIE();\n }\n\n private static parseBrowserName(): string {\n if (!BrowserDetector._browserNameAndVersion) {\n return '';\n }\n\n const browserNameList = BrowserDetector._browserNameAndVersion.split('/');\n\n if (!browserNameList || !browserNameList[0]) {\n return '';\n }\n\n return browserNameList[0];\n }\n\n private static parseBrowserMajorVersion(): number {\n if (!BrowserDetector._browserNameAndVersion) {\n return 0;\n }\n\n const browserVersionList = BrowserDetector._browserNameAndVersion.split('/');\n\n if (!browserVersionList || !browserVersionList[1]) {\n return 0;\n }\n\n const fullVersion = browserVersionList[1];\n\n if (!fullVersion) {\n return 0;\n }\n\n return Number(fullVersion.split('.')[0]) || 0;\n }\n\n private static parseBrowserNameAndVersionForIE(): string {\n if (!navigator || !navigator.userAgent) {\n return '';\n }\n\n const userAgent = navigator.userAgent;\n const msie = userAgent.indexOf('MSIE ');\n\n if (msie > 0) {\n // IE 10 or older => return version number\n return `IE/${parseInt(userAgent.substring(msie + 5, userAgent.indexOf('.', msie)), 10)}`;\n }\n\n const trident = userAgent.indexOf('Trident/');\n\n if (trident > 0) {\n // IE 11 => return version number\n const version = userAgent.indexOf('rv:');\n\n return `IE/${parseInt(userAgent.substring(version + 3, userAgent.indexOf('.', version)), 10)}`;\n }\n\n return '';\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport TelemetryDefault from '../metrics/TelemetryDefault';\nimport TelemetryLevelMapping from '../metrics/TelemetricLevelMapping';\nimport LoggingLevelMapping from '../logger/LoggingLevelMapping';\nimport LoggerDefaults from '../logger/LoggerDefaults';\n\nexport default class ConfigurationParameterReader {\n getStringValue(name: string): string {\n return this.readConfigurationParameterValue(name) ||\n this.readConfigurationParameterURIValue(`${name}-uri-parameter-name`) ||\n this.defaultStringValue[name];\n }\n\n getBooleanValue(name: string): boolean {\n const value = this.readConfigurationParameterValue(name);\n\n if (value) {\n return value === 'true' || value === '1' || value === 'On';\n }\n\n const valueFromUri = this.readConfigurationParameterURIValue(`${name}-uri-parameter-name`);\n\n if (valueFromUri) {\n return value === 'true' || value === '1' || value === 'On';\n }\n\n return this.defaultBooleanValue[name] === true;\n }\n\n private get defaultStringValue(): { [name: string]: string} {\n return {\n 'phenix-metrics-level': TelemetryLevelMapping.convertTelemetryLevelToTelemetryLevelType(TelemetryDefault.defaultTelemetryLevel),\n 'phenix-logging-level': LoggingLevelMapping.convertLoggingLevelToLoggingLevelType(LoggerDefaults.defaultLoggingLevel),\n 'phenix-console-logging-level': LoggingLevelMapping.convertLoggingLevelToLoggingLevelType(LoggerDefaults.defaultConsoleLoggingLevel),\n 'phenix-telemetry-logging-level': LoggingLevelMapping.convertLoggingLevelToLoggingLevelType(LoggerDefaults.defaultTelemetryLoggingLevel),\n 'phenix-channel-token': '',\n 'phenix-uri': '',\n 'phenix-base-uri': ''\n };\n }\n\n private get defaultBooleanValue(): { [name: string]: boolean } {\n return {\n 'phenix-automatically-retry-on-failure': true,\n 'phenix-automatically-reconnect-peer-connection': true\n };\n }\n\n private readConfigurationParameterValue(name: string): string {\n const metaValue = document.querySelector(`meta[name='${name}']`);\n\n if (!metaValue) {\n return;\n }\n\n const value = metaValue.getAttribute('value');\n\n if (!value) {\n return;\n }\n\n return value;\n }\n\n private readConfigurationParameterURIValue(name: string): string {\n const valueURIParameterName = this.readConfigurationParameterValue(name);\n\n if (!valueURIParameterName) {\n return;\n }\n\n const value = new URLSearchParams(location.search).get(valueURIParameterName) || undefined;\n\n if (!value) {\n return;\n }\n\n return value;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\ndeclare const __PRIVACY_MODE__: boolean;\n\nexport default class PrivacyMode {\n private static _isPrivate: boolean;\n\n static get isPrivate(): boolean {\n return this._isPrivate;\n }\n\n static applyIsPrivate(): void {\n try {\n this._isPrivate = __PRIVACY_MODE__;\n } catch (e) {\n this._isPrivate = false;\n }\n }\n}\n\nPrivacyMode.applyIsPrivate();","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport IDisposable from './IDisposable';\n\nexport default class Disposable implements IDisposable {\n private _disposed: boolean;\n private _disposable: () => void;\n\n constructor(disposable: () => void) {\n this._disposed = false;\n this._disposable = disposable;\n }\n\n dispose(): void {\n if (this._disposed) {\n return;\n }\n\n this._disposed = true;\n\n return this._disposable.call(this);\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport IDisposable from './IDisposable';\n\nexport default class DisposableList {\n private readonly _list: IDisposable[] = [];\n\n add(disposable: IDisposable): void {\n this._list.push(disposable);\n }\n\n dispose(): void {\n this._list.forEach(disposable => disposable.dispose());\n this._list.length = 0;\n }\n\n toString(): string {\n return `DisposableList[disposables=${this._list.length}]`;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nexport default class Strings {\n static random(length: number): string {\n const random13Characters = (): string => {\n return Math.random().toString(16).substring(2, 15);\n };\n\n const loops: number = Math.ceil(length / 13);\n\n return new Array(loops).fill(random13Characters).reduce((string, func) => {\n return string + func();\n }, '').substring(0, length);\n }\n\n private constructor() {\n throw new Error('Strings is a static class that may not be instantiated');\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nexport function assertUnreachable(x: never): never {\n throw new Error(`Unexpected value [${x}]. This should never be reached`);\n}\n\nexport default assertUnreachable;","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport {IAppender} from './IAppender';\n\nexport default class Appenders {\n private _appenders: Array<IAppender> = [];\n\n get value(): Array<IAppender> {\n return this._appenders;\n }\n\n add(appender: IAppender): void {\n this._appenders.push(appender);\n }\n\n remove(appender): void {\n this._appenders = this._appenders.reduce((items, item) => {\n if (!(item === appender)) {\n items.push(item);\n }\n\n return items;\n }, [] as Array<IAppender>);\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport {IAppender} from './IAppender';\nimport {LoggingLevel} from './Logger';\n\nexport default class ConsoleAppender implements IAppender {\n private readonly _threshold: LoggingLevel;\n\n log(logLevel: LoggingLevel, message: string, category: string, date: Date): void {\n if (logLevel < this._threshold) {\n return;\n }\n\n const fullMessage = `${date.toISOString()} [${category}] [${LoggingLevel[logLevel]}] ${message}`;\n\n if (logLevel < LoggingLevel.Warn) {\n console.log(fullMessage);\n\n return;\n }\n\n console.error(fullMessage);\n }\n\n constructor(threshold: LoggingLevel) {\n this._threshold = threshold;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {IAppender} from './IAppender';\nimport Appenders from './Appenders';\nimport LoggingThreshold from './LoggingThreshold';\n\nexport enum LoggingLevel {\n All = -1,\n Trace = 10,\n Debug = 20,\n Info = 30,\n Warn = 40,\n Error = 50,\n Fatal = 60,\n Off = 100,\n}\n\nexport type LoggingLevelInputTypes = 'Off' | 'Trace' | 'Debug' | 'Info' | 'Warn' | 'Error' | 'Fatal' | 'All';\n\nexport default class Logger {\n private readonly _category: string;\n private readonly _appenders: Appenders;\n private readonly _threshold: LoggingThreshold;\n\n get category(): string {\n return this._category;\n }\n\n get appenders(): Appenders {\n return this._appenders;\n }\n\n get threshold(): LoggingThreshold {\n return this._threshold;\n }\n\n trace(...args: any): void {\n if (!this._threshold.value || this._threshold.value > LoggingLevel.Trace) {\n return;\n }\n\n this.log(LoggingLevel.Trace, args);\n }\n\n debug(...args: any): void {\n if (!this._threshold.value || this._threshold.value > LoggingLevel.Debug) {\n return;\n }\n\n this.log(LoggingLevel.Debug, args);\n }\n\n info(...args: any): void {\n if (!this._threshold.value || this._threshold.value > LoggingLevel.Info) {\n return;\n }\n\n this.log(LoggingLevel.Info, args);\n }\n\n warn(...args: any): void {\n if (!this._threshold.value || this._threshold.value > LoggingLevel.Warn) {\n return;\n }\n\n this.log(LoggingLevel.Warn, args);\n }\n\n error(...args: any): void {\n if (!this._threshold.value || this._threshold.value > LoggingLevel.Error) {\n return;\n }\n\n this.log(LoggingLevel.Error, args);\n }\n\n fatal(...args: any): void {\n if (!this._threshold.value || this._threshold.value > LoggingLevel.Fatal) {\n return;\n }\n\n this.log(LoggingLevel.Fatal, args);\n }\n\n private log(level: number, args: any): void {\n const date = new Date();\n const message = this.replacePlaceholders(args);\n\n this._appenders.value.forEach((appender: IAppender) => {\n appender.log(level, message, this.category, date);\n });\n }\n\n private replacePlaceholders(args: any): string {\n let replacePlaceholdersString = args[0];\n let index = 0;\n\n while (replacePlaceholdersString.indexOf && args.length > 1 && index >= 0) {\n index = replacePlaceholdersString.indexOf('%', index);\n\n if (index > 0) {\n const type = replacePlaceholdersString.substring(index + 1, index + 2);\n\n switch (type) {\n case '%':\n // Escaped '%%' turns into '%'\n replacePlaceholdersString = replacePlaceholdersString.substring(0, index) + replacePlaceholdersString.substring(index + 1);\n index++;\n\n break;\n case 's':\n case 'd':\n // Replace '%d' or '%s' with the argument\n args[0] = replacePlaceholdersString = this.replaceArgument(\n this.toString(args[1]),\n replacePlaceholdersString,\n index\n );\n args.splice(1, 1);\n\n break;\n case 'j':\n // Replace %j' with the argument\n args[0] = replacePlaceholdersString = this.replaceArgument(\n this.stringify(args[1]),\n replacePlaceholdersString,\n index\n );\n\n args.splice(1, 1);\n\n break;\n default:\n return args.toString();\n }\n }\n }\n\n if (args.length > 1) {\n args = args.reduce((accumulator, currentValue, index, array) => {\n if (index + 1 === array.length && currentValue instanceof Error) {\n return accumulator + '\\n' + this.toString(currentValue.stack);\n }\n\n return accumulator + `[${this.toString(currentValue)}]`;\n });\n }\n\n return args.toString();\n }\n\n private stringify(arg: any): string {\n const cache = [];\n\n try {\n return JSON.stringify(\n arg instanceof Error ? this.toString(arg) : arg,\n (key, value) => {\n if (!!value && value instanceof Object) {\n if (cache.includes(value)) {\n return '<recursive>';\n }\n\n cache.push(value);\n }\n\n return value;\n },\n 2\n );\n } catch (e) {\n return '[object invalid JSON.stringify]';\n }\n }\n\n private replaceArgument(argument: any, replacePlaceholdersString: string, index: number): string {\n return replacePlaceholdersString.substring(0, index) + this.toString(argument) + replacePlaceholdersString.substring(index + 2);\n }\n\n private toString(data: any): string {\n if (typeof data === 'string') {\n return data;\n }\n\n if (typeof data === 'boolean') {\n return data ? 'true' : 'false';\n }\n\n if (typeof data === 'number') {\n return data.toString();\n }\n\n let toStringStr = '';\n\n if (data) {\n if (typeof data === 'function') {\n toStringStr = data.toString();\n } else if (data instanceof Object) {\n try {\n toStringStr = data.toString();\n } catch (e) {\n toStringStr = '[object invalid toString()]';\n }\n }\n }\n\n return toStringStr;\n }\n\n constructor(category: string, appenders: Appenders, threshold: LoggingThreshold) {\n this._category = category;\n this._appenders = appenders;\n this._threshold = threshold;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport PrivacyMode from '../dom/PrivacyMode';\nimport {LoggingLevel} from '../logger/Logger';\n\nexport default class LoggerDefaults {\n static get defaultLoggingLevel(): LoggingLevel {\n return PrivacyMode.isPrivate ? LoggingLevel.Off : LoggingLevel.All;\n }\n\n static get defaultConsoleLoggingLevel(): LoggingLevel {\n return PrivacyMode.isPrivate ? LoggingLevel.Off : LoggingLevel.All;\n }\n\n static get defaultTelemetryLoggingLevel(): LoggingLevel {\n return LoggingLevel.Info;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport {ILogger} from './LoggerInterface';\nimport Logger, {LoggingLevel} from './Logger';\nimport Appenders from './Appenders';\nimport LoggingThreshold from './LoggingThreshold';\nimport ConsoleAppender from './ConsoleAppender';\nimport TelemetryAppender from '../telemetry/TelemetryApender';\nimport TelemetryConfiguration from '../telemetry/TelemetryConfiguration';\nimport ConfigurationParameterReader from '../dom/ConfigurationParameterReader';\nimport {IConfigurationParameterReader} from '../dom/IConfigurationParamaterReader';\nimport LoggerDefaults from './LoggerDefaults';\n\nexport default class LoggerFactory {\n private static _configurationParameterReader: IConfigurationParameterReader = new ConfigurationParameterReader();\n private static _loggers: {[category: string]: ILogger} = {};\n private static _appenders: Appenders = new Appenders();\n private static _threshold: LoggingThreshold = new LoggingThreshold();\n private static _telemetryConfiguration: TelemetryConfiguration = new TelemetryConfiguration();\n\n static get telemetryConfiguration(): TelemetryConfiguration {\n return LoggerFactory._telemetryConfiguration;\n }\n\n static getLogger(category: string): ILogger {\n if (typeof category !== 'string') {\n category = 'SDK';\n }\n\n const logger = LoggerFactory._loggers[category];\n\n if (logger) {\n return logger;\n }\n\n return LoggerFactory._loggers[category] = new Logger(category, this._appenders, this._threshold);\n }\n\n static applyLoggerConfigFromParameterConfiguration(): void {\n LoggerFactory.applyLoggingLevel();\n LoggerFactory.applyAppenderLoggingLevel('console', LoggerFactory.applyConsoleLogger.bind(this));\n LoggerFactory.applyAppenderLoggingLevel('telemetry', LoggerFactory.applyTelemetryLogger.bind(this));\n }\n\n private static applyLoggingLevel(): void {\n const parameterValue = this._configurationParameterReader.getStringValue('phenix-logging-level');\n\n if (LoggingLevel[parameterValue]) {\n this._threshold.setThreshold(LoggingLevel[parameterValue]);\n }\n\n return;\n }\n\n private static applyAppenderLoggingLevel(name: string, applyAppender: (level: LoggingLevel) => void): void {\n const parameterValue = this._configurationParameterReader.getStringValue(`phenix-${name}-logging-level`);\n\n if (parameterValue === 'Off') {\n return;\n }\n\n applyAppender(LoggingLevel[parameterValue]);\n }\n\n private static applyConsoleLogger(level: LoggingLevel): void {\n this._appenders.add(new ConsoleAppender(level || LoggerDefaults.defaultConsoleLoggingLevel));\n }\n\n private static applyTelemetryLogger(level: LoggingLevel): void {\n this._telemetryConfiguration.threshold = level || LoggerDefaults.defaultTelemetryLoggingLevel;\n\n this._appenders.add(new TelemetryAppender(this._telemetryConfiguration));\n }\n\n private constructor() {\n throw new Error('LoggerFactory is a static class that may not be instantiated');\n }\n}\n\nLoggerFactory.applyLoggerConfigFromParameterConfiguration();","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport assertUnreachable from '../lang/assertUnreachable';\nimport {LoggingLevel, LoggingLevelInputTypes} from './Logger';\n\nexport default class LoggingLevelMapping {\n static convertLoggingLevelToLoggingLevelType(loggingLevel: LoggingLevel): LoggingLevelInputTypes {\n switch (loggingLevel) {\n case LoggingLevel.Off:\n return 'Off';\n case LoggingLevel.Trace:\n return 'Trace';\n case LoggingLevel.Debug:\n return 'Debug';\n case LoggingLevel.Info:\n return 'Trace';\n case LoggingLevel.Warn:\n return 'Warn';\n case LoggingLevel.Error:\n return 'Error';\n case LoggingLevel.Fatal:\n return 'Fatal';\n case LoggingLevel.All:\n return 'All';\n default:\n assertUnreachable(loggingLevel);\n }\n }\n\n static convertLoggingLevelTypeToLoggingLevel(loggingLevelType: LoggingLevelInputTypes): LoggingLevel {\n switch (loggingLevelType) {\n case 'Off':\n return LoggingLevel.Off;\n case 'Trace':\n return LoggingLevel.Trace;\n case 'Debug':\n return LoggingLevel.Debug;\n case 'Info':\n return LoggingLevel.Info;\n case 'Warn':\n return LoggingLevel.Warn;\n case 'Error':\n return LoggingLevel.Error;\n case 'Fatal':\n return LoggingLevel.Fatal;\n case 'All':\n return LoggingLevel.All;\n default:\n assertUnreachable(loggingLevelType);\n }\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport LoggerDefaults from './LoggerDefaults';\nimport {LoggingLevel} from './Logger';\n\nexport default class LoggingThreshold {\n private _threshold: LoggingLevel = LoggerDefaults.defaultLoggingLevel;\n\n get value(): LoggingLevel {\n return this._threshold;\n }\n\n setThreshold(threshold: LoggingLevel): void {\n this._threshold = threshold;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport {TelemetryLevel} from './MetricsConfiguration';\nimport assertUnreachable from '../lang/assertUnreachable';\nimport MetricsType from './MetricsType';\n\nexport default class MetricType {\n private readonly _metrics: MetricsType;\n\n constructor(metrics: MetricsType) {\n this._metrics = metrics;\n }\n\n getName(): string {\n return MetricsType[this._metrics];\n }\n\n getTelemetryLevel(): TelemetryLevel {\n switch (this._metrics) {\n case MetricsType.TimeToFirstFrame:\n return TelemetryLevel.Essential;\n case MetricsType.ChannelCreationTimeToFirstFrame:\n return TelemetryLevel.Essential;\n case MetricsType.Stalled:\n return TelemetryLevel.All;\n case MetricsType.Buffering:\n return TelemetryLevel.All;\n case MetricsType.SetupCompleted:\n return TelemetryLevel.All;\n case MetricsType.SetupFailed:\n return TelemetryLevel.All;\n case MetricsType.RoundTripTime:\n return TelemetryLevel.All;\n case MetricsType.DownlinkThroughputCapacity:\n return TelemetryLevel.All;\n case MetricsType.NetworkType:\n return TelemetryLevel.All;\n case MetricsType.ResolutionChanged:\n return TelemetryLevel.All;\n case MetricsType.ApplicationForeground:\n return TelemetryLevel.All;\n case MetricsType.ApplicationBackground:\n return TelemetryLevel.All;\n default:\n assertUnreachable(this._metrics);\n }\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport TelemetryDefault from './TelemetryDefault';\n\nexport enum TelemetryLevel {\n Off = 100,\n Essential = 10,\n All = -1\n}\n\nexport type TelemetryLevelType = 'Off' | 'Essential' | 'All';\n\nexport default class MetricsConfiguration {\n private _url = 'https://telemetry.phenixrts.com/telemetry/metrics';\n private _tenancy: string;\n private _sessionId: string;\n private _environment: string;\n private _threshold: TelemetryLevel = TelemetryDefault.defaultTelemetryLevel;\n\n get url(): string {\n return this._url;\n }\n\n set url(url: string) {\n const metricsUrl = new URL(url);\n\n metricsUrl.pathname = metricsUrl.pathname + '/metrics';\n\n this._url = metricsUrl.toString();\n }\n\n get environment(): string {\n return this._environment;\n }\n\n set environment(environment: string) {\n this._environment = environment;\n }\n\n get tenancy(): string {\n return this._tenancy;\n }\n\n set tenancy(tenancy: string) {\n this._tenancy = tenancy;\n }\n\n get sessionId(): string {\n return this._sessionId;\n }\n\n set sessionId(sessionId: string) {\n this._sessionId = sessionId;\n }\n\n get threshold(): TelemetryLevel {\n return this._threshold;\n }\n\n set threshold(threshold: TelemetryLevel) {\n this._threshold = threshold;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nimport MetricsService from './MetricsService';\nimport MetricsConfiguration, {TelemetryLevel} from './MetricsConfiguration';\nimport SDK from '../sdk/SDK';\nimport TelemetryUrl from '../sdk/TelemetryUrl';\nimport Environment from '../sdk/Environment';\nimport TelemetryLevelMapping from './TelemetricLevelMapping';\n\nexport default class MetricsFactory {\n private static _metricsServices: {[category: string]: MetricsService} = {};\n\n static getMetricsService(url: string): MetricsService {\n if (typeof url !== 'string') {\n throw new Error('ur');\n }\n\n const metricsServices = MetricsFactory._metricsServices[url];\n\n if (metricsServices) {\n return metricsServices;\n }\n\n const metricsConfiguration = new MetricsConfiguration();\n\n metricsConfiguration.sessionId = SDK.clientSessionId;\n metricsConfiguration.tenancy = SDK.tenancy.value;\n metricsConfiguration.url = TelemetryUrl.getTelemetryUrl(url);\n metricsConfiguration.environment = Environment.getEnvironmentFromUrl(url);\n\n metricsConfiguration.threshold = TelemetryLevelMapping.convertTelemetryLevelTypeToTelemetryLevel(SDK.telemetryLevel);\n\n return MetricsFactory._metricsServices[url] = new MetricsService(metricsConfiguration);\n }\n\n static setTelemetryLevel(telemetryLevel: TelemetryLevel): void {\n const metricsServices = Object.values(MetricsFactory._metricsServices);\n\n if (metricsServices && metricsServices.length) {\n metricsServices.forEach(metricsService => {\n const metricsConfiguration = metricsService.metricsConfiguration;\n\n metricsConfiguration.threshold = telemetryLevel;\n });\n }\n }\n\n private constructor() {\n throw new Error('LoggerFactory is a static class that may not be instantiated');\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport VersionManager from '../sdk/version/VersionManager';\nimport MetricsConfiguration from './MetricsConfiguration';\nimport MetricType from './MetricType';\nimport MetricsType from './MetricsType';\n\nconst requestSizeLimit = 1024;\n\ninterface IValue {\n string?: string;\n uint64?: number;\n float?: number;\n}\n\ninterface IMetricRecord {\n timestamp: string;\n tenancy: string;\n sessionId: string;\n streamId: string;\n metric: string;\n value: IValue;\n previousValue: IValue;\n fullQualifiedName: string;\n environment: string;\n version: string;\n runtime: number;\n resource?: string;\n kind?: string;\n}\n\ninterface IMetric {\n streamId?: string;\n metricType: MetricsType;\n value?: IValue;\n previousValue?: IValue;\n runtime: number;\n resource?: string;\n kind?: string;\n}\n\nexport default class MetricsService {\n private readonly _metricsConfiguration: MetricsConfiguration;\n private _metrics: Array<IMetricRecord> = [];\n private _isSending: boolean;\n private _domain = location.hostname;\n\n constructor(metricsConfiguration: MetricsConfiguration) {\n this._metricsConfiguration = metricsConfiguration;\n }\n\n get metricsConfiguration(): MetricsConfiguration {\n return this._metricsConfiguration;\n }\n\n push(metric: IMetric): void {\n const {streamId, value, previousValue, runtime, resource, kind} = metric;\n const metricType = new MetricType(metric.metricType);\n\n if (this._metricsConfiguration.threshold > metricType.getTelemetryLevel()) {\n return;\n }\n\n const metricRecord = {\n timestamp: new Date().toISOString(),\n tenancy: this._metricsConfiguration.tenancy,\n sessionId: this._metricsConfiguration.sessionId,\n streamId,\n metric: metricType.getName(),\n value,\n previousValue,\n fullQualifiedName: this._domain,\n environment: this._metricsConfiguration.environment,\n version: VersionManager.sdkVersion,\n runtime,\n resource,\n kind\n };\n\n this._metrics.push(metricRecord);\n\n const ignored = this.sendMetricsIfAble();\n }\n\n private async sendMetrics(metricsMessages: Array<IMetricRecord>): Promise<Response | void> {\n const formData = new FormData();\n\n formData.append('jsonBody', JSON.stringify({records: metricsMessages}));\n\n return await fetch(this._metricsConfiguration.url, {\n method: 'POST',\n body: formData\n });\n }\n\n private async sendMetricsIfAble(): Promise<Response | void> {\n if (this._metrics.length <= 0 || this._isSending) {\n return;\n }\n\n this._isSending = true;\n\n const metricsMessages = this._metrics.slice(0, requestSizeLimit);\n\n this._metrics = this._metrics.slice(requestSizeLimit);\n\n return this.sendMetrics(metricsMessages).then(response => {\n this._isSending = false;\n\n const ignored = this.sendMetricsIfAble();\n\n return response;\n }).catch(() => {\n this._isSending = false;\n\n const ignored = this.sendMetricsIfAble();\n });\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nenum MetricsType {\n TimeToFirstFrame,\n ChannelCreationTimeToFirstFrame,\n Stalled,\n Buffering,\n SetupCompleted,\n SetupFailed,\n RoundTripTime,\n DownlinkThroughputCapacity,\n NetworkType,\n ResolutionChanged,\n ApplicationForeground,\n ApplicationBackground\n}\n\nexport default MetricsType;","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport {TelemetryLevel, TelemetryLevelType} from './MetricsConfiguration';\nimport assertUnreachable from '../lang/assertUnreachable';\n\nexport default class TelemetryLevelMapping {\n static convertTelemetryLevelToTelemetryLevelType(telemetryLevel: TelemetryLevel): TelemetryLevelType {\n switch (telemetryLevel) {\n case TelemetryLevel.Off:\n return 'Off';\n case TelemetryLevel.Essential:\n return 'Essential';\n case TelemetryLevel.All:\n return 'All';\n default:\n assertUnreachable(telemetryLevel);\n }\n }\n\n static convertTelemetryLevelTypeToTelemetryLevel(telemetryLevelType: TelemetryLevelType): TelemetryLevel {\n switch (telemetryLevelType) {\n case 'Off':\n return TelemetryLevel.Off;\n case 'Essential':\n return TelemetryLevel.Essential;\n case 'All':\n return TelemetryLevel.All;\n default:\n assertUnreachable(telemetryLevelType);\n }\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport PrivacyMode from '../dom/PrivacyMode';\nimport {TelemetryLevel} from '../metrics/MetricsConfiguration';\n\nexport default class TelemetryDefault {\n static get defaultTelemetryLevel(): TelemetryLevel {\n return PrivacyMode.isPrivate ? TelemetryLevel.Essential : TelemetryLevel.All;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport Promise from './Promise';\n\nexport default class PromiseHandler {\n onFulfilled: Function;\n onRejected: Function;\n promise: Promise;\n\n constructor(onFulfilled, onRejected, promise) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport PromiseHandler from './PromiseHandler';\n\nclass Promise {\n _state: number;\n _handled: boolean;\n _value: Promise;\n _deferreds: Array<PromiseHandler>;\n /* eslint-disable */\n // @ts-ignore\n then(onFulfilled: Function, onRejected: Function): Promise | void;\n /* eslint-enable*/\n\n constructor(callback) {\n if (!(this instanceof Promise)) {\n throw new TypeError('Promises must be constructed via new');\n }\n\n if (typeof callback !== 'function') {\n throw new TypeError('not a function');\n }\n\n this._state = 0;\n this._handled = false;\n this._value = undefined;\n this._deferreds = [];\n\n this.doResolve(callback);\n }\n\n doResolve(callback: Function): void {\n let done = false;\n\n try {\n callback(\n value => {\n if (done) {\n return;\n }\n\n done = true;\n this.promiseResolve(value);\n },\n reason => {\n if (done) {\n return;\n }\n\n done = true;\n this.promiseReject(reason);\n }\n );\n } catch (error) {\n if (done) {\n return;\n }\n\n done = true;\n this.promiseReject(error);\n }\n }\n\n promiseResolve(newValue: Promise | undefined): void {\n const promise = this as Promise;\n\n try {\n // Promise Resolution Procedure: https://github.com/Promises-aplus/Promises-spec#the-Promise-resolution-procedure\n if (newValue === promise) {\n throw new TypeError('A Promise cannot be resolved with it self.');\n }\n\n if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {\n const then = newValue.then;\n\n if (newValue instanceof Promise) {\n promise._state = 3;\n promise._value = newValue;\n promise.finale();\n\n return;\n } else if (typeof then === 'function') {\n promise.doResolve(function(): void {\n // eslint-disable-next-line prefer-rest-params\n then.apply(newValue, arguments);\n });\n\n return;\n }\n }\n\n promise._state = 1;\n promise._value = newValue;\n promise.finale();\n } catch (e) {\n promise.promiseReject(e);\n }\n }\n\n promiseReject(newValue: Promise | undefined): void{\n this._state = 2;\n this._value = newValue;\n this.finale();\n }\n\n finale(): void {\n if (this._state === 2 && this._deferreds.length === 0) {\n Promise._immediate(() => {\n if (!this._handled) {\n Promise._unhandledRejection(this._value);\n }\n });\n }\n\n for (let i = 0, len = this._deferreds.length; i < len; i++) {\n this.handle(this._deferreds[i]);\n }\n\n this._deferreds = null;\n }\n\n handle(deferred: PromiseHandler): void {\n let promise = this as Promise;\n\n while (promise._state === 3) {\n promise = promise._value;\n }\n\n if (promise._state === 0) {\n promise._deferreds.push(deferred);\n\n return;\n }\n\n promise._handled = true;\n Promise._immediate(() => {\n const callback = promise._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n\n if (callback === null) {\n if (promise._state === 1) {\n deferred.promise.promiseResolve(promise._value);\n } else {\n deferred.promise.promiseReject(promise._value);\n }\n\n return;\n }\n\n let result;\n\n try {\n result = callback(promise._value);\n } catch (e) {\n deferred.promise.promiseReject(e);\n\n return;\n }\n\n deferred.promise.promiseResolve(result);\n });\n }\n\n static all(arr: Array<Promise>): Promise {\n return new Promise((resolve, reject) => {\n if (!Array.isArray(arr)) {\n return reject(new TypeError('Promise.all accepts an array'));\n }\n\n const args = Array.prototype.slice.call(arr);\n\n if (args.length === 0) {\n return resolve([]);\n }\n\n let remaining = args.length;\n const manageResponse = (i, value): void => {\n try {\n if (value && (typeof value === 'object' || typeof value === 'function')) {\n const then = value.then;\n\n if (typeof then === 'function') {\n then.call(\n value,\n value => manageResponse(i, value),\n reject\n );\n\n return;\n }\n }\n\n args[i] = value;\n\n if (--remaining === 0) {\n resolve(args);\n }\n } catch (error) {\n reject(error);\n }\n };\n\n for (let i = 0; i < args.length; i++) {\n manageResponse(i, args[i]);\n }\n });\n }\n\n static resolve(value): Promise {\n if (value && typeof value === 'object' && value.constructor === Promise) {\n return value;\n }\n\n return new Promise(resolve => resolve(value));\n }\n\n static reject(value): Promise {\n return new Promise((_, reject) => reject(value));\n }\n\n static race(arr: Array<Promise>): Promise {\n return new Promise((resolve, reject) => {\n if (!Array.isArray(arr)) {\n return reject(new TypeError('Promise.race accepts an array'));\n }\n\n for (let i = 0, len = arr.length; i < len; i++) {\n Promise.resolve(arr[i]).then(resolve, reject);\n }\n });\n }\n\n static _immediate(callback: Function): void {\n const ignored = setTimeout(callback, 0);\n }\n\n static _unhandledRejection(error): void {\n if (typeof console !== 'undefined' && console) {\n console.warn('Possible Unhandled Promise Rejection:', error); // eslint-disable-line no-console\n }\n }\n}\n\nPromise.prototype['catch'] = function(onRejected: Function): Promise | void {\n return this.then(null, onRejected);\n};\n\nPromise.prototype['then'] = function(onFulfilled: Function, onRejected: Function): Promise | void {\n const promise = new this.constructor(() => null);\n\n this.handle(new PromiseHandler(onFulfilled, onRejected, promise));\n\n return promise;\n};\n\nPromise.prototype['finally'] = function(callback: Function): Promise | void {\n const constructor = this.constructor;\n\n return this.then(\n value => constructor.resolve(callback()).then(() => value),\n reason => constructor.resolve(callback()).then(() => constructor.reject(reason))\n );\n};\n\nexport default Promise;","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport LoggerFactory from '../logger/LoggerFactory';\nimport IPeerConnection, {PeerConnectionEvents} from './IPeerConnection';\nimport {ILogger} from '../logger/LoggerInterface';\nimport FeatureEnablement from '../sdk/feature/FeatureEnablement';\nimport {ILegacyRTCStatsReport} from './RtcConnectionMonitor';\n\nclass VanillaPeerConnection implements IPeerConnection {\n private readonly _logger: ILogger = LoggerFactory.getLogger('VanillaPeerConnection');\n private readonly _peerConnection: RTCPeerConnection;\n\n constructor(configuration?: RTCConfiguration) {\n if (FeatureEnablement.webkitRTCPeerConnectionEnabled) {\n this._peerConnection = new webkitRTCPeerConnection(configuration);\n\n return;\n }\n\n this._peerConnection = new RTCPeerConnection(configuration);\n }\n\n get native(): RTCPeerConnection {\n return this._peerConnection;\n }\n\n get currentLocalDescription(): RTCSessionDescription | null {\n return this._peerConnection.currentLocalDescription;\n }\n\n get currentRemoteDescription(): RTCSessionDescription | null {\n return this._peerConnection.currentRemoteDescription;\n }\n\n get iceConnectionState(): RTCIceConnectionState {\n return this._peerConnection.iceConnectionState;\n }\n\n get supportsGetConfiguration(): boolean {\n return typeof this._peerConnection.getConfiguration === 'function';\n }\n\n get supportsSetConfiguration(): boolean {\n return typeof this._peerConnection.setConfiguration === 'function';\n }\n\n get supportsAddTransceiver(): boolean {\n return !FeatureEnablement.addTranceiverDisabled && typeof this._peerConnection.addTransceiver === 'function';\n }\n\n async createOffer(options?: RTCOfferOptions): Promise<RTCSessionDescriptionInit> {\n if (FeatureEnablement.promiseBasedPCMethodsDisabled) {\n // Ignored as typescript does not have legacy getStats types\n /* eslint-disable @typescript-eslint/ban-ts-ignore */\n // @ts-ignore\n return new Promise((resolve, reject) => this._peerConnection.createOffer(resolve, reject, options));\n /* eslint-enable */\n }\n\n return this._peerConnection.createOffer(options);\n }\n\n async createAnswer(options?: RTCAnswerOptions): Promise<RTCSessionDescriptionInit> {\n if (FeatureEnablement.promiseBasedPCMethodsDisabled) {\n // Ignored as typescript does not have legacy getStats types\n /* eslint-disable @typescript-eslint/ban-ts-ignore */\n // @ts-ignore\n return new Promise((resolve, reject) => this._peerConnection.createAnswer(resolve, reject, options));\n /* eslint-enable */\n }\n\n return this._peerConnection.createAnswer(options);\n }\n\n async setLocalDescription(description: RTCSessionDescriptionInit): Promise<void> {\n return this._peerConnection.setLocalDescription(FeatureEnablement.promiseBasedPCMethodsDisabled ?\n new RTCSessionDescription(description) : description);\n }\n\n async setRemoteDescription(description: RTCSessionDescriptionInit): Promise<void> {\n const hasCrypto = description.sdp.match(/a=crypto:/i);\n\n if (hasCrypto) {\n this._logger.warn('SDP a=crypto is not supported');\n }\n\n return this._peerConnection.setRemoteDescription(FeatureEnablement.promiseBasedPCMethodsDisabled ?\n new RTCSessionDescription(description) : description);\n }\n\n getStats(selector?: MediaStreamTrack | null): Promise<RTCStatsReport> {\n return this._peerConnection.getStats(selector);\n }\n\n getStatsLegacy(): Promise<ILegacyRTCStatsReport> {\n return new Promise(resolve => {\n // Ignored as typescript does not have legacy getStats types\n /* eslint-disable @typescript-eslint/ban-ts-ignore */\n // @ts-ignore\n const ignored = this._peerConnection.getStats(resolve);\n /* eslint-enable */\n });\n }\n\n addEventListener(type: PeerConnectionEvents, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void {\n this._peerConnection.addEventListener(type, listener, options);\n }\n\n removeEventListener(type: PeerConnectionEvents, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void {\n this._peerConnection.removeEventListener(type, listener, options);\n }\n\n addTransceiver(name: string, options: RTCRtpTransceiverInit): RTCRtpTransceiver {\n return this._peerConnection.addTransceiver(name, options);\n }\n\n getConfiguration(): RTCConfiguration {\n return this._peerConnection.getConfiguration();\n }\n\n setConfiguration(configuration: RTCConfiguration): void {\n this._peerConnection.setConfiguration(configuration);\n }\n\n set ontrack(handler: ((this: RTCPeerConnection, ev: RTCTrackEvent) => unknown) | null) {\n this._peerConnection.ontrack = handler;\n }\n\n get ontrack(): ((this: RTCPeerConnection, ev: RTCTrackEvent) => unknown) | null {\n return this._peerConnection.ontrack;\n }\n\n set onicecandidate(handler: ((this: RTCPeerConnection, ev: RTCPeerConnectionIceEvent) => unknown) | null) {\n this._peerConnection.onicecandidate = handler;\n }\n\n get onicecandidate(): ((this: RTCPeerConnection, ev: RTCPeerConnectionIceEvent) => unknown) | null {\n return this._peerConnection.onicecandidate;\n }\n\n set oniceconnectionstatechange(handler: ((this: RTCPeerConnection, ev: Event) => unknown) | null) {\n this._peerConnection.oniceconnectionstatechange = handler;\n }\n\n get oniceconnectionstatechange(): ((this: RTCPeerConnection, ev: Event) => unknown) | null {\n return this._peerConnection.oniceconnectionstatechange;\n }\n\n close(): void {\n this._peerConnection.close();\n }\n}\n\nexport default VanillaPeerConnection;","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nimport IPeerConnectionFactory from './IPeerConnectionFactory';\nimport IPeerConnection from './IPeerConnection';\nimport VanillaPeerConnection from './VanillaPeerConnection';\n\nclass VanillaPeerConnectionFactory implements IPeerConnectionFactory {\n async createPeerConnection(configuration?: RTCConfiguration): Promise<IPeerConnection> {\n return new VanillaPeerConnection(configuration);\n }\n}\n\nexport default VanillaPeerConnectionFactory;","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nimport Subject from './Subject';\nimport IDisposable from '../lang/IDisposable';\n\nexport default class ReadOnlySubject<T> {\n private readonly _subject: Subject<T>;\n\n constructor(subject: Subject<T>) {\n this._subject = subject;\n }\n\n get value(): T {\n return this._subject.value;\n }\n\n subscribe(listener: (T) => void): IDisposable {\n return this._subject.subscribe(listener);\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nimport IDisposable from '../lang/IDisposable';\nimport Disposable from '../lang/Disposable';\nimport IComparable from '../lang/IComparable';\n\nclass DisposableListener<T> extends Disposable {\n constructor(listeners: Array<T>, listener: T) {\n super(() => {\n const idx = listeners.indexOf(listener);\n\n if (idx >= 0) {\n listeners.splice(idx, 1);\n }\n });\n }\n}\n\nexport default class Subject<T> {\n private readonly _listeners: Array<(T) => void>;\n private _value: T;\n\n constructor(value: T) {\n this._listeners = [];\n this._value = value;\n }\n\n set value(value: T) {\n let changed = this._value !== value;\n\n if (changed && value) {\n const comparable = value as unknown as IComparable<T>;\n\n if (typeof comparable.equals === 'function') {\n changed = !comparable.equals(this._value);\n }\n }\n\n if (!changed) {\n return;\n }\n\n this._value = value;\n\n this._listeners.forEach(listener => {\n listener(value);\n });\n }\n\n get value(): T {\n return this._value;\n }\n\n subscribe(listener: (T) => void): IDisposable {\n this._listeners.push(listener);\n\n listener(this._value);\n\n return new DisposableListener<(T) => void>(this._listeners, listener);\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nexport default class Environment {\n static getEnvironmentFromUrl(url: string): string {\n try {\n const baseURL = new URL(url);\n\n return baseURL.origin;\n } catch (e) {\n return '';\n }\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport LoggerFactory from '../logger/LoggerFactory';\nimport Strings from '../lang/Strings';\nimport Subject from '../rx/Subject';\nimport ReadOnlySubject from '../rx/ReadOnlySubject';\nimport IPeerConnectionFactory from '../rtc/IPeerConnectionFactory';\nimport VanillaPeerConnectionFactory from '../rtc/VanillaPeerConnectionFactory';\nimport EdgeAuth from './edgeAuth/EdgeAuth';\nimport {ILogger} from '../logger/LoggerInterface';\nimport {LoggingLevel, LoggingLevelInputTypes} from '../logger/Logger';\nimport ConsoleAppender from '../logger/ConsoleAppender';\nimport TelemetryAppender from '../telemetry/TelemetryApender';\nimport ConfigurationParameterReader from '../dom/ConfigurationParameterReader';\nimport MetricsConfiguration, {TelemetryLevel, TelemetryLevelType} from '../metrics/MetricsConfiguration';\nimport MetricsService from '../metrics/MetricsService';\nimport TelemetryLevelMapping from '../metrics/TelemetricLevelMapping';\nimport LoggingLevelMapping from '../logger/LoggingLevelMapping';\nimport PrivacyMode from '../dom/PrivacyMode';\nimport BrowserDetector from '../dom/BrowserDetector';\nimport {IConfigurationParameterReader} from '../dom/IConfigurationParamaterReader';\nimport ApplicationActivityMonitor from '../dom/ApplicationActivityMonitor';\nimport TelemetryUrl from './TelemetryUrl';\nimport Environment from './Environment';\nimport {HlsPlayerType, ShakaType, WebPlayerType} from './streaming/StreamTypes';\nimport DiscoveryUri from './discovery/DiscoveryUri';\nimport MetricsFactory from '../metrics/MetricsFactory';\nimport TelemetryDefault from '../metrics/TelemetryDefault';\n\nconst pageLoadTime = window['__phenixPageLoadTime'] || window['__pageLoadTime'] || Date.now();\n\ninterface IInitOptions {\n discoveryUri?: string;\n peerConnectionFactory?: IPeerConnectionFactory;\n telemetryLevel?: TelemetryLevelType;\n loggingLevel?: LoggingLevelInputTypes;\n consoleLoggingLevel?: LoggingLevelInputTypes;\n automaticallyPlayMediaStream?: boolean;\n automaticallyMuteVideoOnPlayFailure?: boolean;\n webPlayerLoader?: (player: WebPlayerType) => void;\n shakaPlayerLoader?: (player: ShakaType) => void;\n hlsJsLoader?: (player: HlsPlayerType) => void;\n}\n\nexport default class SDK {\n private static _automaticallyRetryOnFailure = true;\n private static _automaticallyReconnectPeerConnection = true;\n private static _automaticallyPlayMediaStream = true;\n private static _automaticallyMuteVideoOnPlayFailure = true;\n private static _webPlayerLoader = null;\n private static _shakaPlayerLoader = null;\n private static _hlsJsLoader = null;\n private static _configurationParameterReader: IConfigurationParameterReader = new ConfigurationParameterReader();\n private static _applicationActivityMonitor: ApplicationActivityMonitor;\n private static _environment: Subject<string> = new Subject<string>('');\n private static _telemetryUrl: Subject<string> = new Subject<string>('https://telemetry.phenixrts.com/telemetry');\n private static _maximalNumberOfPeerConnectionReconnectAttempts = 8;\n private static _telemetryLevel: Subject<TelemetryLevel> = new Subject<TelemetryLevel>(TelemetryDefault.defaultTelemetryLevel);\n private static _metricsService: MetricsService;\n private static _metricsConfiguration: MetricsConfiguration\n private static readonly _sendLocalCandidates: Subject<boolean> = new Subject(!PrivacyMode.isPrivate);\n private static readonly _tenancy: Subject<string> = new Subject<string>('');\n private static readonly _clientSessionId: string = Strings.random(32);\n private static readonly _loadedTimestamp: Date = new Date();\n private static readonly _logger: ILogger = LoggerFactory.getLogger('SDK');\n private static readonly _initialized: Subject<boolean> = new Subject<boolean>(false);\n private static readonly _peerConnectionFactory: Subject<IPeerConnectionFactory> = new Subject<IPeerConnectionFactory>(new VanillaPeerConnectionFactory());\n private static readonly _readOnlyInitialized: ReadOnlySubject<boolean> = new ReadOnlySubject<boolean>(SDK._initialized);\n private static readonly _readOnlyDiscoveryUri: ReadOnlySubject<string> = new ReadOnlySubject<string>(DiscoveryUri.uri);\n private static readonly _readOnlyPeerConnectionFactory: ReadOnlySubject<IPeerConnectionFactory> = new ReadOnlySubject<IPeerConnectionFactory>(SDK._peerConnectionFactory);\n\n static get pageLoadTime(): number {\n return pageLoadTime;\n }\n\n static get sendLocalCandidates(): Subject<boolean> {\n return this._sendLocalCandidates;\n }\n\n static get tenancy(): Subject<string> {\n return this._tenancy;\n }\n\n static get clientSessionId(): string {\n return SDK._clientSessionId;\n }\n\n static get loadedTimestamp(): Date {\n return SDK._loadedTimestamp;\n }\n\n static get initialized(): ReadOnlySubject<boolean> {\n return SDK._readOnlyInitialized;\n }\n\n static get discoveryUri(): ReadOnlySubject<string> {\n return SDK._readOnlyDiscoveryUri;\n }\n\n static get peerConnectionFactory(): ReadOnlySubject<IPeerConnectionFactory> {\n return SDK._readOnlyPeerConnectionFactory;\n }\n\n static get automaticRetryOnFailure(): boolean {\n return SDK._automaticallyRetryOnFailure;\n }\n\n static get automaticallyReconnectPeerConnection(): boolean {\n return SDK._automaticallyReconnectPeerConnection;\n }\n\n static get automaticallyPlayMediaStream(): boolean {\n return SDK._automaticallyPlayMediaStream;\n }\n\n static get automaticallyMuteVideoOnPlayFailure(): boolean {\n return SDK._automaticallyMuteVideoOnPlayFailure;\n }\n\n static get webPlayerLoader(): (WebPlayerType) => void {\n return this._webPlayerLoader;\n }\n\n static get shakaPlayerLoader(): (ShakaType) => void {\n return this._shakaPlayerLoader;\n }\n\n static get hlsJsLoader(): (HlsPlayerType) => void {\n return this._hlsJsLoader;\n }\n\n static get metricsService(): MetricsService {\n return SDK._metricsService;\n }\n\n static get applicationActivityMonitor(): ApplicationActivityMonitor {\n return this._applicationActivityMonitor;\n }\n\n static get telemetryUrl(): Subject<string> {\n return this._telemetryUrl;\n }\n\n static get maximalNumberOfPeerConnectionReconnectAttempts(): number {\n return this._maximalNumberOfPeerConnectionReconnectAttempts;\n }\n\n static set maximalNumberOfPeerConnectionReconnectAttempts(retriesAmount: number) {\n this._maximalNumberOfPeerConnectionReconnectAttempts = retriesAmount;\n }\n\n static get loggingLevel(): LoggingLevelInputTypes {\n return LoggingLevelMapping.convertLoggingLevelToLoggingLevelType(this._logger.threshold.value);\n }\n\n static get telemetryLevel(): TelemetryLevelType {\n return TelemetryLevelMapping.convertTelemetryLevelToTelemetryLevelType(SDK._telemetryLevel.value);\n }\n\n static get browserDetector(): BrowserDetector {\n return BrowserDetector;\n }\n\n static applyTelemetryConfiguration(): void {\n const telemetryConfiguration = LoggerFactory.telemetryConfiguration;\n\n telemetryConfiguration.sessionId = SDK.clientSessionId;\n\n const ignoredEnvironment = SDK._environment.subscribe(environment => {\n telemetryConfiguration.environment = environment;\n });\n const ignoredDiscoveryUri = SDK.telemetryUrl.subscribe(value => {\n const telemetryAppender = this._logger.appenders.value.find(appender => appender instanceof TelemetryAppender);\n\n if (telemetryAppender) {\n telemetryConfiguration.url = value;\n\n this._logger.appenders.remove(telemetryAppender);\n this._logger.appenders.add(new TelemetryAppender(telemetryConfiguration));\n this._logger.info('Telemetry URL was set to [%s]', telemetryConfiguration.url);\n }\n });\n const ignoredTenancy = SDK._tenancy.subscribe(tenancy => {\n const telemetryAppender = this._logger.appenders.value.find(appender => appender instanceof TelemetryAppender);\n\n if (telemetryAppender && tenancy) {\n telemetryConfiguration.tenancy = tenancy;\n\n this._logger.appenders.remove(telemetryAppender);\n this._logger.appenders.add(new TelemetryAppender(telemetryConfiguration));\n this._logger.info('Telemetry tenancy was set to [%s]', telemetryConfiguration.tenancy);\n }\n });\n }\n\n static applyMetricsConfiguration(): void {\n SDK._metricsService = MetricsFactory.getMetricsService(DiscoveryUri.uri.value);\n SDK._metricsConfiguration = SDK._metricsService.metricsConfiguration;\n\n SDK._metricsConfiguration.sessionId = SDK.clientSessionId;\n\n const ignoredEnvironment = SDK._environment.subscribe(environment => {\n SDK._metricsConfiguration.environment = environment;\n });\n const ignoredDiscoveryUri = SDK.telemetryUrl.subscribe(value => {\n SDK._metricsConfiguration.url = value;\n });\n const ignoredTenancy = SDK._tenancy.subscribe(tenancy => {\n SDK._metricsConfiguration.tenancy = tenancy;\n });\n const value = this._configurationParameterReader.getStringValue('phenix-metrics-level');\n\n if (value) {\n MetricsFactory.setTelemetryLevel(TelemetryLevel[value]);\n }\n\n const ignoredTelemetryLevel = SDK._telemetryLevel.subscribe(telemetryLevel => {\n MetricsFactory.setTelemetryLevel(telemetryLevel);\n });\n }\n\n static applyAutomaticallyRetryOnFailureFromParameterConfiguration(): void {\n this._automaticallyRetryOnFailure = this._configurationParameterReader.getBooleanValue('phenix-automatically-retry-on-failure');\n this._logger.info('Automatically retry on failure is set to: [%s]', this._automaticallyRetryOnFailure);\n\n return;\n }\n\n static applyAutomaticallyReconnectPeerConnectionFromParameterConfiguration(): void {\n this._automaticallyReconnectPeerConnection = this._configurationParameterReader.getBooleanValue('phenix-automatically-reconnect-peer-connection');\n this._logger.info('Automatically reconnect peer connection is set to: [%s]', this._automaticallyReconnectPeerConnection);\n\n return;\n }\n\n static applyDiscoveryUriDefaultFromParameterConfiguration(): void {\n SDK.discoveryUri.subscribe(value => {\n SDK.telemetryUrl.value = SDK.getTelemetryUrl(value);\n SDK._environment.value = Environment.getEnvironmentFromUrl(value);\n });\n\n const channelToken = this._configurationParameterReader.getStringValue('phenix-channel-token');\n\n if (channelToken) {\n const parsedToken = EdgeAuth.parseToken(channelToken);\n\n SDK._tenancy.value = EdgeAuth.getTenancy(parsedToken);\n DiscoveryUri.uri.value = (EdgeAuth.getUri(parsedToken) || SDK.discoveryUri.value).toString();\n\n this._logger.info('Discovery URI set from configuration parameter to [%s]', SDK.discoveryUri.value);\n\n return;\n }\n\n const uriValue = this._configurationParameterReader.getStringValue('phenix-uri');\n\n if (uriValue) {\n DiscoveryUri.uri.value = uriValue;\n this._logger.info('Discovery URI set from \"phenix-uri\" configuration parameter tag to [%s]', SDK.discoveryUri.value);\n\n return;\n }\n\n const baseURIValue = this._configurationParameterReader.getStringValue('phenix-base-uri');\n\n if (baseURIValue) {\n DiscoveryUri.uri.value = `${baseURIValue}/pcast/endPoints`;\n this._logger.info('Discovery URI set from \"phenix-base-uri\" configuration parameter tag to [%s]', SDK.discoveryUri.value);\n\n return;\n }\n }\n\n static init(options?: IInitOptions): void {\n if (!this._initialized.value) {\n this._applicationActivityMonitor = new ApplicationActivityMonitor();\n }\n\n if (options) {\n if (options.discoveryUri) {\n DiscoveryUri.uri.value = options.discoveryUri;\n }\n\n if (options.peerConnectionFactory) {\n SDK._peerConnectionFactory.value = options.peerConnectionFactory;\n }\n\n if (options.telemetryLevel && TelemetryLevel[options.telemetryLevel]) {\n SDK._telemetryLevel.value = TelemetryLevelMapping.convertTelemetryLevelTypeToTelemetryLevel(options.telemetryLevel);\n }\n\n if (options.loggingLevel && LoggingLevel[options.loggingLevel]) {\n this._logger.threshold.setThreshold(LoggingLevelMapping.convertLoggingLevelTypeToLoggingLevel(options.loggingLevel));\n }\n\n if (options.consoleLoggingLevel &&\n LoggingLevel[options.consoleLoggingLevel]) {\n const consoleAppender = this._logger.appenders.value.find(appender => appender instanceof ConsoleAppender);\n\n if (consoleAppender) {\n this._logger.appenders.remove(consoleAppender);\n }\n\n if (options.consoleLoggingLevel !== 'Off') {\n this._logger.appenders.add(new ConsoleAppender(LoggingLevelMapping.convertLoggingLevelTypeToLoggingLevel(options.consoleLoggingLevel)));\n }\n }\n\n if (typeof options.automaticallyPlayMediaStream === 'boolean') {\n this._automaticallyPlayMediaStream = options.automaticallyPlayMediaStream;\n }\n\n if (typeof options.automaticallyMuteVideoOnPlayFailure === 'boolean') {\n this._automaticallyMuteVideoOnPlayFailure = options.automaticallyMuteVideoOnPlayFailure;\n }\n\n if (options.webPlayerLoader) {\n this._webPlayerLoader = options.webPlayerLoader;\n }\n\n if (options.shakaPlayerLoader) {\n this._shakaPlayerLoader = options.shakaPlayerLoader;\n }\n\n if (options.hlsJsLoader) {\n this._hlsJsLoader = options.hlsJsLoader;\n }\n }\n\n SDK._initialized.value = true;\n }\n\n static dispose(): void {\n SDK._initialized.value = false;\n this._applicationActivityMonitor.dispose();\n this._applicationActivityMonitor = null;\n }\n\n static getTelemetryUrl(url: string): string {\n return TelemetryUrl.getTelemetryUrl(url);\n }\n\n private constructor() {\n throw new Error('SDK is a static class that may not be instantiated');\n }\n}\n\nwindow.addEventListener('unload', () => {\n SDK.dispose();\n});\n\nSDK.applyDiscoveryUriDefaultFromParameterConfiguration();\nSDK.applyMetricsConfiguration();\nSDK.applyTelemetryConfiguration();\nSDK.applyAutomaticallyRetryOnFailureFromParameterConfiguration();\nSDK.applyAutomaticallyReconnectPeerConnectionFromParameterConfiguration();\nSDK.init();","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nexport default class TelemetryUrl {\n static getTelemetryUrl(url: string): string {\n try {\n const baseURL = new URL(url);\n const segments = baseURL.hostname.split('.');\n\n switch (baseURL.protocol) {\n case 'ws:':\n baseURL.protocol = 'http:';\n\n break;\n case 'wss:':\n baseURL.protocol = 'https:';\n\n break;\n\n default:\n break;\n }\n\n if (segments.length === 2 ||\n (segments.length === 3 && segments[segments.length - 2].length <= 2 && segments[segments.length - 1].length <= 3)\n ) {\n segments.unshift('telemetry');\n } else if (segments[0].startsWith('stg-') || segments[0].endsWith('-stg') || segments[0].includes('-stg-') || segments[0] === 'stg') {\n segments[0] = 'telemetry-stg';\n } else if (segments[0].startsWith('local') || segments[0].endsWith('-local')) {\n // Leave URL unchanged\n } else {\n segments[0] = 'telemetry';\n }\n\n baseURL.hostname = segments.join('.');\n\n return `${baseURL.origin}/telemetry`;\n } catch (e) {\n return url;\n }\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nenum ChannelState {\n Offline = 1,\n Starting,\n Paused,\n Playing,\n Recovering,\n Reconnecting,\n StandBy,\n Stopped,\n Unauthorized,\n GeoRestricted,\n GeoBlocked,\n Error,\n UnsupportedFeature\n}\n\nexport default ChannelState;","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nexport type BitrateStateType = 'Keep' | 'Reset';\nexport type BitrateModeType = 'Normal' | 'Force' | 'Reset';\n\nexport enum BitrateState {\n Keep,\n Reset\n}\n\nexport enum BitrateMode {\n Normal,\n Force,\n Reset\n}\n\nexport interface ISetTemporaryMaximalBitrate {\n apiVersion: number;\n sharedSecret: string;\n elapsedInMilliseconds: number;\n bitrateInBitsPerSecond: number;\n bitrateState: BitrateStateType;\n bitrateMode: BitrateModeType;\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport IComparable from '../lang/IComparable';\n\nexport default class Dimension implements IComparable<Dimension> {\n readonly width: number;\n readonly height: number;\n\n static get empty(): Dimension {\n return new Dimension(0, 0);\n }\n\n constructor(width: number, height: number) {\n this.width = width;\n this.height = height;\n }\n\n equals(other: Dimension): boolean {\n return other && this.width === other.width && this.height === other.height;\n }\n\n toString(): string {\n return `${this.width}x${this.height}`;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nexport default class Durations {\n private readonly _duration: number;\n\n constructor(duration = 0) {\n this._duration = duration;\n }\n\n toIsoString(): string {\n if (this._duration === 0) {\n return 'P0S';\n }\n\n const isNegative = this._duration < 0;\n const duration = isNegative ? Math.abs(this._duration) : this._duration;\n let offset = Math.floor(duration);\n const milliseconds = offset % 1000;\n\n offset = Math.floor(offset / 1000);\n\n const seconds = offset % 60;\n\n offset = Math.floor(offset / 60);\n\n const minutes = offset % 60;\n\n offset = Math.floor(offset / 60);\n\n const hours = offset % 24;\n const parts = ['PT'];\n\n if (isNegative) {\n parts.unshift('-');\n }\n\n if (hours) {\n parts.push(hours + 'H');\n }\n\n if (minutes) {\n parts.push(minutes + 'M');\n }\n\n if (seconds || milliseconds) {\n parts.push(String(seconds));\n\n if (milliseconds) {\n parts.push('.' + this.padStart(milliseconds.toString(), 3, '0'));\n }\n\n parts.push('S');\n }\n\n return parts.join('');\n }\n\n padStart(item: string, targetLength: number, padString: string): string {\n targetLength = targetLength >> 0;\n padString = String((typeof padString !== 'undefined' ? padString : ' '));\n\n if (item.length > targetLength) {\n return item;\n }\n\n targetLength = targetLength - item.length;\n\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length);\n }\n\n return padString.slice(0, targetLength) + item;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport LoggerFactory from '../logger/LoggerFactory';\nimport {ILogger} from '../logger/LoggerInterface';\nimport Durations from '../time/Duration';\nimport Disposable from '../lang/Disposable';\nimport IDisposable from '../lang/IDisposable';\nimport MetricsType from '../metrics/MetricsType';\nimport DisposableList from '../lang/DisposableList';\nimport MetricsService from '../metrics/MetricsService';\n\nexport default class VideoTelemetry implements IDisposable {\n private readonly _pageLoadTime: number;\n private readonly _channelStartTime: number;\n private readonly _logger: ILogger = LoggerFactory.getLogger('StreamTelemetry');\n private readonly _disposables: DisposableList = new DisposableList();\n private readonly _streamId: string;\n private readonly _metricsService: MetricsService;\n private _listenToFirstTime: () => void;\n private _listenForStall: () => void;\n private _listenForContinuation: (event) => void;\n private _timeToFirstFrame: number;\n private _channelCreationTimeToFirstFrame: number;\n private _startRecordingFirstFrame: number;\n private _videoStalled: number;\n private _lastProgress: number;\n private _videoResolution: string;\n private _clearTimeToFirstFrameListener: Disposable;\n private _clearRebufferingListener: Disposable;\n\n constructor(streamId: string, pageLoadTime: number, channelStartTime: number, metricsService: MetricsService) {\n this._streamId = streamId;\n this._pageLoadTime = pageLoadTime;\n this._channelStartTime = channelStartTime;\n\n this._metricsService = metricsService;\n }\n\n setupListenerForTimeToFirstTime(video: HTMLVideoElement): void {\n this._startRecordingFirstFrame = Date.now();\n\n this._listenToFirstTime = (): void => this.callTimeToFirstFrame();\n\n video.addEventListener('loadeddata', this._listenToFirstTime);\n video.addEventListener('loadedmetadata', this._listenToFirstTime);\n\n this._clearTimeToFirstFrameListener = new Disposable(() => {\n video.removeEventListener('loadeddata', this._listenToFirstTime);\n video.removeEventListener('loadedmetadata', this._listenToFirstTime);\n });\n this._disposables.add(this._clearTimeToFirstFrameListener);\n }\n\n setupListenerForRebuffering(video: HTMLVideoElement): void {\n this._listenForStall = (): void => this.onStall();\n\n this._listenForContinuation = (event): void => this.onContinuation(event, video);\n\n video.addEventListener('stalled', this._listenForStall);\n video.addEventListener('pause', this._listenForStall);\n video.addEventListener('suspend', this._listenForStall);\n video.addEventListener('play', this._listenForContinuation);\n video.addEventListener('playing', this._listenForContinuation);\n video.addEventListener('progress', this._listenForContinuation);\n video.addEventListener('timeupdate', this._listenForContinuation);\n\n this._clearRebufferingListener = new Disposable(() => {\n video.removeEventListener('stalled', this._listenForStall);\n video.removeEventListener('pause', this._listenForStall);\n video.removeEventListener('suspend', this._listenForStall);\n video.removeEventListener('play', this._listenForContinuation);\n video.removeEventListener('playing', this._listenForContinuation);\n video.removeEventListener('progress', this._listenForContinuation);\n video.removeEventListener('timeupdate', this._listenForContinuation);\n });\n\n this._disposables.add(this._clearRebufferingListener);\n }\n\n dispose(): void {\n this._disposables.dispose();\n }\n\n private get durationSincePageLoad(): string {\n const now = Date.now();\n\n return new Durations(now - this._pageLoadTime).toIsoString();\n }\n\n private callTimeToFirstFrame(): void {\n const now = Date.now();\n\n this.pushTimeToFirstFrame(now);\n this.pushChannelCreationTimeToFirstFrame(now);\n\n this._clearTimeToFirstFrameListener.dispose();\n }\n\n private pushTimeToFirstFrame(now): void {\n this._timeToFirstFrame = now - this._startRecordingFirstFrame;\n\n this._metricsService.push({\n metricType: MetricsType.TimeToFirstFrame,\n runtime: (now - this._pageLoadTime) / 1000,\n value: {uint64: this._timeToFirstFrame},\n streamId: this._streamId\n });\n\n this._logger.info(\n '[%s] [%s] First frame [%s]',\n this.durationSincePageLoad,\n this._streamId,\n new Durations(this._timeToFirstFrame).toIsoString()\n );\n }\n\n private pushChannelCreationTimeToFirstFrame(now): void {\n this._channelCreationTimeToFirstFrame = now - this._channelStartTime;\n\n this._metricsService.push({\n metricType: MetricsType.ChannelCreationTimeToFirstFrame,\n runtime: (now - this._pageLoadTime) / 1000,\n value: {uint64: this._channelCreationTimeToFirstFrame},\n streamId: this._streamId\n });\n\n this._logger.info(\n '[%s] [%s] Channel creation to first frame [%s]',\n this.durationSincePageLoad,\n this._streamId,\n new Durations(this._channelCreationTimeToFirstFrame).toIsoString()\n );\n }\n\n private onStall(): void {\n if (this._videoStalled) {\n return;\n }\n\n this._metricsService.push({\n metricType: MetricsType.Stalled,\n runtime: (Date.now() - this._pageLoadTime) / 1000,\n streamId: this._streamId\n });\n\n this._videoStalled = Date.now();\n\n this._logger.info(\n '[%s] [%s] [buffering] Stream has stalled',\n this.durationSincePageLoad,\n this._streamId\n );\n }\n\n private onContinuation(event, video): void {\n if (!video.buffered) {\n return;\n }\n\n const bufferLength = video.buffered.length;\n const hasNotProgressedSinceLastProgressEvent = event.type === 'playing'\n || bufferLength > 0 ? (event.type === 'progress'\n || event.type === 'timeupdate')\n && video.buffered.end(bufferLength - 1) === this._lastProgress : true;\n\n if (!this._videoStalled || hasNotProgressedSinceLastProgressEvent) {\n return;\n }\n\n if (event.type === 'progress') {\n this._lastProgress = video.buffered.end(bufferLength - 1);\n }\n\n const timeSinceStop = Date.now() - this._videoStalled;\n\n this._metricsService.push({\n metricType: MetricsType.Buffering,\n runtime: (Date.now() - this._pageLoadTime) / 1000,\n value: {uint64: timeSinceStop},\n streamId: this._streamId\n });\n\n this._logger.info(\n '[%s] [%s] [buffering] Stream has recovered from stall after [%s]',\n this.durationSincePageLoad,\n this._streamId,\n new Durations(timeSinceStop).toIsoString()\n );\n this._videoStalled = null;\n }\n\n onVideoResolutionChanges(newResolution: string): void {\n this._metricsService.push({\n metricType: MetricsType.ResolutionChanged,\n runtime: (Date.now() - this._pageLoadTime) / 1000,\n value: {string: newResolution},\n previousValue: this._videoResolution ? {string: this._videoResolution} : undefined,\n streamId: this._streamId\n });\n\n this._videoResolution = newResolution;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport MetricsType from '../metrics/MetricsType';\nimport MetricType from '../metrics/MetricType';\nimport Durations from '../time/Duration';\nimport {ILogger} from '../logger/LoggerInterface';\nimport SDK from '../sdk/SDK';\nimport LoggerFactory from '../logger/LoggerFactory';\n\nexport class StreamSetupListener {\n private readonly _logger: ILogger = LoggerFactory.getLogger('StreamSetupListener');\n private readonly metricsService = SDK.metricsService;\n private readonly _pageLoadTime: number;\n private readonly _startTime: number;\n private _metricSubmitted = false;\n\n constructor(pageLoadTime: number) {\n this._startTime = Date.now();\n this._pageLoadTime = pageLoadTime;\n }\n\n success(streamId): void {\n this.recordStreamMetric(MetricsType.SetupCompleted, streamId);\n }\n\n fail(): void {\n this.recordStreamMetric(MetricsType.SetupFailed);\n }\n\n private recordStreamMetric(metricType: MetricsType, streamId?: string): void {\n if (this._metricSubmitted) {\n return ;\n }\n\n this._metricSubmitted = true;\n\n const now = Date.now();\n const setupTime = now - this._startTime;\n const metricName = new MetricType(metricType).getName();\n\n this.metricsService.push({\n metricType,\n runtime: (now - this._pageLoadTime) / 1000,\n value: {uint64: setupTime},\n streamId\n });\n\n this._logger.info(\n '[%s] [%s] Stream metric [%s] in [%s]',\n new Durations(now - this._pageLoadTime).toIsoString(),\n streamId,\n metricName,\n new Durations(setupTime).toIsoString()\n );\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nimport IDisposable from '../lang/IDisposable';\nimport Disposable from '../lang/Disposable';\nimport Subject from '../rx/Subject';\nimport DisposableList from '../lang/DisposableList';\n\nexport default class NetworkMonitor implements IDisposable {\n private readonly _disposables: DisposableList = new DisposableList();\n private readonly _isSupported = navigator && navigator['connection'];\n private readonly _rtt: Subject<number> = new Subject(undefined);\n private readonly _effectiveType: Subject<string> = new Subject(undefined);\n private readonly _downlinkThroughputCapacity: Subject<number> = new Subject(undefined);\n\n constructor() {\n if (!this.isSupported) {\n return;\n }\n\n this.setupNetworkChangeListeners();\n this.updateStatistics();\n }\n\n get isSupported(): boolean {\n return this._isSupported;\n }\n\n get rtt(): Subject<number> {\n return this._rtt;\n }\n\n get effectiveType(): Subject<string> {\n return this._effectiveType;\n }\n\n get downlinkThroughputCapacity(): Subject<number> {\n return this._downlinkThroughputCapacity;\n }\n\n dispose(): void {\n this._disposables.dispose();\n }\n\n private getDownlinkThroughputCapacity(): number {\n if (!this.isSupported) {\n return -1;\n }\n\n return navigator['connection'].downlink || navigator['connection'].downlinkMax;\n }\n\n private getEffectiveType(): string {\n if (!this.isSupported) {\n return 'Unknown';\n }\n\n return navigator['connection'].effectiveType || navigator['connection'].type;\n }\n\n private getRoundTripTime(): number {\n return navigator['connection'].rtt;\n }\n\n private setupNetworkChangeListeners(): void {\n const listener = (): void => {\n this.updateStatistics();\n };\n\n navigator['connection'].addEventListener('change', listener);\n\n this._disposables.add(new Disposable(() => {\n navigator['connection'].removeEventListener('change', listener);\n }));\n }\n\n private updateStatistics(): void {\n this._rtt.value = this.getRoundTripTime();\n this._effectiveType.value = this.getEffectiveType();\n this._downlinkThroughputCapacity.value = this.getDownlinkThroughputCapacity();\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport {StreamSetupListener} from '../dom/StreamSetupListener';\nimport {ILogger} from '../logger/LoggerInterface';\nimport LoggerFactory from '../logger/LoggerFactory';\nimport NetworkMonitor from '../dom/NetworkMonitor';\nimport SDK from '../sdk/SDK';\nimport MetricsType from '../metrics/MetricsType';\nimport Durations from '../time/Duration';\nimport IDisposable from '../lang/IDisposable';\nimport DisposableList from '../lang/DisposableList';\nimport MetricsService from '../metrics/MetricsService';\n\ninterface INetworkStatistics {\n rtt?: number;\n effectiveType?: string;\n downlinkThroughputCapacity?: number;\n}\n\nexport default class SessionTelemetry implements IDisposable {\n private readonly _logger: ILogger = LoggerFactory.getLogger('SessionTelemetry');\n private readonly _metricsService: MetricsService;\n private readonly _applicationActivityMonitor = SDK.applicationActivityMonitor;\n private readonly _networkMonitor: NetworkMonitor = new NetworkMonitor();\n private readonly _pageLoadTime: number;\n private readonly _disposables: DisposableList = new DisposableList();\n private _lastNetworkStatistics: INetworkStatistics = {};\n\n constructor(pageLoadTime: number, metricsService: MetricsService) {\n this._pageLoadTime = pageLoadTime;\n this._disposables.add(this._networkMonitor);\n this._metricsService = metricsService;\n\n if (!this._networkMonitor.isSupported) {\n return;\n }\n\n this._disposables.add(this._applicationActivityMonitor.isForeground.subscribe(isForeground => {\n this.recordForegroundChange(isForeground);\n }));\n this._disposables.add(this._networkMonitor.rtt.subscribe(value => {\n this.recordNetworkRTTUpdate(value);\n }));\n this._disposables.add(this._networkMonitor.effectiveType.subscribe(value => {\n this.recordNetworkTypeChangeUpdate(value);\n }));\n this._disposables.add(this._networkMonitor.downlinkThroughputCapacity.subscribe(value => {\n this.recordNetworkDownlinkThroughputCapacityUpdate(value);\n }));\n }\n\n listenOnStreamSetup(): StreamSetupListener {\n return new StreamSetupListener(this._pageLoadTime);\n }\n\n dispose(): void {\n this._disposables.dispose();\n }\n\n private recordForegroundChange(isForeground: boolean): void {\n const now = Date.now();\n const timeSinceLastChange = this._applicationActivityMonitor.getTimeSinceLastChange();\n\n this._metricsService.push({\n metricType: isForeground ? MetricsType.ApplicationForeground : MetricsType.ApplicationBackground,\n runtime: (now - this._pageLoadTime) / 1000,\n value: {uint64: timeSinceLastChange}\n });\n\n this._logger.info(\n 'Application has gone into the [%s] after [%s] ms',\n isForeground ? 'foreground' : 'background',\n new Durations(timeSinceLastChange).toIsoString(),\n );\n }\n\n private recordNetworkRTTUpdate(newRTT: number): void {\n const now = Date.now();\n const oldRtt = this._lastNetworkStatistics.rtt;\n\n this._lastNetworkStatistics.rtt = newRTT;\n\n this._metricsService.push({\n metricType: MetricsType.RoundTripTime,\n runtime: (now - this._pageLoadTime) / 1000,\n value: {uint64: newRTT},\n previousValue: oldRtt ? {uint64: oldRtt} : undefined,\n resource: 'navigator'\n });\n\n this._logger.info(\n '[%s] Network RTT changed to [%s] from [%s]',\n new Durations(now - this._pageLoadTime).toIsoString(),\n newRTT,\n oldRtt\n );\n }\n\n private recordNetworkTypeChangeUpdate(newNetworkType: string): void {\n const now = Date.now();\n const oldNetworkType = this._lastNetworkStatistics.effectiveType;\n\n this._lastNetworkStatistics.effectiveType = newNetworkType;\n\n this._metricsService.push({\n metricType: MetricsType.NetworkType,\n runtime: (now - this._pageLoadTime) / 1000,\n value: {string: newNetworkType},\n previousValue: oldNetworkType ? {string: oldNetworkType} : undefined\n });\n\n this._logger.info(\n '[%s] Network effective type has changed to [%s] from [%s]',\n new Durations(now - this._pageLoadTime).toIsoString(),\n newNetworkType,\n oldNetworkType\n );\n }\n\n private recordNetworkDownlinkThroughputCapacityUpdate(newCapacity: number): void {\n const now = Date.now();\n const oldCapacity = this._lastNetworkStatistics.downlinkThroughputCapacity;\n\n this._lastNetworkStatistics.downlinkThroughputCapacity = newCapacity;\n\n this._metricsService.push({\n metricType: MetricsType.DownlinkThroughputCapacity,\n runtime: (now - this._pageLoadTime) / 1000,\n value: {float: newCapacity},\n previousValue: oldCapacity ? {float: oldCapacity} : undefined\n });\n\n this._logger.info(\n '[%s] Network downlink throughput capacity changed to [%s] from [%s]',\n new Durations(now - this._pageLoadTime).toIsoString(),\n newCapacity,\n oldCapacity\n );\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport Subject from '../../rx/Subject';\nimport IPeerConnection from '../../rtc/IPeerConnection';\nimport ChannelState from './ChannelState';\nimport Dimension from '../../video/Dimension';\nimport EndPoint, {IStream, SubscribeStatus} from '../discovery/EndPoint';\nimport VideoTelemetry from '../../video/VideoTelemetry';\nimport SessionTelemetry from '../../video/SessionTelemetry';\nimport {IRtcMonitorStatistic, IRtcStatistic} from '../../rtc/RtcConnectionMonitor';\nimport SDK from '../SDK';\nimport assertUnreachable from '../../lang/assertUnreachable';\nimport DisposableList from '../../lang/DisposableList';\nimport {EdgeToken} from '../edgeAuth/EdgeToken';\nimport {BitsPerSecond, Millisecond} from '../../units/Units';\n\nexport default class ChannelContext {\n channelInitialization: Date;\n disposables: DisposableList;\n channelDisposables: DisposableList;\n rendererDisposables: DisposableList;\n videoElement: Subject<HTMLVideoElement>;\n token: Subject<EdgeToken>;\n peerConnection: Subject<IPeerConnection>;\n mediaStream: Subject<MediaStream>;\n state: Subject<ChannelState>;\n autoMuted: Subject<boolean>;\n autoPaused: Subject<boolean>;\n tokenExpiring: Subject<boolean>;\n authorized: Subject<boolean>;\n online: Subject<boolean>;\n loading: Subject<boolean>;\n playing: Subject<boolean>;\n standby: Subject<boolean>;\n stopped: Subject<boolean>;\n targetLag: Subject<Millisecond>;\n lag: Subject<Millisecond>;\n bitrateLimit: Subject<BitsPerSecond>;\n resolution: Subject<Dimension>;\n failureCount: Subject<number>;\n endPoint: Subject<EndPoint>;\n stream: Subject<IStream>;\n rtcStatistics: Subject<IRtcMonitorStatistic>;\n\n peerConnectionReconnectAttempts: number;\n isDisposed: boolean;\n isStarting: Subject<boolean>;\n videoTelemetry: VideoTelemetry;\n sessionTelemetry: SessionTelemetry;\n rtcAudioStatistic: IRtcStatistic;\n rtcVideoStatistic: IRtcStatistic;\n clearFailureCountTimeout: number;\n\n constructor(token: string, targetLag: number) {\n this.isDisposed = false;\n this.isStarting = new Subject<boolean>(false);\n this.disposables = new DisposableList();\n this.channelDisposables = new DisposableList();\n this.rendererDisposables = new DisposableList();\n this.channelInitialization = new Date();\n this.videoElement = new Subject<HTMLVideoElement>(null);\n this.token = new Subject<EdgeToken>(token);\n this.peerConnection = new Subject<IPeerConnection>(null);\n this.mediaStream = new Subject<MediaStream>(null);\n this.state = new Subject<ChannelState>(ChannelState.Starting);\n this.autoMuted = new Subject<boolean>(false);\n this.autoPaused = new Subject<boolean>(false);\n this.tokenExpiring = new Subject<boolean>(false);\n this.authorized = new Subject<boolean>(true);\n this.online = new Subject<boolean>(true);\n this.loading = new Subject<boolean>(false);\n this.playing = new Subject<boolean>(false);\n this.standby = new Subject<boolean>(false);\n this.stopped = new Subject<boolean>(false);\n this.targetLag = new Subject<Millisecond>(targetLag);\n this.lag = new Subject<Millisecond>(0);\n this.bitrateLimit = new Subject<BitsPerSecond>(0);\n this.resolution = new Subject<Dimension>(Dimension.empty);\n this.failureCount = new Subject<number>(0);\n this.endPoint = new Subject<EndPoint>(null);\n this.stream = new Subject<IStream>(null);\n this.rtcStatistics = new Subject<IRtcMonitorStatistic>(null);\n this.peerConnectionReconnectAttempts = 0;\n }\n\n get streamId(): string {\n const stream = this.stream.value;\n\n if (!stream) {\n return '-';\n }\n\n return stream.streamId;\n }\n\n applyStatus(status: SubscribeStatus): void {\n switch (status) {\n case 'ok':\n break;\n case 'unauthorized':\n case 'geo-restricted':\n case 'geo-blocked':\n this.authorized.value = false;\n\n // eslint-disable-next-line no-fallthrough\n case 'no-stream':\n case 'not-found':\n this.failureCount.value = 0;\n this.playing.value = false;\n this.standby.value = true;\n this.stopped.value = false;\n this.stream.value = null;\n\n return;\n default:\n this.failureCount.value++;\n this.playing.value = false;\n this.standby.value = true;\n this.stopped.value = false;\n this.stream.value = null;\n this.state.value = ChannelState.Error;\n\n return;\n }\n }\n\n applySessionAndStreamPropertiesToVideoElement(): void {\n if (this.videoElement.value && this.videoElement.value.dataset) {\n this.videoElement.value.dataset.sessionId = SDK.clientSessionId;\n this.videoElement.value.dataset.streamId = this.streamId;\n }\n }\n\n mapSubscribeStatusToChannelStatus(status: SubscribeStatus): ChannelState {\n switch (status) {\n case 'ok':\n return ChannelState.Starting;\n case 'no-stream':\n case 'not-found':\n return ChannelState.StandBy;\n case 'geo-restricted':\n return ChannelState.GeoRestricted;\n case 'geo-blocked':\n return ChannelState.GeoBlocked;\n case 'unauthorized':\n return ChannelState.Unauthorized;\n case 'capacity':\n case 'rate-limited':\n case 'timeout':\n return ChannelState.Recovering;\n case 'failed':\n return ChannelState.Error;\n default:\n assertUnreachable(status);\n }\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport {BitrateMode, BitrateModeType} from '../api/SetTemporaryMaximalBitrate';\nimport assertUnreachable from '../../lang/assertUnreachable';\n\nexport default class BitrateModeMapping {\n static convertBitrateModeToBitrateModeType(bitrateMode: BitrateMode): BitrateModeType {\n switch (bitrateMode) {\n case BitrateMode.Normal:\n return 'Normal';\n case BitrateMode.Force:\n return 'Force';\n case BitrateMode.Reset:\n return 'Reset';\n default:\n assertUnreachable(bitrateMode);\n }\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport {BitrateState, BitrateStateType} from '../api/SetTemporaryMaximalBitrate';\nimport assertUnreachable from '../../lang/assertUnreachable';\n\nexport default class BitrateStateMapping {\n static convertBitrateStateToBitrateStateType(bitrateState: BitrateState): BitrateStateType {\n switch (bitrateState) {\n case BitrateState.Keep:\n return 'Keep';\n case BitrateState.Reset:\n return 'Reset';\n default:\n assertUnreachable(bitrateState);\n }\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport LoggerFactory from '../../logger/LoggerFactory';\nimport {ILogger} from '../../logger/LoggerInterface';\n\nimport {\n ISubscribeResponse,\n ISubscribeWithOfferRequest,\n ISubscribeWithoutOfferRequest\n} from '../api/Subscribe';\nimport {ISetRemoteDescriptionRequest, ISetRemoteDescriptionResponse} from '../api/SetRemoteDescription';\nimport {ISessionDescription, SdpType} from '../api/SessionDescription';\nimport {IDestroyStreamRequest, IDestroyStreamResponse} from '../api/DestroyStream';\nimport assertUnreachable from '../../lang/assertUnreachable';\nimport {IAddIceCandidatesRequest, IAddIceCandidatesResponse} from '../api/AddIceCandidates';\nimport VersionManager from '../version/VersionManager';\nimport EdgeAuth from '../edgeAuth/EdgeAuth';\nimport {BitrateMode, BitrateState, ISetTemporaryMaximalBitrate} from '../api/SetTemporaryMaximalBitrate';\nimport BitrateModeMapping from './BitrateModeMapping';\nimport BitrateStateMapping from './BitrateStateMapping';\nimport {BitsPerSecond, Millisecond} from '../../units/Units';\n\nconst apiVersion = 6;\n\nexport type SubscribeStatus = 'ok' | 'no-stream' | 'not-found' | 'unauthorized' | 'geo-restricted' | 'geo-blocked' | 'rate-limited' | 'capacity' | 'timeout' | 'failed';\nexport type SetRemoteDescriptionStatus = 'ok' | 'not-found' | 'unauthorized' | 'rate-limited' | 'capacity' | 'timeout' | 'failed';\nexport type SetTemporaryMaximalBitrateStatus = 'ok' | 'not-found' | 'unauthorized' | 'rate-limited' | 'capacity' | 'timeout' | 'failed';\nexport type RemoveTemporaryMaximalBitrateStatus = 'ok' | 'not-found' | 'unauthorized' | 'rate-limited' | 'capacity' | 'timeout' | 'failed';\nexport type AddIceCandidatesStatus = 'ok' | 'not-found' | 'unauthorized' | 'rate-limited' | 'capacity' | 'timeout' | 'failed';\nexport type DestroyStreamStatus = 'ok' | 'not-found' | 'unauthorized' | 'rate-limited' | 'capacity' | 'timeout' | 'failed';\nexport interface IStream {\n streamId: string;\n sharedSecret: string;\n tenancy: string;\n}\n\nexport interface ISubscribeResponseInit {\n status: SubscribeStatus;\n stream?: IStream;\n lag?: Millisecond;\n rtcConfiguration?: RTCConfiguration;\n setRemoteDescriptionResponse?: {\n sessionDescription: RTCSessionDescriptionInit;\n };\n createOfferDescriptionResponse?: {\n sessionDescription: RTCSessionDescriptionInit;\n };\n createAnswerDescriptionResponse?: {\n sessionDescription: RTCSessionDescriptionInit;\n };\n}\n\ninterface ISetRemoteDescriptionResponseInit {\n status: SetRemoteDescriptionStatus;\n sessionDescription?: RTCSessionDescriptionInit;\n}\n\ninterface IAddIceCandidatesResponseInit {\n status: AddIceCandidatesStatus;\n options?: string[];\n}\n\ninterface ISetTemporaryMaximalBitrateResponseInit {\n status: SetTemporaryMaximalBitrateStatus;\n}\n\ninterface IDestroyStreamResponseInit {\n status: DestroyStreamStatus;\n}\n\nexport default class EndPoint {\n private readonly _logger: ILogger = LoggerFactory.getLogger('EndPoint');\n private readonly _uri: string;\n private readonly _timeout: number;\n private _roundTripTime: number;\n\n constructor(uri: string, timeout: number) {\n this._uri = uri;\n this._timeout = timeout;\n\n if (!timeout) {\n throw new Error(`End point requires a timeout`);\n }\n }\n\n get roundTripTime(): number {\n return this._roundTripTime;\n }\n\n toString(): string {\n return `EndPoint[uri=${this._uri}]`;\n }\n\n async ping(): Promise<number> {\n const url = this.buildPingUrl();\n const start = Date.now();\n const response = await Promise.race([\n fetch(url, {\n method: 'GET',\n cache: 'no-cache'\n }),\n new Promise<Response>((_, reject) =>\n setTimeout(() => reject(new Error(`Ping timed out [${url}]`)), this._timeout)\n )\n ]);\n const finished = Date.now();\n\n if (!response.ok) { /* Handle */\n throw new Error(`Ping failed [${url}] [${response.status}]`);\n }\n\n this._roundTripTime = finished - start;\n\n return this._roundTripTime;\n }\n\n async subscribe(token: string, localSessionDescription: RTCSessionDescriptionInit, failureCount: number): Promise<ISubscribeResponseInit> {\n const parsedToken = EdgeAuth.parseToken(token);\n\n if (!parsedToken || !parsedToken.applicationId) {\n this._logger.error('Failed to parse token [%s]', token);\n\n return {status: 'unauthorized'};\n }\n\n const tenancy = parsedToken.applicationId;\n const url = this.buildUrl([tenancy, 'stream', 'subscribe']).toString();\n const formData = new FormData();\n const clientVersion = VersionManager.sdkVersion;\n\n if (failureCount === 0 && localSessionDescription) {\n const bodyWithOffer: ISubscribeWithOfferRequest = {\n apiVersion,\n clientVersion,\n edgeAuthToken: token,\n failureCount,\n setRemoteDescription: {\n apiVersion,\n sessionDescription: {\n type: this.convertRTCSdpTypeToSdpType(localSessionDescription.type),\n sdp: localSessionDescription.sdp\n }\n },\n createAnswerDescription: {apiVersion}\n };\n\n formData.append('jsonBody', JSON.stringify(bodyWithOffer));\n } else {\n const bodyWithoutOffer: ISubscribeWithoutOfferRequest = {\n apiVersion,\n clientVersion,\n edgeAuthToken: token,\n failureCount,\n createOfferDescription: {apiVersion}\n };\n\n formData.append('jsonBody', JSON.stringify(bodyWithoutOffer));\n }\n\n const start = Date.now();\n let httpResponse: Response;\n\n try {\n let timeout = null;\n\n httpResponse = await Promise.race([\n fetch(url, {\n method: 'POST',\n body: formData\n }),\n new Promise<Response>(resolve =>\n timeout = window.setTimeout(() => {\n this._logger.error('Failed to subscribe', new Error(`Subscribe timed out [${url}]`));\n resolve({status: 408} as Response);\n }, this._timeout)\n )\n ])\n .finally(() => {\n if (timeout) {\n clearTimeout(timeout);\n }\n });\n } catch (e) {\n this._logger.error('Failed to subscribe', e);\n\n return {status: 'failed'};\n }\n\n const status: SubscribeStatus = this.mapHttpStatusToSubscribeStatus(httpResponse);\n\n if (status !== 'ok') {\n return {status};\n }\n\n const finished = Date.now();\n const subscribeResponse = await this.convertHttpResponseToSubscribeResponse(tenancy, httpResponse);\n\n this._logger.debug('Got subscribe response [%j] in [%s] ms', subscribeResponse, finished - start);\n\n return subscribeResponse;\n }\n\n async setRemoteDescription(stream: IStream, sessionDescription: RTCSessionDescriptionInit): Promise<ISetRemoteDescriptionResponseInit> {\n const url = this.buildUrl([stream.tenancy, 'stream', stream.streamId, 'description', 'remote']).toString();\n const formData = new FormData();\n const body: ISetRemoteDescriptionRequest = {\n apiVersion,\n sharedSecret: stream.sharedSecret,\n sessionDescription: {\n type: this.convertRTCSdpTypeToSdpType(sessionDescription.type),\n sdp: sessionDescription.sdp\n }\n };\n\n formData.append('jsonBody', JSON.stringify(body));\n\n const start = Date.now();\n let httpResponse: Response;\n\n try {\n let timeout = null;\n\n httpResponse = await Promise.race([\n fetch(url, {\n method: 'POST',\n body: formData\n }),\n new Promise<Response>(resolve =>\n timeout = window.setTimeout(() => {\n this._logger.error('Failed to set remote description', new Error(`Set remote description timed out [${url}]`));\n resolve({status: 408} as Response);\n }, this._timeout)\n )\n ])\n .finally(() => {\n if (timeout) {\n clearTimeout(timeout);\n }\n });\n } catch (e) {\n this._logger.error('Failed to set remote description', e);\n\n return {status: 'failed'};\n }\n\n const status: SetRemoteDescriptionStatus = this.mapHttpStatusToSetRemoteDescriptionStatus(httpResponse);\n\n if (status !== 'ok') {\n return {status};\n }\n\n const finished = Date.now();\n const setRemoteDescriptionResponse = await this.convertHttpResponseToSetRemoteDescriptionResponse(httpResponse);\n\n this._logger.debug('Got set remote description response [%j] in [%s] ms', setRemoteDescriptionResponse, finished - start);\n\n return setRemoteDescriptionResponse;\n }\n\n async limitBitrate(\n stream: IStream,\n elapsedInMilliseconds: number,\n bitrateInBitsPerSecond: BitsPerSecond,\n bitrateState: BitrateState,\n bitrateMode: BitrateMode,\n ): Promise<ISetTemporaryMaximalBitrateResponseInit> {\n const url = this.buildUrl([stream.tenancy, 'stream', stream.streamId, 'bitrate']).toString();\n const formData = new FormData();\n const body: ISetTemporaryMaximalBitrate = {\n apiVersion,\n sharedSecret: stream.sharedSecret,\n elapsedInMilliseconds,\n bitrateInBitsPerSecond,\n bitrateState: BitrateStateMapping.convertBitrateStateToBitrateStateType(bitrateState),\n bitrateMode: BitrateModeMapping.convertBitrateModeToBitrateModeType(bitrateMode)\n };\n\n formData.append('jsonBody', JSON.stringify(body));\n\n const start = Date.now();\n let httpResponse: Response;\n\n try {\n let timeout = null;\n\n httpResponse = await Promise.race([\n fetch(url, {\n method: 'POST',\n body: formData\n }),\n new Promise<Response>(resolve =>\n timeout = window.setTimeout(() => {\n this._logger.error('Failed to set limit bitrate timed', new Error(`Set limit bitrate timed out [${url}]`));\n resolve({status: 408} as Response);\n }, this._timeout)\n )\n ])\n .finally(() => {\n if (timeout) {\n clearTimeout(timeout);\n }\n });\n } catch (e) {\n this._logger.error('Failed to set limit bitrate timed', e);\n\n return {status: 'failed'};\n }\n\n const status: SetTemporaryMaximalBitrateStatus = this.mapHttpStatusToSetTemporaryMaximalBitrateStatus(httpResponse);\n const finished = Date.now();\n\n this._logger.info('Got set limit bitrate response [%s] in [%s] ms', status, finished - start);\n\n return {status};\n }\n\n async addIceCandidates(stream: IStream, candidates: RTCIceCandidate[], discoveryCompleted: boolean, options: string[] = []): Promise<IAddIceCandidatesResponseInit> {\n const url = this.buildUrl([stream.tenancy, 'stream', stream.streamId, 'ice', 'candidates']).toString();\n const formData = new FormData();\n const body: IAddIceCandidatesRequest = {\n apiVersion,\n sharedSecret: stream.sharedSecret,\n candidates,\n discoveryCompleted,\n options\n };\n\n formData.append('jsonBody', JSON.stringify(body));\n\n const start = Date.now();\n let httpResponse: Response;\n\n try {\n let timeout = null;\n\n httpResponse = await Promise.race([\n fetch(url, {\n method: 'POST',\n body: formData\n }),\n new Promise<Response>(resolve =>\n timeout = window.setTimeout(() => {\n this._logger.error('Failed to add ice candidates', new Error(`Add ice candidates timed out [${url}]`));\n resolve({status: 408} as Response);\n }, this._timeout)\n )\n ])\n .finally(() => {\n if (timeout) {\n clearTimeout(timeout);\n }\n });\n } catch (e) {\n this._logger.error('Failed to add ice candidates', e);\n\n return {status: 'failed'};\n }\n\n const status: AddIceCandidatesStatus = this.mapHttpStatusToAddIceCandidatesStatus(httpResponse);\n\n if (status !== 'ok') {\n return {status};\n }\n\n const finished = Date.now();\n const addIceCandidatesResponse = await this.convertHttpResponseToAddIceCandidatesResponse(httpResponse);\n\n this._logger.info('Got add ICE candidates response [%j] in [%s] ms', addIceCandidatesResponse, finished - start);\n\n return addIceCandidatesResponse;\n }\n\n async destroyStream(stream: IStream, reason: string): Promise<IDestroyStreamResponseInit> {\n const url = this.buildUrl([stream.tenancy, 'stream', stream.streamId, 'destroy']).toString();\n const formData = new FormData();\n const body: IDestroyStreamRequest = {\n apiVersion,\n sharedSecret: stream.sharedSecret,\n reason,\n options: []\n };\n\n formData.append('jsonBody', JSON.stringify(body));\n\n const start = Date.now();\n let httpResponse: Response;\n\n try {\n let timeout = null;\n\n httpResponse = await Promise.race([\n fetch(url, {\n method: 'POST',\n body: formData,\n cache: 'no-cache'\n }),\n new Promise<Response>(resolve =>\n timeout = window.setTimeout(() => {\n this._logger.error('Failed to subscribe', new Error(`Delete stream timed out [${url}]`));\n resolve({status: 408} as Response);\n }, this._timeout)\n )\n ])\n .finally(() => {\n if (timeout) {\n clearTimeout(timeout);\n }\n });\n } catch (e) {\n this._logger.error('Failed to delete stream', e);\n\n return {status: 'failed'};\n }\n\n const status: DestroyStreamStatus = this.mapHttpStatusToSetDestroyStreamStatus(httpResponse);\n\n if (status !== 'ok') {\n return {status};\n }\n\n const finished = Date.now();\n const destroyStreamResponse = await this.convertHttpResponseToDestroyStreamResponse(httpResponse);\n\n this._logger.info('Got destroy stream response [%j] in [%s] ms', destroyStreamResponse, finished - start);\n\n return destroyStreamResponse;\n }\n\n buildUrl(path: string[]): URL {\n const uri = new URL(this._uri);\n const pathAsArray = uri.pathname.split('/');\n\n pathAsArray.length = pathAsArray.length - 1;\n\n uri.pathname = pathAsArray.concat(...path).join('/');\n\n return uri;\n }\n\n private buildPingUrl(): string {\n const uri = new URL(this._uri);\n const sdkVersion = VersionManager.sdkVersion;\n\n uri.search = `?${new URLSearchParams([['type', 'http'], ['version', sdkVersion], ['_', `${Date.now()}`]]).toString()}`;\n\n return uri.toString();\n }\n\n private mapHttpStatusToSubscribeStatus(response: Response): SubscribeStatus {\n if (!response) {\n return 'failed';\n }\n\n switch (response.status) {\n case 200:\n return 'ok';\n case 401:\n return 'unauthorized';\n case 402:\n return 'geo-restricted';\n case 403:\n return 'geo-blocked';\n case 408:\n return 'timeout';\n case 503:\n return 'capacity';\n case 504:\n return 'rate-limited';\n default:\n return 'failed';\n }\n }\n\n private mapHttpStatusToSetRemoteDescriptionStatus(response: Response): SetRemoteDescriptionStatus {\n if (!response) {\n return 'failed';\n }\n\n switch (response.status) {\n case 200:\n return 'ok';\n case 401:\n return 'unauthorized';\n case 408:\n return 'timeout';\n case 503:\n return 'capacity';\n case 504:\n return 'rate-limited';\n default:\n return 'failed';\n }\n }\n\n private mapHttpStatusToSetTemporaryMaximalBitrateStatus(response: Response): SetTemporaryMaximalBitrateStatus {\n if (!response) {\n return 'failed';\n }\n\n switch (response.status) {\n case 200:\n return 'ok';\n case 401:\n return 'unauthorized';\n case 408:\n return 'timeout';\n case 503:\n return 'capacity';\n case 504:\n return 'rate-limited';\n default:\n return 'failed';\n }\n }\n\n private mapHttpStatusToAddIceCandidatesStatus(response: Response): AddIceCandidatesStatus {\n if (!response) {\n return 'failed';\n }\n\n switch (response.status) {\n case 200:\n return 'ok';\n case 401:\n return 'unauthorized';\n case 408:\n return 'timeout';\n case 503:\n return 'capacity';\n case 504:\n return 'rate-limited';\n default:\n return 'failed';\n }\n }\n\n private mapHttpStatusToSetDestroyStreamStatus(response: Response): DestroyStreamStatus {\n if (!response) {\n return 'failed';\n }\n\n switch (response.status) {\n case 200:\n return 'ok';\n case 401:\n return 'unauthorized';\n case 408:\n return 'timeout';\n case 503:\n return 'capacity';\n case 504:\n return 'rate-limited';\n default:\n return 'failed';\n }\n }\n\n private async convertHttpResponseToSubscribeResponse(tenancy: string, response: Response): Promise<ISubscribeResponseInit> {\n const data = await response.json() as ISubscribeResponse;\n const subscribeResponse: ISubscribeResponseInit = {status: data.status};\n\n subscribeResponse.stream = {\n tenancy,\n streamId: data.streamId,\n sharedSecret: data.sharedSecret\n };\n\n subscribeResponse.lag = data.lag;\n\n if (data) {\n if (data.rtcConfiguration) {\n const rtcConfiguration: RTCConfiguration = {};\n\n if (data.rtcConfiguration.bundlePolicy) {\n switch (data.rtcConfiguration.bundlePolicy) {\n case 'BundlePolicyBalanced':\n rtcConfiguration.bundlePolicy = 'balanced';\n\n break;\n case 'BundlePolicyMaxCompat':\n rtcConfiguration.bundlePolicy = 'max-compat';\n\n break;\n case 'BundlePolicyMaxBundle':\n rtcConfiguration.bundlePolicy = 'max-bundle';\n\n break;\n default:\n assertUnreachable(data.rtcConfiguration.bundlePolicy);\n }\n }\n\n if (typeof data.rtcConfiguration.iceCandidatePoolSize === 'number') {\n rtcConfiguration.iceCandidatePoolSize = data.rtcConfiguration.iceCandidatePoolSize;\n }\n\n if (data.rtcConfiguration.iceServers) {\n const iceServers: RTCIceServer[] = [];\n\n for (let i = 0; i < data.rtcConfiguration.iceServers.length; i++) {\n iceServers.push({\n urls: data.rtcConfiguration.iceServers[i].urls,\n username: data.rtcConfiguration.iceServers[i].username,\n credential: data.rtcConfiguration.iceServers[i].credential\n });\n }\n\n rtcConfiguration.iceServers = iceServers;\n }\n\n if (data.rtcConfiguration.iceTransportPolicy) {\n switch (data.rtcConfiguration.iceTransportPolicy) {\n case 'IceTransportPolicyAll':\n rtcConfiguration.iceTransportPolicy = 'all';\n\n break;\n case 'IceTransportPolicyRelay':\n rtcConfiguration.iceTransportPolicy = 'relay';\n\n break;\n case 'IceTransportPolicyPublic':\n // Deprecated - Not supported\n break;\n default:\n assertUnreachable(data.rtcConfiguration.iceTransportPolicy);\n }\n }\n\n if (data.rtcConfiguration.peerIdentity) {\n rtcConfiguration.peerIdentity = data.rtcConfiguration.peerIdentity;\n }\n\n if (data.rtcConfiguration.rtcpMuxPolicy) {\n switch (data.rtcConfiguration.rtcpMuxPolicy) {\n case 'RtcpMuxPolicyNegotiate':\n rtcConfiguration.rtcpMuxPolicy = 'negotiate';\n\n break;\n case 'RtcpMuxPolicyRequire':\n rtcConfiguration.rtcpMuxPolicy = 'require';\n\n break;\n default:\n assertUnreachable(data.rtcConfiguration.rtcpMuxPolicy);\n }\n }\n\n subscribeResponse.rtcConfiguration = rtcConfiguration;\n }\n\n if (data.setRemoteDescriptionResponse && data.setRemoteDescriptionResponse.sessionDescription) {\n subscribeResponse.setRemoteDescriptionResponse = {sessionDescription: this.convertISessionDescriptionToRTCSessionDescription(data.setRemoteDescriptionResponse.sessionDescription)};\n }\n\n if (data.createAnswerDescriptionResponse && data.createAnswerDescriptionResponse.sessionDescription) {\n subscribeResponse.createAnswerDescriptionResponse = {sessionDescription: this.convertISessionDescriptionToRTCSessionDescription(data.createAnswerDescriptionResponse.sessionDescription)};\n }\n\n if (data.createOfferDescriptionResponse && data.createOfferDescriptionResponse.sessionDescription) {\n subscribeResponse.createOfferDescriptionResponse = {sessionDescription: this.convertISessionDescriptionToRTCSessionDescription(data.createOfferDescriptionResponse.sessionDescription)};\n }\n }\n\n return subscribeResponse;\n }\n\n private convertISessionDescriptionToRTCSessionDescription(sessionDescription: ISessionDescription): RTCSessionDescriptionInit {\n const rtcSessionDescription: RTCSessionDescriptionInit = {sdp: sessionDescription.sdp};\n\n switch (sessionDescription.type) {\n case 'Offer':\n rtcSessionDescription.type = 'offer';\n\n break;\n case 'Answer':\n rtcSessionDescription.type = 'answer';\n\n break;\n default:\n assertUnreachable(sessionDescription.type);\n }\n\n return rtcSessionDescription;\n }\n\n private async convertHttpResponseToSetRemoteDescriptionResponse(response: Response): Promise<ISetRemoteDescriptionResponseInit> {\n const data = await response.json() as ISetRemoteDescriptionResponse;\n const setRemoteDescriptionResponse: ISetRemoteDescriptionResponseInit = {status: data.status};\n\n if (data && data.sessionDescription) {\n setRemoteDescriptionResponse.sessionDescription = this.convertISessionDescriptionToRTCSessionDescription(data.sessionDescription);\n }\n\n return setRemoteDescriptionResponse;\n }\n\n private async convertHttpResponseToAddIceCandidatesResponse(response: Response): Promise<IAddIceCandidatesResponseInit> {\n const data = await response.json() as IAddIceCandidatesResponse;\n const addIceCandidatesResponse: IAddIceCandidatesResponseInit = {\n status: data.status,\n options: []\n };\n\n if (data) {\n if (data.options) {\n addIceCandidatesResponse.options = data.options;\n }\n }\n\n return addIceCandidatesResponse;\n }\n\n private async convertHttpResponseToDestroyStreamResponse(response: Response): Promise<IDestroyStreamResponseInit> {\n const data = await response.json() as IDestroyStreamResponse;\n const destroyStream: IDestroyStreamResponseInit = {status: data.status};\n\n return destroyStream;\n }\n\n private convertRTCSdpTypeToSdpType(type: RTCSdpType): SdpType {\n switch (type) {\n case 'answer':\n return 'Answer';\n case 'offer':\n return 'Offer';\n case 'pranswer':\n case 'rollback':\n throw new Error(`SDP type [${type}] is not supported`);\n default:\n assertUnreachable(type);\n }\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport LoggerFactory from '../../logger/LoggerFactory';\nimport EndPoint from './EndPoint';\nimport SDK from '../SDK';\nimport {ILogger} from '../../logger/LoggerInterface';\nimport MetricsType from '../../metrics/MetricsType';\nimport DiscoveryUri from './DiscoveryUri';\nimport MetricsService from '../../metrics/MetricsService';\nimport MetricsFactory from '../../metrics/MetricsFactory';\n\nconst defaultTimeout = 20000;\n\nexport default class DiscoveryService {\n private _logger: ILogger = LoggerFactory.getLogger('Discovery');\n private _metricsService: MetricsService;\n private _uri: URL;\n\n constructor(uri: URL) {\n if (!uri) {\n throw new Error('Discovery requires uri');\n }\n\n this._metricsService = MetricsFactory.getMetricsService(uri.toString());\n this._uri = uri;\n }\n\n async discoverNearbyEndPoints(uri: URL, timeout: number): Promise<EndPoint[]> {\n if (!timeout) {\n throw new Error('Discovery requires timeout');\n }\n\n const url = uri.toString();\n const response = await Promise.race([\n fetch(url, {\n method: 'GET',\n cache: 'no-cache'\n }),\n new Promise<Response>((_, reject) =>\n setTimeout(() => reject(new Error(`Discovery timed out [${url}]`)), timeout)\n )\n ]);\n\n if (!response.ok) {\n throw new Error(`Discovery failed [${url}] [${response.status}]`);\n }\n\n if (response.body === null) {\n throw new Error(`Discovery failed with no data [${url}]`);\n }\n\n const asString = await response.text();\n const endPoints = asString.split(',');\n\n return endPoints.map(endPoint => new EndPoint(endPoint, timeout));\n }\n\n async discoverClosestEndPoint(timeout: number = defaultTimeout): Promise<EndPoint> {\n const url = DiscoveryUri.buildDiscoveryUrl(this._uri);\n const endPoints = await this.discoverNearbyEndPoints(new URL(url), timeout);\n const neverResolve = (): Promise<void> => new Promise(() => {\n this._logger.info('Request [%s] failed, preventing it from completing', url);\n });\n const endPoint = await Promise.race(endPoints.map(endPoint => endPoint\n .ping()\n .catch(e => {\n this._logger.warn('Failed to ping end point [%s]', endPoint, e);\n\n return neverResolve();\n })\n .then(time => {\n const now = Date.now();\n\n this._logger.info('Discovered end point [%s] with time [%s]', endPoint.toString(), time);\n this._metricsService.push({\n metricType: MetricsType.RoundTripTime,\n runtime: (now - SDK.pageLoadTime) / 1000,\n value: {uint64: time || 0},\n resource: endPoint.toString(),\n kind: 'ping'\n });\n\n return endPoint;\n })));\n\n return endPoint;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport EndPoint from './EndPoint';\nimport SDK from '../SDK';\nimport DiscoveryService from './DiscoveryService';\n\nconst discoveryCacheInterval = 60000;\n\ninterface IPerURIEndpoint { [x: string]: Promise<EndPoint> }\n\nexport default class Discovery {\n private static _cache: IPerURIEndpoint = {};\n\n static async precacheClosestEndPointDiscovery(): Promise<EndPoint> {\n const uri = new URL(SDK.discoveryUri.value);\n\n return Discovery.discoverClosestEndPointWithCaching(uri);\n }\n\n static async discoverClosestEndPointWithCaching(uri: URL): Promise<EndPoint> {\n const url = uri.toString();\n\n if (Discovery._cache[url]) {\n return Discovery._cache[url];\n }\n\n const discoveryService = new DiscoveryService(uri);\n const cachedValue = Discovery._cache[url] = discoveryService.discoverClosestEndPoint();\n\n Discovery._cache[url].then(() => {\n const ignored = setTimeout(() => {\n if (Discovery._cache[url] === cachedValue) {\n delete Discovery._cache[url];\n }\n }, discoveryCacheInterval);\n }).catch(e => {\n delete Discovery._cache[url];\n\n throw e;\n });\n\n return cachedValue;\n }\n\n private constructor() {\n throw new Error('Discovery is a static class that may not be instantiated');\n }\n}\n\nconst ignored = Discovery.precacheClosestEndPointDiscovery();","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nexport enum NetworkStates {\n NetworkEmpty,\n NetworkIdle,\n NetworkLoading,\n NetworkNoSource\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport Disposable from '../../lang/Disposable';\nimport BrowserDetector from '../../dom/BrowserDetector';\nimport {ILogger} from '../../logger/LoggerInterface';\nimport LoggerFactory from '../../logger/LoggerFactory';\nimport Strings from '../../lang/Strings';\nimport {StreamInfo} from './FlashRenderer';\nimport DisposableList from '../../lang/DisposableList';\n\nconst defaultPropertyValues = {\n width: 480,\n height: 360,\n videoWidth: 480,\n videoHeight: 360,\n muted: false,\n volume: 1,\n currentTime: 0,\n duration: Infinity,\n readyState: 0,\n ended: false,\n buffered: null,\n autoplay: true\n};\nconst mutedElementListenerInterval = 300;\nconst isEdgeAndRequiresFlashObject = BrowserDetector.browserName === 'Edge';\nconst missingFlashMessage = 'You are using a browser this does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/';\n\ntype EventDisposable = {\n name: string;\n listener: () => void;\n disposable: Disposable;\n}\n\nexport default class FlashPlayer {\n private _logger: ILogger = LoggerFactory.getLogger('FlashPlayer');\n private _isVideo: boolean;\n private _swfSrc: string;\n private _id: string;\n private _width: number;\n private _height: number;\n private _ghost: HTMLVideoElement;\n private _element: HTMLVideoElement;\n private _eventDisposables: EventDisposable[];\n private _disposables: DisposableList = new DisposableList();\n private _flashVars: string[];\n private _isFullscreen: boolean;\n\n constructor(ghost, streamInfo: StreamInfo, options) {\n this._isVideo = ghost.tagName === 'video';\n this._swfSrc = options.swfSrc;\n this._id = ghost.id || options.streamId;\n this._width = ghost.clientWidth;\n this._height = ghost.clientHeight;\n this._ghost = ghost;\n this._element = null;\n this._eventDisposables = [];\n this._flashVars = [\n 'uid=' + this._id,\n `autoplay=${!!ghost.autoplay}`,\n `muted=${!!ghost.muted}`,\n 'allowScriptAccess=always',\n 'preload=true',\n `src=${JSON.stringify(streamInfo)}`\n ];\n\n this._disposables.add(new Disposable(() => {\n this.triggerFlashEvent('fire_stop');\n }));\n\n try {\n if (isEdgeAndRequiresFlashObject) {\n this._element = this.createMicrosoftFlashElement();\n } else {\n this._element = this.setupCrossBrowserFlashElement();\n }\n\n this.setupElement();\n } catch (e) {\n this._logger.error('Error while loading Flash Player ' + e);\n }\n }\n\n get element(): HTMLVideoElement {\n return this._element;\n }\n\n addEventListener(name, listener): void {\n const eventDisposableIndex = this.findEventListenerIndex(name, listener);\n\n if (eventDisposableIndex > -1) {\n return;\n }\n\n document.addEventListener(name, listener);\n\n const disposable = new Disposable(() => {\n document.removeEventListener(name, listener);\n });\n\n this._disposables.add(disposable);\n\n this._eventDisposables.push({\n name: name,\n listener: listener,\n disposable: disposable\n });\n }\n\n removeEventListener(name, listener): void {\n const eventDisposableIndex = this.findEventListenerIndex(name, listener);\n\n if (eventDisposableIndex > -1) {\n const eventDisposable = this._eventDisposables.splice(eventDisposableIndex, 1)[0];\n\n eventDisposable.disposable.dispose();\n }\n }\n\n triggerFlashEvent(eventName, args?): () => void {\n const triggerEvent = this._element[eventName];\n\n if (triggerEvent) {\n return triggerEvent.apply(this._element, args);\n }\n }\n\n dispose(): void {\n this._disposables.dispose();\n }\n\n createMicrosoftFlashElement(): HTMLVideoElement {\n return document.createElement('div') as unknown as HTMLVideoElement;\n }\n\n setupCrossBrowserFlashElement(): HTMLVideoElement {\n const element = document.createElement('embed') as unknown as HTMLVideoElement;\n\n element.setAttribute('id', this._id);\n element.setAttribute('name', '__' + this._id);\n element.setAttribute('play', 'true');\n element.setAttribute('loop', 'false');\n element.setAttribute('quality', 'high');\n element.setAttribute('bgcolor', '#000000');\n element.setAttribute('wmode', 'transparent');\n element.setAttribute('allowScriptAccess', 'always');\n element.setAttribute('allowFullScreen', 'true');\n element.setAttribute('type', 'application/x-shockwave-flash');\n element.setAttribute('pluginspage', '//www.macromedia.com/go/getflashplayer');\n element.setAttribute('src', this._swfSrc);\n element.setAttribute('flashvars', this._flashVars.join('&'));\n\n if (this._isVideo) {\n element.setAttribute('width', this._width.toString());\n element.setAttribute('height', this._height.toString());\n }\n\n return element;\n }\n\n createParameterElement(name: string, value: string): HTMLParamElement {\n const parameter = document.createElement('param');\n\n parameter.setAttribute('name', name);\n parameter.setAttribute('value', value);\n\n return parameter;\n }\n\n setupElement(): void {\n this._element = Object.assign(this._element, defaultPropertyValues, {\n id: this._id,\n width: this._width,\n height: this._height,\n videoWidth: this._width,\n videoHeight: this._height\n });\n\n this.setupAccessors();\n this.propagateAttributeChanges();\n this.setupVolumeAndMutedListeners();\n }\n\n createEvent(eventName, target): Event {\n const eventFrags = eventName.match(/([a-z]+\\.([a-z]+))/i);\n const detail = {\n target: target,\n namespace: ''\n };\n\n if (eventFrags !== null) {\n eventName = eventFrags[1];\n detail.namespace = eventFrags[2];\n }\n\n if (BrowserDetector.browserName === 'IE' && BrowserDetector.browserMajorVersion > 8) {\n const customEvent = window.document.createEvent('CustomEvent');\n\n customEvent.initCustomEvent(eventName, false, false, detail);\n\n return customEvent;\n }\n\n if (!window.CustomEvent) {\n return detail as unknown as Event;\n }\n\n return new window.CustomEvent(eventName, {detail: detail});\n }\n\n getValueFromFlash(name): string {\n const defaultGetter = (): void => null;\n const getter = this._element['get_' + name] || defaultGetter;\n\n return getter.call(this._element);\n }\n\n setupAccessors(): void {\n /* eslint-disable */\n window['__event__' + this._id] = (eventName, message) => {\n\n const event = this.createEvent(eventName, this._element);\n\n if (message) {\n try {\n // @ts-ignore\n event.data = JSON.parse(message);\n // @ts-ignore\n event.details.data = event.data;\n } catch (e) {\n // @ts-ignore\n event.message = message;\n }\n }\n\n switch (eventName) {\n case 'ended':\n // @ts-ignore\n this._element.ended = true;\n\n this._element.dispatchEvent(event);\n\n break;\n case 'error':\n // @ts-ignore\n this._element.error = event.data;\n\n if (this._element.dispatchEvent) {\n // @ts-ignore\n this._element.dispatchEvent(new Error(message));\n }\n\n break;\n case 'loadeddata':\n case 'loadedmetadata':\n case 'loadstart':\n if (this._element.dispatchEvent) {\n this._element.dispatchEvent(event);\n }\n\n break;\n case 'pause':\n // @ts-ignore\n this._element.paused = true;\n\n break;\n case 'play':\n // @ts-ignore\n this._element.paused = false;\n\n break;\n case 'playing':\n // @ts-ignore\n this._element.paused = false;\n\n break;\n case 'progress':\n case 'seeked':\n case 'seeking':\n case 'stalled':\n case 'suspend':\n if (this._element.dispatchEvent) {\n this._element.dispatchEvent(event);\n }\n\n break;\n case 'timeupdate':\n // @ts-ignore\n this._element.currentTime = this.getValueFromFlash('currentTime');\n if (this._element.dispatchEvent) {\n this._element.dispatchEvent(event);\n }\n\n break;\n case 'volumechange':\n break;\n case 'waiting':\n break;\n default:\n break;\n }\n\n this._element.dispatchEvent(event);\n /* eslint-enable */\n };\n /* eslint-disable */\n // @ts-ignore\n const nativeFullScreen = this._element.requestFullscreen || this._element.mozRequestFullScreen || this._element.webkitRequestFullScreen || this._element.msRequestFullscreen;\n\n this._disposables.add(new Disposable(() => {\n delete window['__event__' + this._id];\n }));\n // @ts-ignore\n this._element.play = () => {\n this.triggerFlashEvent('fire_play');\n };\n // @ts-ignore\n this._element.load = () => {\n this.triggerFlashEvent('fire_load');\n };\n // @ts-ignore\n this._element.seek = () => {\n this.triggerFlashEvent('fire_seek');\n };\n // @ts-ignore\n this._element.pause = () => {\n this.triggerFlashEvent('fire_pause');\n };\n // @ts-ignore\n this._element.requestFullscreen = function() {\n this._isFullscreen = true;\n this.addListenerForExitFullScreen();\n\n this._previousHeight = this._element.style.height;\n this._previousWidth = this._element.style.width;\n this._previousPosition = this._element.style.position;\n this._element.style.position = 'absolute';\n this._element.style.height = '100%';\n this._element.style.width = '100%';\n /* eslint-disable */\n // @ts-ignore\n if (typeof window.ActiveXObject !== 'undefined') { // Older IE.\n // @ts-ignore\n const wscript = new window.ActiveXObject('WScript.Shell');\n\n if (wscript !== null) {\n wscript.SendKeys('{F11}');\n }\n }\n /* eslint-enable */\n\n nativeFullScreen.call(this._element);\n };\n\n const triggerFlashSetSize = (): void => {\n this.triggerFlashEvent('set_size', [this._isFullscreen ? screen.width : this._element.clientWidth, this._isFullscreen ? screen.height : this._element.clientHeight]);\n };\n\n window.addEventListener('resize', triggerFlashSetSize);\n\n this._disposables.add(new Disposable(() => {\n window.removeEventListener('resize', triggerFlashSetSize);\n }));\n }\n\n finishInitializationInDom(): HTMLVideoElement {\n if (!isEdgeAndRequiresFlashObject) {\n return this._element;\n }\n\n const id = (isEdgeAndRequiresFlashObject ? '__' + this._id : this._id) + Strings.random(32);\n const embedObject = document.createElement('object') as HTMLDivElement;\n const missingFlashMessageElement = document.createElement('div');\n const childrenElements = [\n this.createParameterElement('movie', this._swfSrc + '?x=' + Date.now()),\n this.createParameterElement('flashvars', this._flashVars.join('&')),\n this.createParameterElement('quality', '2'),\n this.createParameterElement('bgcolor', '#000000'),\n this.createParameterElement('wmode', 'transparent'),\n this.createParameterElement('allowScriptAccess', 'always'),\n this.createParameterElement('allowFullScreen', 'true'),\n missingFlashMessageElement\n ];\n\n missingFlashMessageElement.innerHTML = missingFlashMessage;\n\n if (isEdgeAndRequiresFlashObject) {\n embedObject.setAttribute('type', 'application/x-shockwave-flash');\n embedObject.setAttribute('data', this._swfSrc);\n embedObject.setAttribute('id', id);\n embedObject.setAttribute('width', '__' + this._width.toString());\n embedObject.setAttribute('height', '__' + this._height.toString());\n } else {\n embedObject.setAttribute('classid', 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000');\n embedObject.setAttribute('codebase', '//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab');\n embedObject.setAttribute('id', id);\n embedObject.setAttribute('width', this._width.toString());\n embedObject.setAttribute('height', this._height.toString());\n }\n /* eslint-disable */\n if ('object' in embedObject) {\n childrenElements.forEach((element) => {\n // @ts-ignore\n if (!embedObject.object[element.name]) {\n if ('value' in element) {\n // @ts-ignore\n embedObject.object[element.name] = element.value;\n }\n }\n });\n\n // @ts-ignore\n embedObject.appendChild(missingFlashMessageElement);\n } else {\n childrenElements.forEach((element) => {\n // @ts-ignore\n const existingChildElement = embedObject.children.find((childElement) => {\n return 'name' in element ? childElement.name === element.name : false;\n });\n\n if (existingChildElement) {\n return embedObject.replaceChild(element, existingChildElement);\n }\n\n return embedObject.appendChild(element);\n });\n /* eslint-enable */\n }\n\n this._element.outerHTML = embedObject.outerHTML;\n\n // Issue with IE. When you replace the outerHTML the reference to this element does not correctly reflect the changes.\n // If you want to get the new embed object in the dom you need to query for it.\n if (window.document.getElementById) {\n /* eslint-disable */\n // @ts-ignore\n this._element = window.document.getElementById(id);\n /* eslint-enable */\n\n this.setupElement();\n }\n\n return this._element;\n }\n\n propagateAttributeChanges(): void {\n const ignored = ['currentTime', 'paused', 'error', 'src'];\n\n if (window['MutationObserver']) {\n // Newer browsers support an efficient way to observe DOM modifications\n const observer = new MutationObserver(mutations => {\n mutations.forEach(mutation => {\n if (mutation.type === 'attributes' && mutation.target === this._element && !ignored.includes(mutation.attributeName)) {\n this.setFlashValue(mutation.attributeName, this._element[mutation.attributeName]);\n }\n });\n });\n const configAttributes = {attributes: true};\n\n observer.observe(this._element, configAttributes);\n this._disposables.add(new Disposable(() => {\n observer.disconnect();\n }));\n } else {\n // For older browsers. There is a significant performance overhead with MutationObserver.\n // See https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Mutation_events\n this._logger.info('Falling back to use of DOM event listeners. This results in degraded performance for further DOM modifications and does not work for IE prior to version 9. See https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Mutation_events for details.');\n\n const handleModifiedEvent = (event): void => {\n if (!ignored.includes(event.target.tagName)) {\n this.setFlashValue(event.target.tagName, this._element[event.target.tagName]);\n }\n };\n\n if (this._element.addEventListener) {\n this._element.addEventListener('DOMAttrModified', handleModifiedEvent, false);\n\n this._disposables.add(new Disposable(() => {\n this._element.removeEventListener('DOMAttrModified', handleModifiedEvent, false);\n }));\n } else {\n /* eslint-disable */\n // @ts-ignore\n this._element.attachEvent('onpropertychange', handleModifiedEvent);\n this._disposables.add(new Disposable(() => {\n // @ts-ignore\n this._element.detachEvent('DOMAttrModified', handleModifiedEvent);\n }));\n /* eslint-enable */\n }\n }\n }\n\n getElement(): HTMLVideoElement {\n return this._element;\n }\n\n setFlashValue(name: string, value: string | boolean | number): () => void {\n const defaultSetter = (): void => null;\n const setter = this._element['set_' + name] || defaultSetter;\n\n return setter.call(this._element, value);\n }\n\n setupVolumeAndMutedListeners(): void {\n const mutedListener = this.getMutedListener();\n const volumeListener = this.getVolumeListener();\n const intervalId = setInterval(() => {\n mutedListener();\n volumeListener();\n }, mutedElementListenerInterval);\n\n this._disposables.add(new Disposable(() => {\n clearInterval(intervalId);\n }));\n }\n\n getMutedListener(): () => void {\n if (!this._ghost || !this._element) {\n return (): void => null;\n }\n\n let ghostLastMutedState = this._ghost.muted;\n let elementLastMutedState = this._element.muted;\n\n return (): void => {\n const newGhostMutedState = this._element.muted;\n let newElementMutedState = this._element.muted;\n\n if (newGhostMutedState === ghostLastMutedState && newElementMutedState === elementLastMutedState) {\n return;\n }\n\n if (newGhostMutedState !== ghostLastMutedState) {\n ghostLastMutedState = newGhostMutedState;\n elementLastMutedState = newGhostMutedState;\n newElementMutedState = newGhostMutedState;\n }\n\n if (newElementMutedState !== elementLastMutedState) {\n ghostLastMutedState = newGhostMutedState;\n elementLastMutedState = newGhostMutedState;\n }\n\n this._element.muted = newElementMutedState;\n this._ghost.muted = newElementMutedState;\n\n this.setFlashValue('muted', newElementMutedState);\n };\n }\n\n getVolumeListener(): () => void {\n if (!this._ghost || !this._element) {\n return (): void => null;\n }\n\n let ghostLastVolume = this._ghost.volume;\n let elementLastVolume = this._element.volume;\n\n return (): void => {\n const newGhostVolume = this._element.volume;\n let newElementVolume = this._element.volume;\n\n if (newGhostVolume === ghostLastVolume && newElementVolume === elementLastVolume) {\n return;\n }\n\n if (newGhostVolume !== ghostLastVolume) {\n ghostLastVolume = newGhostVolume;\n elementLastVolume = newGhostVolume;\n newElementVolume = newGhostVolume;\n }\n\n if (newElementVolume !== elementLastVolume) {\n ghostLastVolume = newGhostVolume;\n elementLastVolume = newGhostVolume;\n }\n\n this._element.volume = newElementVolume;\n this._ghost.volume = newElementVolume;\n\n this.setFlashValue('volume', newElementVolume);\n };\n }\n\n findEventListenerIndex(name, listener): number {\n return this._eventDisposables.findIndex(eventDisposable => {\n return eventDisposable.name === name && eventDisposable.listener === listener;\n });\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport {ILogger} from '../../logger/LoggerInterface';\nimport LoggerFactory from '../../logger/LoggerFactory';\nimport Disposable from '../../lang/Disposable';\nimport FlashPlayer from './FlashPlayer';\nimport {StreamInfo} from './FlashRenderer';\nimport DisposableList from '../../lang/DisposableList';\n\nexport default class PhenixFlashVideo {\n private _logger: ILogger = LoggerFactory.getLogger('PhenixFlashVideo');\n private _ghost: HTMLVideoElement;\n private _stream: StreamInfo;\n private _options: {\n swfSrc: string[];\n streamId: string;\n };\n private _disposables: DisposableList = new DisposableList();\n private _flashPlayer: FlashPlayer;\n private _loaded: boolean;\n private _enabled: boolean;\n private _onReady: (enabled: boolean) => void;\n private _video: HTMLVideoElement;\n private _ghostInitStyleCssText: string;\n\n constructor(ghost, stream, options) {\n this._ghost = ghost;\n this._stream = stream;\n this._options = options || {};\n this._flashPlayer = null;\n\n const loaded = (success): void => {\n this._loaded = true;\n this._enabled = success === true;\n\n if (success) {\n this.initialize();\n } else {\n this._logger.error('Failed to create Phenix video element');\n }\n\n if (this._onReady) {\n this._onReady(this._enabled);\n }\n };\n\n try {\n this._video = this.createPhenixFlashVideoElement();\n\n this._video.className = this._ghost.className;\n this._video.height = this._ghost.height;\n this._video.width = this._ghost.width;\n\n this._ghostInitStyleCssText = this._ghost.style.cssText;\n this._ghost.style.cssText = 'visibility:hidden !important;width:0px !important;height:0px !important;' +\n 'margin:0px !important;padding:0px !important;' +\n 'border-style:none !important;border-width:0px !important;' +\n 'max-width:0px !important;max-height:0px !important;outline:none !important';\n this._disposables.add(new Disposable(() => {\n this._ghost.style.cssText = this._ghostInitStyleCssText;\n }));\n /* eslint-disable */\n // @ts-ignore\n this._video.onunload = function() {\n this._loaded = false;\n };\n /* eslint-enable */\n\n this.observeInsertion();\n\n if (!document.body || !document.body.contains) {\n this._logger.info('document.body.contains is not supported');\n }\n\n if (document.body && document.body.contains && document.body.contains(this._ghost)) {\n this._ghost.parentNode.replaceChild(this._video, this._ghost);\n\n if (this._flashPlayer) {\n this._video = this._flashPlayer.finishInitializationInDom();\n }\n\n this._disposables.add(new Disposable(() => {\n if (this._video.parentNode) {\n this._video.parentNode.replaceChild(this._ghost, this._video);\n }\n }));\n }\n\n setTimeout(() => {\n loaded(true);\n });\n } catch (e) {\n this._logger.error('Error while loading Phenix RTC ' + e);\n loaded(false);\n }\n }\n\n hookUpEvents(): void {\n const ghost = this._ghost;\n const onError = (): void => {\n this.dispatchEvent(ghost, 'error');\n };\n\n const onMute = (): void => {\n ghost.muted = this._video.muted;\n this.dispatchEvent(ghost, 'mute');\n };\n\n const onUnmute = (): void => {\n ghost.muted = this._video.muted;\n this.dispatchEvent(ghost, 'unmute');\n };\n\n const onEnded = (): void => {\n /* eslint-disable */\n // @ts-ignore\n ghost.ended = this._video.ended;\n /* eslint-enable */\n this.dispatchEvent(ghost, 'ended');\n };\n\n const onLoadedMetadata = (): void => {\n ghost.width = this._video.width;\n ghost.height = this._video.height;\n this.dispatchEvent(ghost, 'loadedmetadata');\n };\n\n const onLoadedData = (): void => {\n ghost.width = this._video.width;\n ghost.height = this._video.height;\n this.dispatchEvent(ghost, 'loadeddata');\n };\n\n const onResize = (): void => {\n ghost.width = this._video.width;\n ghost.height = this._video.height;\n this.dispatchEvent(ghost, 'resize');\n };\n\n this.addEventListener('error', onError);\n this.addEventListener('mute', onMute);\n this.addEventListener('unmute', onUnmute);\n this.addEventListener('ended', onEnded);\n this.addEventListener('loadedmetadata', onLoadedMetadata);\n this.addEventListener('loadeddata', onLoadedData);\n this.addEventListener('resize', onResize);\n\n const eventDisposable = new Disposable(() => {\n this.removeEventListener('error', onError);\n this.removeEventListener('mute', onMute);\n this.removeEventListener('unmute', onUnmute);\n this.removeEventListener('ended', onEnded);\n this.removeEventListener('loadedmetadata', onLoadedMetadata);\n this.removeEventListener('loadeddata', onLoadedData);\n this.removeEventListener('resize', onResize);\n });\n\n this._disposables.add(eventDisposable);\n }\n\n getElement(): HTMLVideoElement {\n return this._video;\n }\n\n onReady(callback): void {\n if (this._loaded) {\n setTimeout(() => {\n callback(this._enabled);\n }, 1);\n } else {\n this._onReady = callback;\n }\n }\n\n dispose(): void{\n this._disposables.dispose();\n }\n\n private addEventListener(name, listener /* , useCapture */): void {\n window.addEventListener(name, listener);\n }\n\n private removeEventListener(name, listener /* , useCapture */): void {\n window.removeEventListener(name, listener);\n }\n\n private dispatchEvent(source, name): void {\n let event;\n\n if (document.createEvent) {\n event = document.createEvent('HTMLEvents');\n event.initEvent(name, true, true);\n } else {\n /* eslint-disable */\n // @ts-ignore\n event = document.createEventObject();\n event.eventType = name;\n /* eslint-enable */\n }\n\n event.eventName = name;\n\n setTimeout(() => {\n if (document.createEvent) {\n source.dispatchEvent(event);\n } else {\n source.fireEvent('on' + event.eventType, event);\n }\n });\n }\n\n private createPhenixFlashVideoElement(): HTMLVideoElement {\n this._flashPlayer = new FlashPlayer(this._ghost, this._stream, this._options);\n\n this._disposables.add(new Disposable(() => {\n this._flashPlayer.dispose();\n }));\n\n return this._flashPlayer.getElement();\n }\n\n private observeInsertion(): void {\n if (window['MutationObserver']) {\n // Newer browsers support an efficient way to observe DOM modifications\n const observer = new MutationObserver(mutations => {\n mutations.forEach(mutation => {\n if (mutation.type === 'childList') {\n for (let i = 0; i < mutation.addedNodes.length; i++) {\n const node = mutation.addedNodes[i];\n\n if (mutation.target !== this._video) {\n if (node === this._ghost) {\n // Replace element with our video element\n mutation.target.replaceChild(this._video, this._ghost);\n this.initialize();\n } else if (this.isDescendant(mutation.target, this._ghost)) {\n if (this._ghost.parentNode) {\n this._ghost.parentNode.replaceChild(this._video, this._ghost);\n }\n\n this.initialize();\n }\n }\n }\n }\n });\n });\n const configMutations = {\n childList: true,\n attributes: false,\n characterData: false,\n subtree: true\n };\n\n observer.observe(document.body, configMutations);\n\n this._disposables.add(new Disposable(() => {\n observer.disconnect();\n }));\n } else {\n // For older browsers. There is a significant performance overhead with MutationObserver.\n // See https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Mutation_events\n this._logger.info('Falling back to use of DOM event listeners. This results in degraded performance for further DOM modifications and does not work for IE prior to version 9. See https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Mutation_events for details.');\n\n const domInsertedListener = (): void => {\n if (this._ghost.parentNode) {\n this._ghost.parentNode.replaceChild(this._video, this._ghost);\n }\n };\n\n this.addEventListener('DOMNodeInserted', domInsertedListener);\n\n this._disposables.add(new Disposable(() => {\n this.removeEventListener('DOMNodeInserted', domInsertedListener);\n }));\n }\n }\n\n initialize(): void {\n this.hookUpEvents();\n\n this.propagateAttributeChanges();\n\n this._video.id = this._ghost.id || this._video.id;\n this._video.style.cssText = this._ghostInitStyleCssText;\n this._video.className = this._ghost.className;\n /* eslint-disable */\n // @ts-ignore\n this._video.innerHtml = this._ghost.innerHTML;\n /* eslint-enable */\n this._video.width = this._ghost.width;\n this._video.height = this._ghost.height;\n this._video.autoplay = this._ghost.autoplay;\n this._video.muted = this._ghost.muted;\n this._video.defaultMuted = this._ghost.defaultMuted;\n this._video.volume = this._ghost.volume;\n }\n\n private isDescendant(parent, child): boolean {\n let node = child.parentNode;\n\n while (node !== null) {\n if (node === parent) {\n return true;\n }\n\n node = node.parentNode;\n }\n\n return false;\n }\n\n propagateAttributeChanges(): void {\n const readonly = ['style'];\n\n if (window['MutationObserver']) {\n // Newer browsers support an efficient way to observe DOM modifications\n const observer = new MutationObserver(mutations => {\n mutations.forEach(mutation => {\n if (mutation.type === 'attributes' && mutation.target === this._ghost && readonly.indexOf(mutation.attributeName) === -1) {\n this._video[mutation.attributeName] = this._ghost[mutation.attributeName];\n }\n });\n });\n const configAttributes = {attributes: true};\n\n observer.observe(this._ghost, configAttributes);\n\n this._disposables.add(new Disposable(() => {\n observer.disconnect();\n }));\n } else {\n // For older browsers. There is a significant performance overhead with MutationObserver.\n // See https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Mutation_events\n this._logger.info('Falling back to use of DOM event listeners. This results in degraded performance for further DOM modifications and does not work for IE prior to version 9. See https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Mutation_events for details.');\n\n const handleModifiedEvent = (event): void => {\n this._video[event.target.tagName] = this._ghost[event.target.tagName];\n };\n\n if (this._ghost.addEventListener) {\n this._ghost.addEventListener('DOMAttrModified', handleModifiedEvent, false);\n\n this._disposables.add(new Disposable(() => {\n this._ghost.removeEventListener('DOMAttrModified', handleModifiedEvent, false);\n }));\n } else {\n /* eslint-disable */\n // @ts-ignore\n this._ghost.attachEvent('onpropertychange', handleModifiedEvent);\n\n this._disposables.add(new Disposable(() => {\n // @ts-ignore\n this._ghost.detachEvent('DOMAttrModified', handleModifiedEvent);\n }));\n /* eslint-enable */\n }\n }\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nimport {ILogger} from '../../logger/LoggerInterface';\nimport LoggerFactory from '../../logger/LoggerFactory';\nimport PhenixFlashVideo from './PhenixFlashVideo';\nimport {LiveStreamingOptions, LiveStreamingStatistics} from './StreamTypes';\nimport {NetworkStates} from './NetworkStates';\n\nconst timeoutForStallWithoutProgressToRestart = 6000;\nconst minTimeBeforeNextReload = 15000;\nconst mostRecentSwfFile = 'rtmp-flash-renderer-2019.2.18.swf';\nconst defaultSwfFileSrcs = {\n local: 'https://local.phenixrts.com/public/rtmp/' + mostRecentSwfFile,\n staging: 'https://stg.phenixrts.com/public/rtmp/' + mostRecentSwfFile,\n production: 'https://phenixrts.com/public/rtmp/' + mostRecentSwfFile\n};\n\nexport type StreamInfo = {\n uri: string;\n bitrate: string;\n resolution: string;\n};\n\nexport default class FlashRenderer {\n private readonly _logger: ILogger = LoggerFactory.getLogger('FlashPlayer');\n private readonly _stopPlayer: () => void;\n private readonly _onStalled: () => void;\n private readonly _onEnded: () => void;\n private readonly _streamId: string;\n private readonly _streamsInfo: StreamInfo[];\n private readonly _swfSrc: string;\n\n private _options: LiveStreamingOptions;\n private _phenixVideo: PhenixFlashVideo;\n private _playerElement: HTMLVideoElement;\n private _originElement: HTMLVideoElement;\n private _player: {getStats(): LiveStreamingStatistics};\n private _hasFlashPlugin: boolean;\n private _lastReloadTime: number;\n\n constructor(videoElement, type, streamId, streamsInfo, options, stopPlayer: () => void) {\n const defaultSwfFileSrc = defaultSwfFileSrcs[options.env || 'staging'];\n\n this._streamId = streamId;\n this._streamsInfo = streamsInfo.map(info => {\n info.uri = encodeURI(info.uri).replace(/[#]/g, '%23');\n\n return info;\n });\n this._options = options;\n this._phenixVideo = null;\n this._playerElement = null;\n this._player = null;\n this._originElement = videoElement;\n\n this._onStalled = this.stalled.bind(this);\n this._onEnded = this.ended.bind(this);\n this._swfSrc = options.swfSrc || defaultSwfFileSrc;\n this._stopPlayer = stopPlayer;\n }\n\n isSupported(): boolean {\n return this.detectFlashPlugin();\n }\n\n start(): HTMLVideoElement {\n const options = {\n streamId: this._streamId,\n swfSrc: this._swfSrc\n };\n\n this._phenixVideo = new PhenixFlashVideo(this._originElement, this._streamsInfo, options);\n\n this._phenixVideo.hookUpEvents();\n\n this._playerElement = this._phenixVideo.getElement();\n\n if (this._playerElement) {\n this._playerElement.play();\n }\n\n this._playerElement.addEventListener('stalled', this._onStalled, false);\n this._playerElement.addEventListener('pause', this._onStalled, false);\n this._playerElement.addEventListener('suspend', this._onStalled, false);\n this._playerElement.addEventListener('ended', this._onEnded, false);\n\n return this._playerElement;\n }\n\n dispose(): void {\n if (this._phenixVideo) {\n const finalizeStreamEnded = (): void => {\n if (this._playerElement) {\n this._playerElement.removeEventListener('stalled', this._onStalled, false);\n this._playerElement.removeEventListener('pause', this._onStalled, false);\n this._playerElement.removeEventListener('suspend', this._onStalled, false);\n this._playerElement.removeEventListener('ended', this._onEnded, false);\n }\n\n this._playerElement = null;\n this._originElement = null;\n };\n\n try {\n this._phenixVideo.dispose();\n this._phenixVideo = null;\n\n finalizeStreamEnded();\n\n this._logger.info('[%s] Flash player has been destroyed', this._streamId);\n } catch (e) {\n this._logger.error('[%s] Error while destroying Flash player [%s]', this._streamId, e.code, e);\n\n finalizeStreamEnded();\n }\n }\n }\n\n getStats(): LiveStreamingStatistics {\n const statistics = {\n width: 0,\n height: 0,\n currentTime: 0.0,\n lag: 0.0,\n networkState: NetworkStates.NetworkNoSource\n };\n\n if (!this._playerElement) {\n return statistics;\n }\n\n statistics.currentTime = this._playerElement.currentTime;\n\n const trueCurrentTime = (Date.now() - this._options.originStartTime) / 1000;\n\n statistics.lag = Math.max(0.0, trueCurrentTime - statistics.currentTime);\n\n return statistics;\n }\n\n getPlayer(): HTMLVideoElement {\n return this._playerElement;\n }\n\n reload(): void {\n this._phenixVideo.dispose();\n\n this.start();\n }\n\n private detectFlashPlugin(): boolean {\n const defaultVersion = [10, 0, 0];\n const pluginName = 'Shockwave Flash';\n const mimeType = 'application/x-shockwave-flash';\n const activeX = 'ShockwaveFlash.ShockwaveFlash';\n let version: string[] | number[] = ['0', '0', '0'];\n\n if (typeof this._hasFlashPlugin === 'boolean') {\n return this._hasFlashPlugin;\n }\n\n // Firefox, Webkit, Opera\n if (window.navigator && window.navigator.plugins && window.navigator.plugins[pluginName]) {\n const description = window.navigator.plugins[pluginName].description;\n\n /* eslint-disable */\n if (description &&\n window.navigator.mimeTypes &&\n window.navigator.mimeTypes[mimeType] &&\n !window.navigator.mimeTypes[mimeType].enabledPlugin) {\n version = description.replace(pluginName, '').replace(/^\\s+/, '').replace(/\\sr/gi, '.').split('.');\n\n for (let i = 0, total = version.length; i < total; i++) {\n // @ts-ignore\n version[i] = parseInt(version[i].match(/\\d+/), 10);\n }\n }\n // Internet Explorer / ActiveX\n // @ts-ignore\n } else if (window.ActiveXObject) {\n try {\n // @ts-ignore\n const ax = new window.ActiveXObject(activeX);\n\n if (ax) {\n const versionString = ax.GetVariable('$version') || '';\n const versionInfo = versionString.split(' ')[1].version.split(',');\n\n version = [parseInt(versionInfo[0], 10), parseInt(versionInfo[1], 10), parseInt(versionInfo[2], 10)];\n }\n } catch (e) {\n console.error(e);\n }\n }\n /* eslint-enable */\n\n this._hasFlashPlugin = (version[0] > defaultVersion[0] || (version[0] === defaultVersion[0] && version[1] > 0) || (version[0] === defaultVersion[0] && version[1] === 0 && version[2] >= 0));\n\n return this._hasFlashPlugin;\n }\n\n private stalled(): void {\n this._logger.info('[%s] Loading flash player stalled caused by [%s] event.', this._streamId, event.type);\n\n const currentVideoTime = this._playerElement.currentTime;\n\n setTimeout(() => {\n if (this._playerElement && this._playerElement.currentTime === currentVideoTime && !this._playerElement.paused && this.canReload()) {\n this._logger.warn('Reloading stream after being stalled for [%s] seconds', timeoutForStallWithoutProgressToRestart / 1000);\n\n this.reloadIfAble();\n }\n }, timeoutForStallWithoutProgressToRestart);\n }\n\n private ended(): void {\n this._logger.info('[%s] Flash player ended.', this._streamId);\n this._stopPlayer();\n }\n\n private canReload(): boolean {\n const hasElapsedMinTimeSinceLastReload = !this._lastReloadTime || Date.now() - this._lastReloadTime > minTimeBeforeNextReload;\n\n return this._playerElement && this._playerElement.buffered.length !== 0 && hasElapsedMinTimeSinceLastReload;\n }\n\n private reloadIfAble(): void {\n if (!this.canReload()) {\n return;\n }\n\n this._logger.warn('Reloading unhealthy stream that was active for at least [%s] seconds', minTimeBeforeNextReload / 1000);\n\n this._lastReloadTime = Date.now();\n\n this.reload();\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport ChannelContext from '../channels/ChannelContext';\nimport Discovery from '../discovery/Discovery';\nimport Disposable from '../../lang/Disposable';\nimport DisposableList from '../../lang/DisposableList';\nimport FlashRenderer from './FlashRenderer';\nimport LoggerFactory from '../../logger/LoggerFactory';\nimport {IStream} from './IStream';\nimport {ILogger} from '../../logger/LoggerInterface';\nimport {ChannelState} from '../channels';\n\nexport default class RtmpStream implements IStream {\n private readonly _logger: ILogger = LoggerFactory.getLogger('RtmpStream');\n private readonly _channelContext: ChannelContext;\n private readonly _monitorDisposables = new DisposableList();\n private readonly _handleStreamFailure: () => Promise<void>;\n\n private _originElement: HTMLVideoElement;\n private _monitorFailureCount = 0;\n\n constructor(channelContext, handleStreamFailure: () => Promise<void>) {\n this._channelContext = channelContext;\n this._handleStreamFailure = handleStreamFailure;\n this._channelContext.disposables.add(this);\n }\n\n start(uri, token): Promise<void> {\n return Discovery.discoverClosestEndPointWithCaching(uri)\n .then(endPoint => {\n this._channelContext.online.value = true;\n this._channelContext.endPoint.value = endPoint;\n this._logger.info('Connecting to [%s]', endPoint.toString());\n\n return endPoint.subscribe(token, null, this._channelContext.failureCount.value);\n })\n .then(({status, stream, createOfferDescriptionResponse, lag}) => {\n this._channelContext.stream.value = stream;\n this._channelContext.lag.value = lag;\n\n this._channelContext.applySessionAndStreamPropertiesToVideoElement();\n\n this._logger.debug(\n '[%s] Subscribe completed [%s] [%j]',\n this._channelContext.streamId,\n status,\n createOfferDescriptionResponse,\n );\n\n this._channelContext.state.value = this._channelContext.mapSubscribeStatusToChannelStatus(status);\n\n this._channelContext.applyStatus(status);\n\n if (status !== 'ok') {\n return;\n }\n\n const offerSdp = createOfferDescriptionResponse.sessionDescription.sdp;\n const options = {\n originStartTime: Date.now() - lag + this._channelContext.endPoint.value.roundTripTime / 2,\n lag\n };\n const rtmpStreamManifestMatch = offerSdp.match(/a=x-rtmp:(rtmp:\\/\\/[^\\n]*)/m);\n const rtmpOption = rtmpStreamManifestMatch && rtmpStreamManifestMatch[1] ? rtmpStreamManifestMatch[1] : '';\n\n if (!rtmpOption) {\n this._channelContext.state.value = ChannelState.Error;\n\n throw new Error('No RTMP URL provided in SDP');\n }\n\n const rtmpUriAndAttributes = rtmpOption;\n const rtmpUri = rtmpUriAndAttributes.match(/(rtmp:\\/\\/[^\\n\\s]*)/)[0] || '';\n const bitrate = rtmpUriAndAttributes.match(/bitrate=([^\\n\\s;]*)/)[1];\n const resolution = rtmpUriAndAttributes.match(/resolution=([^\\n\\s;]*)/)[1];\n const player = new FlashRenderer(this._channelContext.videoElement.value, 'rtmp', this._channelContext.streamId, [{\n uri: rtmpUri,\n bitrate: bitrate,\n resolution: resolution\n }],\n options,\n () => this.onEnded(player)\n );\n\n this._originElement = this._channelContext.videoElement.value;\n\n this.monitor(player);\n\n player.start();\n this._channelContext.videoElement.value = player.getPlayer();\n });\n }\n\n onEnded(player: FlashRenderer): void {\n this._channelContext.state.value = ChannelState.Error;\n this._channelContext.videoElement.value = this._originElement;\n\n this._channelContext.playing.value = false;\n this._channelContext.loading.value = true;\n\n player.dispose();\n this._monitorDisposables.dispose();\n\n const ignored = this._handleStreamFailure()\n .catch(e => {\n this._logger.error('Failed handling stream failure', e);\n });\n }\n\n private monitor(player: FlashRenderer): void {\n this._monitorDisposables.dispose();\n\n const playerElement = player.getPlayer();\n const timeout = window.setTimeout(() => {\n const newStreamStatistics = player.getStats();\n\n if (isNaN(newStreamStatistics.currentTime)) {\n this._monitorFailureCount++;\n\n if (this._monitorFailureCount > 6) {\n this._monitorFailureCount = 0;\n this.onEnded(player);\n\n return;\n }\n } else {\n this._monitorFailureCount = 0;\n }\n\n this.monitor(player);\n }, 1000);\n\n if (playerElement && playerElement.paused && this._channelContext.state.value === ChannelState.Playing) {\n this._channelContext.state.value = ChannelState.Paused;\n }\n\n if (playerElement && !playerElement.paused && this._channelContext.state.value !== ChannelState.Playing) {\n this._channelContext.state.value = ChannelState.Playing;\n }\n\n this._monitorDisposables.add(new Disposable(() => {\n clearTimeout(timeout);\n }));\n }\n\n dispose(): void {\n this._monitorDisposables.dispose();\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport {ILogger} from '../../logger/LoggerInterface';\nimport LoggerFactory from '../../logger/LoggerFactory';\nimport {LiveStreaming} from './LiveStreaming';\nimport {LiveStreamingOptions, LiveStreamingStatistics} from './StreamTypes';\nimport {NetworkStates} from './NetworkStates';\n\nconst bandwidthToStartAt = 3000000; // Corresponds to 720p in most setups\nconst minTimeBeforeNextReload = 15000;\n\ntype EventListenerForWebPlayer = (evt: WebPlayerEvent) => void;\ntype WebPlayerEvent = {\n code: number;\n severity: number;\n error: string;\n}\n\nexport interface IWebPlayer {\n start: (url: string) => void;\n addEventListener(name: string, listener: EventListenerForWebPlayer): void;\n dispose(): void;\n errors: {\n severity: {\n RECOVERABLE: number;\n };\n };\n getStats(): LiveStreamingStatistics;\n}\n\nexport default class WebPlayer {\n private readonly _logger: ILogger = LoggerFactory.getLogger('WebPlayer');\n private readonly _videoElement: HTMLVideoElement;\n private readonly _kind: string;\n private readonly _streamId: string;\n private readonly _manifestURI: string;\n private readonly _options: LiveStreamingOptions;\n private _player: IWebPlayer;\n private _lastReloadTime: number;\n\n constructor(videoElement: HTMLVideoElement, kind: string, streamId: string, manifestURI: string, options: LiveStreamingOptions) {\n this._videoElement = videoElement;\n this._kind = kind;\n this._streamId = streamId;\n this._manifestURI = encodeURI(manifestURI).replace(/[#]/g, '%23');\n this._options = options;\n }\n\n start(): void {\n if (LiveStreaming.phenixWebPlayer) {\n const playerOptions = {\n ...this._options,\n bandwidthToStartAt\n };\n\n this._player = new LiveStreaming.phenixWebPlayer.WebPlayer(this._logger, this._videoElement, playerOptions);\n this._player.start(this._manifestURI);\n\n this._player.addEventListener('error', errorObject => {\n if (this.canReload() && errorObject && (errorObject.code === 3 || errorObject.severity === LiveStreaming.phenixWebPlayer.errors.severity.RECOVERABLE)) {\n this._logger.warn('Reloading unhealthy stream after error event [%j]', errorObject);\n this.reloadIfAble();\n }\n\n this._logger.error('Cannot reload with error [%j]', errorObject);\n });\n\n return;\n }\n }\n\n isSupported(): boolean {\n return LiveStreaming.phenixWebPlayer && LiveStreaming.phenixWebPlayer.isSupported;\n }\n\n getStats(): LiveStreamingStatistics {\n if (!this._player) {\n return {\n width: 0,\n height: 0,\n currentTime: 0.0,\n lag: 0.0,\n networkState: NetworkStates.NetworkNoSource,\n dataBuffered: 0.0\n };\n }\n\n const statistics = this._player.getStats();\n const currentTime = statistics.currentTime || this._videoElement['currentTime'];\n const trueCurrentTime = (Date.now() - this._options.originStartTime) / 1000;\n\n if (this._videoElement.buffered && this._videoElement.buffered.length) {\n statistics.dataBuffered = this._videoElement.buffered.end(0);\n }\n\n if (statistics.isNative && statistics.deliveryType === 'Hls') {\n statistics.currentTime = currentTime - statistics.lag;\n }\n\n if (!statistics.currentTime) {\n statistics.currentTime = currentTime;\n }\n\n if (!statistics.isNative) {\n statistics.lag = Math.max(0.0, trueCurrentTime - currentTime);\n }\n\n if (statistics.estimatedBandwidth > 0) {\n statistics.networkState = NetworkStates.NetworkLoading;\n } else if (statistics.playTime > 0) {\n statistics.networkState = NetworkStates.NetworkIdle;\n } else if (statistics.video) {\n statistics.networkState = NetworkStates.NetworkEmpty;\n } else {\n statistics.networkState = NetworkStates.NetworkNoSource;\n }\n\n return statistics;\n }\n\n dispose(): void {\n if (this._player) {\n this._player.dispose();\n }\n\n this._player = null;\n }\n\n private canReload(): boolean {\n const hasElapsedMinTimeSinceLastReload = !this._lastReloadTime || Date.now() - this._lastReloadTime > minTimeBeforeNextReload;\n\n return this._videoElement && this._player && this._videoElement.buffered.length !== 0 && hasElapsedMinTimeSinceLastReload;\n }\n\n private reloadIfAble(): void {\n if (!this.canReload()) {\n return;\n }\n\n this._logger.warn('[%s] Reloading unhealthy stream that was active for at least [%s] seconds', this._streamId, minTimeBeforeNextReload / 1000);\n\n this._lastReloadTime = Date.now();\n\n this.reload();\n }\n\n private reload(): void {\n this._player.dispose();\n\n this._player = null;\n\n this.start();\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport {ILogger} from '../../logger/LoggerInterface';\nimport LoggerFactory from '../../logger/LoggerFactory';\nimport {LiveStreaming} from './LiveStreaming';\nimport {LiveStreamingOptions, LiveStreamingStatistics} from './StreamTypes';\nimport {NetworkStates} from './NetworkStates';\n\ntype ShakaOptions = {\n abr: {\n defaultBandwidthEstimate: number;\n };\n manifest: {\n retryParameters: {\n timeout: number;\n };\n };\n streaming: {\n rebufferingGoal: number;\n bufferingGoal: number;\n bufferBehind: number;\n retryParameters: {\n timeout: number;\n maxAttempts: number;\n backoffFactor: number;\n };\n };\n}\n\nexport interface IShaka {\n configure: (o: ShakaOptions) => void;\n load: (uri: string) => Promise<void>;\n getStats: () => LiveStreamingStatistics;\n destroy: () => void;\n unload: () => void;\n}\n\nexport default class ShakaPlayer {\n private readonly _logger: ILogger = LoggerFactory.getLogger('ShakaPlayer');\n private readonly _videoElement: HTMLVideoElement;\n private readonly _kind: string;\n private readonly _streamId: string;\n private readonly _manifestURI: string;\n private readonly _options: LiveStreamingOptions;\n private _player: IShaka;\n\n constructor(videoElement: HTMLVideoElement, kind: string, streamId: string, manifestURI: string, options: LiveStreamingOptions) {\n this._videoElement = videoElement;\n this._kind = kind;\n this._streamId = streamId;\n this._manifestURI = encodeURI(manifestURI).replace(/[#]/g, '%23');\n this._options = options;\n }\n\n start(): void {\n if (LiveStreaming.shaka) {\n const playerOptions: ShakaOptions = {\n abr: {defaultBandwidthEstimate: 2000000},\n manifest: {retryParameters: {timeout: 10000}},\n streaming: {\n rebufferingGoal: 2,\n bufferingGoal: 10,\n bufferBehind: 30,\n retryParameters: {\n timeout: 10000,\n maxAttempts: 10,\n backoffFactor: 1.1\n }\n }\n };\n\n this._player = new LiveStreaming.shaka.Player(this._videoElement);\n this.loadPlayer(playerOptions);\n\n return;\n }\n }\n\n getStats(): LiveStreamingStatistics {\n if (!this._player) {\n return {\n width: 0,\n height: 0,\n currentTime: 0,\n lag: 0,\n networkState: NetworkStates.NetworkNoSource\n };\n }\n\n const statistics = {\n ...this._player.getStats(),\n currentTime: 0,\n lag: 0\n };\n const currentTime = this._videoElement['currentTime'] || 0;\n const trueCurrentTime = (Date.now() - this._options.originStartTime) / 1000;\n const lag = Math.max(0.0, trueCurrentTime - currentTime);\n\n if (this._videoElement) {\n statistics.currentTime = currentTime;\n statistics.lag = lag;\n\n if (this._videoElement.buffered && this._videoElement.buffered.length) {\n statistics.dataBuffered = this._videoElement.buffered.end(0);\n }\n }\n\n if (statistics.estimatedBandwidth > 0) {\n statistics.networkState = NetworkStates.NetworkLoading;\n } else if (statistics.playTime > 0) {\n statistics.networkState = NetworkStates.NetworkIdle;\n } else if (statistics.video) {\n statistics.networkState = NetworkStates.NetworkEmpty;\n } else {\n statistics.networkState = NetworkStates.NetworkNoSource;\n }\n\n return statistics;\n }\n\n dispose(): void {\n if (this._player) {\n this._player.unload();\n this._player.destroy();\n }\n\n this._player = null;\n }\n\n private loadPlayer(playerConfig: ShakaOptions): void {\n this._player.configure(playerConfig);\n\n const ignored = this._player.load(this._manifestURI).then(() => {\n this._logger.info('[%s] DASH live stream has been loaded', this._streamId);\n\n if (this._videoElement.play) {\n this._videoElement.play();\n }\n }).catch(e => {\n this._logger.error('[%s] Error while loading DASH live stream [%s]', this._streamId, e.code, e);\n });\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport {LiveStreaming} from './LiveStreaming';\nimport {LiveStreamingOptions, LiveStreamingStatistics} from './StreamTypes';\nimport {IHlsPlayerType} from './IHlsPlayer';\nimport {NetworkStates} from './NetworkStates';\n\nexport default class HlsPlayer {\n private readonly _videoElement: HTMLVideoElement;\n private readonly _kind: string;\n private readonly _streamId: string;\n private readonly _manifestURI: string;\n private readonly _options: LiveStreamingOptions;\n private _player: IHlsPlayerType;\n\n constructor(videoElement: HTMLVideoElement, kind: string, streamId: string, manifestURI: string, options: LiveStreamingOptions) {\n this._videoElement = videoElement;\n this._kind = kind;\n this._streamId = streamId;\n this._manifestURI = encodeURI(manifestURI).replace(/[#]/g, '%23');\n this._options = options;\n }\n\n start(): void {\n if (LiveStreaming.hlsPlayer) {\n if (LiveStreaming.hlsPlayer.isSupported()) {\n this._player = new LiveStreaming.hlsPlayer({\n enableWorker: true,\n maxBufferLength: 1,\n liveBackBufferLength: 0,\n liveSyncDuration: 7,\n liveDurationInfinity: true,\n liveMaxLatencyDuration: Infinity,\n highBufferWatchdogPeriod: 1\n });\n this._player.loadSource(this._manifestURI);\n this._player.attachMedia(this._videoElement);\n } else if (this._videoElement.canPlayType('application/vnd.apple.mpegurl')) {\n this._videoElement.src = this._manifestURI;\n }\n }\n }\n\n isSupported(): boolean {\n return LiveStreaming.hlsPlayer && LiveStreaming.hlsPlayer.isSupported();\n }\n\n getStats(): LiveStreamingStatistics {\n if (!this._player) {\n return {\n width: 0,\n height: 0,\n currentTime: 0.0,\n lag: 0.0,\n networkState: NetworkStates.NetworkNoSource\n };\n }\n\n const statistics = {\n width: this._player.media.offsetWidth,\n height: this._player.media.offsetHeight,\n currentTime: this._player.media.currentTime,\n lag: 0.0,\n networkState: NetworkStates.NetworkIdle,\n dataBuffered: 0.0\n };\n\n if (this._videoElement.buffered && this._videoElement.buffered.length) {\n statistics.dataBuffered = this._videoElement.buffered.end(0);\n }\n\n if (this._player.streamController.state === 'IDLE') {\n statistics.networkState = NetworkStates.NetworkIdle;\n } else if (this._player.streamController.state === 'ERROR' || this._player.streamController.state === 'ENDED') {\n statistics.networkState = NetworkStates.NetworkNoSource;\n } else if (this._player.streamController.state.includes('LOADING') || this._player.streamController.state.includes('WAITING')) {\n statistics.networkState = NetworkStates.NetworkLoading;\n } else {\n statistics.networkState = NetworkStates.NetworkEmpty;\n }\n\n const currentTime = this._videoElement['currentTime'] || 0;\n const trueCurrentTime = (Date.now() - this._options.originStartTime) / 1000;\n\n statistics.lag = Math.max(0.0, (currentTime + (this._options.lag / 1000)) - trueCurrentTime);\n\n return statistics;\n }\n\n dispose(): void {\n if (this._player && this._player.destroy) {\n this._player.destroy();\n\n this._player = null;\n }\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport FeatureEnablement from '../feature/FeatureEnablement';\nimport WebPlayer from './WebPlayer';\nimport SDK from '../SDK';\nimport ShakaPlayer from './ShakaPlayer';\nimport HlsPlayer from './HlsPlayer';\nimport IDisposable from '../../lang/IDisposable';\nimport {HlsPlayerType, LiveStreamingOptions, LiveStreamingStatistics, ShakaType, WebPlayerType} from './StreamTypes';\n\nexport class LiveStreaming {\n private static _pending = false;\n private static _hlsPlayer: HlsPlayerType;\n private static _phenixWebPlayer: WebPlayerType;\n private static _shaka: ShakaType;\n private static _options: LiveStreamingOptions;\n private static _player: ShakaPlayer | WebPlayer | HlsPlayer;\n\n static get hlsPlayer(): HlsPlayerType {\n return this._hlsPlayer;\n }\n\n static get phenixWebPlayer(): WebPlayerType {\n return this._phenixWebPlayer;\n }\n\n static get shaka(): ShakaType {\n return this._shaka;\n }\n\n static async start(videoElement: HTMLVideoElement, streamId: string, offerSdp: string, options: LiveStreamingOptions): Promise<IDisposable> {\n this._options = options;\n\n if (this._hlsPlayer || this._shaka || this._phenixWebPlayer) {\n return this.loaded(videoElement, streamId, offerSdp);\n }\n\n if (!SDK.webPlayerLoader && !SDK.shakaPlayerLoader && !SDK.hlsJsLoader) {\n throw new Error('No player is provided');\n }\n\n if (!SDK.webPlayerLoader && !SDK.shakaPlayerLoader && !SDK.hlsJsLoader) {\n throw new Error('Unsupported-feature, add stream player');\n }\n\n return new Promise(resolve => {\n if (SDK.hlsJsLoader) {\n this._pending = true;\n SDK.hlsJsLoader(player => {\n this._hlsPlayer = player;\n\n if (this._pending) {\n this._pending = false;\n\n resolve(this.loaded(videoElement, streamId, offerSdp));\n }\n });\n }\n\n if (SDK.webPlayerLoader) {\n this._pending = true;\n SDK.webPlayerLoader(player => {\n this._phenixWebPlayer = player;\n\n if (this._pending) {\n this._pending = false;\n\n resolve(this.loaded(videoElement, streamId, offerSdp));\n }\n });\n }\n\n if (SDK.shakaPlayerLoader) {\n this._pending = true;\n SDK.shakaPlayerLoader(player => {\n this._shaka = player;\n\n if (this._pending) {\n this._pending = false;\n\n resolve(this.loaded(videoElement, streamId, offerSdp));\n }\n });\n }\n });\n }\n\n static getStats(): LiveStreamingStatistics {\n if (this._player) {\n return this._player.getStats();\n }\n\n return null;\n }\n\n private static play(Player: typeof WebPlayer | typeof ShakaPlayer | typeof HlsPlayer, videoElement: HTMLVideoElement, streamId: string, offerSdp: string, options: LiveStreamingOptions): IDisposable {\n const dashManifestUrlMatch = offerSdp.match(/a=x-playlist:([^\\n]*[.]mpd\\??[^\\s]*)/m);\n const hlsManifestUrlMatch = offerSdp.match(/a=x-playlist:([^\\n]*[.]m3u8\\??[^\\s]*)/m);\n const manifestUrl = dashManifestUrlMatch && dashManifestUrlMatch[1] ? dashManifestUrlMatch[1] : '';\n const playlistUrl = hlsManifestUrlMatch && hlsManifestUrlMatch[1] ? hlsManifestUrlMatch[1] : '';\n\n if (FeatureEnablement.shouldUseNativeHls || (this._hlsPlayer && this._hlsPlayer.isSupported())) {\n this._player = new Player(videoElement, 'hls', streamId, playlistUrl, options);\n\n this._player.start();\n\n return this._player;\n }\n\n this._player = new Player(videoElement, 'dash', streamId, manifestUrl, options);\n\n this._player.start();\n\n return this._player;\n }\n\n private static loaded(videoElement: HTMLVideoElement, streamId: string, offerSdp: string): IDisposable {\n if (!this._shaka && !this._phenixWebPlayer && !this._hlsPlayer) {\n return;\n }\n\n if (this._hlsPlayer) {\n return this.play(HlsPlayer, videoElement, streamId, offerSdp, {\n ...this._options,\n preferNative: FeatureEnablement.shouldUseNativeHls\n });\n }\n\n if (this._phenixWebPlayer) {\n return this.play(WebPlayer, videoElement, streamId, offerSdp, {\n ...this._options,\n preferNative: FeatureEnablement.shouldUseNativeHls\n });\n }\n\n if (this._shaka) {\n return this.play(ShakaPlayer, videoElement, streamId, offerSdp, {\n ...this._options,\n preferNative: FeatureEnablement.shouldUseNativeHls\n });\n }\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport ChannelContext from '../channels/ChannelContext';\nimport Discovery from '../discovery/Discovery';\nimport Disposable from '../../lang/Disposable';\nimport DisposableList from '../../lang/DisposableList';\nimport LoggerFactory from '../../logger/LoggerFactory';\nimport {ChannelState} from '../channels';\nimport {LiveStreaming} from './LiveStreaming';\nimport {LiveStreamingStatistics} from './StreamTypes';\nimport IDisposable from '../../lang/IDisposable';\nimport {IStream} from './IStream';\nimport {ILogger} from '../../logger/LoggerInterface';\n\nexport default class ChunkedStream implements IStream {\n private readonly _logger: ILogger = LoggerFactory.getLogger('ChunkedStream');\n private readonly _channelContext: ChannelContext;\n private readonly _monitorDisposables = new DisposableList();\n private readonly _handleStreamFailure: () => Promise<void>;\n private _streamStatistics: LiveStreamingStatistics;\n private _monitorFailureCount = 0;\n\n constructor(channelContext, handleStreamFailure: () => Promise<void>) {\n this._channelContext = channelContext;\n this._handleStreamFailure = handleStreamFailure;\n this._channelContext.disposables.add(this);\n }\n\n start(uri: URL, token: string): Promise<void | IDisposable> {\n return Discovery.discoverClosestEndPointWithCaching(uri)\n .then(endPoint => {\n this._channelContext.online.value = true;\n this._channelContext.endPoint.value = endPoint;\n this._logger.info('Connecting to [%s]', endPoint.toString());\n\n return endPoint.subscribe(token, null, this._channelContext.failureCount.value);\n })\n .then(({status, stream, createOfferDescriptionResponse, lag}) => {\n this._channelContext.stream.value = stream;\n this._channelContext.lag.value = lag;\n\n this._channelContext.applySessionAndStreamPropertiesToVideoElement();\n\n this._logger.debug(\n '[%s] Subscribe completed [%s] [%j] [%j] [%j] [%j]',\n this._channelContext.streamId,\n status,\n createOfferDescriptionResponse,\n );\n\n this._channelContext.state.value = this._channelContext.mapSubscribeStatusToChannelStatus(status);\n\n this._channelContext.applyStatus(status);\n\n if (status !== 'ok') {\n return;\n }\n\n const offerSdp = createOfferDescriptionResponse.sessionDescription.sdp;\n const options = {\n originStartTime: Date.now() - lag + this._channelContext.endPoint.value.roundTripTime / 2,\n lag\n };\n\n return LiveStreaming.start(this._channelContext.videoElement.value, this._channelContext.streamId, offerSdp, options)\n .then(player => {\n this.monitor(player);\n\n return player;\n })\n .catch(e => {\n this._logger.error('LiveStreaming failed', e);\n this._channelContext.loading.value = false;\n this._channelContext.playing.value = false;\n this._channelContext.state.value = ChannelState.Stopped;\n });\n });\n }\n\n private monitor(player: IDisposable): void {\n this._monitorDisposables.dispose();\n\n const timeout = window.setTimeout(() => {\n const newStreamStatistics = LiveStreaming.getStats();\n\n if (this._streamStatistics &&\n this._streamStatistics.currentTime >= newStreamStatistics.currentTime &&\n this._streamStatistics.dataBuffered >= newStreamStatistics.dataBuffered\n ) {\n this._monitorFailureCount++;\n\n if (this._monitorFailureCount > 6) {\n this._monitorFailureCount = 0;\n this._channelContext.state.value = ChannelState.Error;\n\n this._channelContext.playing.value = false;\n this._channelContext.loading.value = true;\n player.dispose();\n this._monitorDisposables.dispose();\n\n const ignored = this._handleStreamFailure()\n .catch(e => {\n this._logger.error('Failed handling stream failure', e);\n });\n\n return;\n }\n } else {\n this._monitorFailureCount = 0;\n }\n\n if (this._channelContext.videoElement.value.paused && this._channelContext.state.value === ChannelState.Playing) {\n this._channelContext.state.value = ChannelState.Paused;\n }\n\n if (!this._channelContext.videoElement.value.paused && this._channelContext.state.value !== ChannelState.Playing) {\n this._channelContext.state.value = ChannelState.Playing;\n }\n\n this._streamStatistics = newStreamStatistics;\n this.monitor(player);\n }, 1000);\n\n this._monitorDisposables.add(new Disposable(() => {\n clearTimeout(timeout);\n }));\n }\n\n dispose(): void {\n this._monitorDisposables.dispose();\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport LoggerFactory from '../logger/LoggerFactory';\nimport SDK from '../sdk/SDK';\nimport IPeerConnection from './IPeerConnection';\nimport {ILogger} from '../logger/LoggerInterface';\nimport FeatureEnablement from '../sdk/feature/FeatureEnablement';\n\nexport interface IPeerConnectionOfferInit {\n audioTransceiver?: RTCRtpTransceiver;\n videoTransceiver?: RTCRtpTransceiver;\n peerConnection: IPeerConnection;\n localOffer: RTCSessionDescriptionInit;\n}\n\nexport default class PeerConnectionService {\n private static _logger: ILogger = LoggerFactory.getLogger('PeerConnectionService');\n private static _cached: Promise<IPeerConnectionOfferInit>;\n\n static initiateInitialPrecaching(): void {\n if (FeatureEnablement.isPrecachingEnabled) {\n const ignored = PeerConnectionService.precacheCreatePeerConnectionOffer()\n .catch(e => PeerConnectionService._logger.error('Failed to pre-cache peer connection offer\"', e));\n }\n }\n\n static async precacheCreatePeerConnectionOffer(): Promise<IPeerConnectionOfferInit> {\n return PeerConnectionService._cached = PeerConnectionService.createPeerConnectionOffer()\n .catch(e => {\n PeerConnectionService._cached = null;\n\n throw e;\n });\n }\n\n static async createPeerConnectionOffer(): Promise<IPeerConnectionOfferInit> {\n if (PeerConnectionService._cached) {\n const value = PeerConnectionService._cached;\n\n PeerConnectionService._cached = null;\n\n return value;\n }\n\n const peerConnectionFactory = SDK.peerConnectionFactory.value;\n\n return peerConnectionFactory.createPeerConnection()\n .then(async peerConnection => {\n const supportsAddTransceiver = peerConnection.supportsAddTransceiver;\n let videoTransceiver, audioTransceiver;\n\n if (supportsAddTransceiver) {\n audioTransceiver = peerConnection.addTransceiver('audio', {direction: 'recvonly'});\n videoTransceiver = peerConnection.addTransceiver('video', {direction: 'recvonly'});\n }\n\n return {\n audioTransceiver,\n videoTransceiver,\n peerConnection: peerConnection,\n localOffer: await peerConnection.createOffer(supportsAddTransceiver ? undefined : {\n offerToReceiveAudio: true,\n offerToReceiveVideo: true\n })\n };\n });\n }\n\n private constructor() {\n throw new Error('PeerConnectionService is a static class that may not be instantiated');\n }\n}\n\nPeerConnectionService.initiateInitialPrecaching();","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nexport default class SdpParser {\n private readonly _sdp: string;\n private readonly _audioCodec: string;\n private readonly _videoCodec: string;\n\n constructor(sdp: string) {\n this._sdp = sdp;\n this._audioCodec = this.applyCodec('audio');\n this._videoCodec = this.applyCodec('video');\n }\n\n get audioCodec(): string {\n return this._audioCodec;\n }\n\n get videoCodec(): string {\n return this._videoCodec;\n }\n\n applyCodec(type: string): string {\n const splitSdp = this._sdp.split(/(\\r\\n|\\r|\\n)/);\n const usedCodecLine = splitSdp.find(item => item.includes(`a=rtpmap:${splitSdp.find(i => i.includes(`m=${type}`)).split(' ')[3]}`));\n const usedCodec = usedCodecLine.split(' ')[1];\n const codecName = usedCodec.split('/')[0];\n\n return codecName;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport IPeerConnection from './IPeerConnection';\nimport Subject from '../rx/Subject';\nimport FeatureEnablement from '../sdk/feature/FeatureEnablement';\nimport SdpParser from './SdpParser';\nimport IDisposable from '../lang/IDisposable';\n\nexport interface IRtcMonitorStatistic {\n [kind: string]: IRtcStatistic;\n}\n\nexport interface ILegacyRTCStatsReport {\n result: () => ILegacyRTCStatsReportItem[];\n}\n\nexport interface ILegacyRTCStatsReportItem extends RTCStatsReport {\n type: string;\n names: () => string[];\n stat: (name) => number;\n}\n\nexport interface IRtcStatistic {\n ssrc?: string;\n mediaType?: string;\n timestamp: number;\n bytesReceived?: number;\n framesDecoded?: number;\n packetsLost?: number;\n packetsReceived?: number;\n codec?: string;\n fps?: number;\n roundTripTime?: number;\n lastPacketReceivedTimestamp?: number;\n}\n\nconst updateStatisticTimeOut = 1000;\n\nexport default class RtcConnectionMonitor implements IDisposable {\n private readonly _estimatedRoundTripTime: number;\n private readonly _estimatedVideoCodec: string;\n private readonly _estimatedAudioCodec: string;\n private readonly _rtcStatistic: Subject<IRtcMonitorStatistic> = new Subject<IRtcMonitorStatistic>({});\n private _peerConnection: IPeerConnection;\n private _isMonitorRunning = true;\n private _updateTimeOut: number;\n private _tracksToMonitor: string[];\n\n constructor(peerConnection: IPeerConnection, mediaStream: MediaStream, estimatedRoundTripTime: number) {\n this._peerConnection = peerConnection;\n this._estimatedRoundTripTime = estimatedRoundTripTime;\n this._tracksToMonitor = mediaStream.getTracks().map(track => track.kind) || [];\n\n if (this._peerConnection) {\n if (!FeatureEnablement.getCurrentOfferDisabled) {\n const parsedSDP = new SdpParser(this._peerConnection.currentRemoteDescription.sdp);\n\n this._estimatedAudioCodec = parsedSDP.audioCodec;\n this._estimatedVideoCodec = parsedSDP.videoCodec;\n }\n\n this.updateStatistic();\n }\n }\n\n get rtcStatistic(): Subject<IRtcMonitorStatistic> {\n return this._rtcStatistic;\n }\n\n dispose(): void {\n this._isMonitorRunning = false;\n this._peerConnection = null;\n\n if (this._updateTimeOut) {\n clearTimeout(this._updateTimeOut);\n this._updateTimeOut = null;\n }\n }\n\n private async updateStatistic(): Promise<void> {\n if (FeatureEnablement.getStatsPromiseBasedDisabled) {\n const ignored = await this.updateStatisticLegacy();\n\n return;\n }\n\n // Safari 11 doesnt have kind or mediaType so we need to take it from the inbound-rtp object id\n const getKindForSafari11 = (item): string => item.id.includes('Audio') ? 'audio' : item.id.includes('Video') ? 'video' : '';\n const ignored = await this._peerConnection.getStats(null)\n .then(stats => {\n const rtcStats: IRtcMonitorStatistic = {};\n\n if (stats) {\n let roundTripTime = this._estimatedRoundTripTime;\n let lastPacketReceivedTimestamp;\n\n stats.forEach(report => {\n if (report.type === 'candidate-pair' && report.currentRoundTripTime) {\n roundTripTime = report.currentRoundTripTime * 1000;\n\n if (rtcStats['audio']) {\n rtcStats['audio'].roundTripTime = roundTripTime;\n }\n\n if (rtcStats['video']) {\n rtcStats['video'].roundTripTime = roundTripTime;\n }\n }\n\n if (report.type === 'candidate-pair' && report.lastPacketReceivedTimestamp) {\n lastPacketReceivedTimestamp = report.lastPacketReceivedTimestamp;\n\n if (rtcStats['audio']) {\n rtcStats['audio'].lastPacketReceivedTimestamp = lastPacketReceivedTimestamp;\n }\n\n if (rtcStats['video']) {\n rtcStats['video'].lastPacketReceivedTimestamp = lastPacketReceivedTimestamp;\n }\n }\n\n if (report.type === 'inbound-rtp') {\n const kind = report.kind || report.mediaType || getKindForSafari11(report);\n let codec = '';\n\n stats.forEach(item => {\n if (item.id === report.codecId) {\n codec = item.mimeType;\n }\n });\n\n if (kind && this._tracksToMonitor.includes(kind)) {\n rtcStats[kind] = {\n ssrc: report.ssrc,\n mediaType: kind,\n timestamp: report.timestamp,\n bytesReceived: report.bytesReceived,\n packetsLost: report.packetsLost,\n packetsReceived: report.packetsReceived,\n codec: codec || this.getCodecByType(kind),\n roundTripTime\n };\n\n if (report.lastPacketReceivedTimestamp || lastPacketReceivedTimestamp) {\n rtcStats[kind].lastPacketReceivedTimestamp = report.lastPacketReceivedTimestamp || lastPacketReceivedTimestamp;\n }\n\n if (kind === 'video' && this._rtcStatistic.value && this._rtcStatistic.value.video) {\n rtcStats[kind]['framesDecoded'] = report.framesDecoded;\n rtcStats[kind]['fps'] = (report.framesDecoded - this._rtcStatistic.value.video.framesDecoded) /\n (rtcStats[kind].timestamp - this._rtcStatistic.value.video.timestamp) *\n 1000 || 0;\n }\n }\n }\n });\n }\n\n this._rtcStatistic.value = rtcStats;\n }).then(() => {\n if (this._isMonitorRunning) {\n this._updateTimeOut = window.setTimeout(() => this.updateStatistic(), updateStatisticTimeOut);\n }\n });\n }\n\n private async updateStatisticLegacy(): Promise<void> {\n const ignored = await this._peerConnection.getStatsLegacy().then(stats => {\n const rtcStats: IRtcMonitorStatistic = {};\n let roundTripTime = this._estimatedRoundTripTime;\n\n stats.result().forEach(report => {\n report.names().forEach(name => {\n if (name === 'googRTT') {\n roundTripTime = report.stat(name);\n }\n });\n\n if (report.type === 'ssrc') {\n const mediaType = report.stat('mediaType').toString();\n\n rtcStats[mediaType] = {timestamp: Date.now()};\n rtcStats[mediaType]['ssrc'] = report.stat('ssrc').toString();\n rtcStats[mediaType]['mediaType'] = mediaType;\n rtcStats[mediaType]['bytesReceived'] = report.stat('bytesReceived');\n rtcStats[mediaType]['packetsLost'] = report.stat('packetsLost');\n rtcStats[mediaType]['packetsReceived'] = report.stat('packetsReceived');\n rtcStats[mediaType]['codec'] = report.stat('googCodecName').toString() || this.getCodecByType(mediaType);\n rtcStats[mediaType]['roundTripTime'] = roundTripTime;\n\n if (mediaType === 'video' && this._rtcStatistic.value && this._rtcStatistic.value.video) {\n rtcStats[mediaType]['framesDecoded'] = report.stat('framesDecoded');\n rtcStats[mediaType]['fps'] = (rtcStats[mediaType].framesDecoded - this._rtcStatistic.value.video.framesDecoded) /\n (rtcStats[mediaType].timestamp - this._rtcStatistic.value.video.timestamp) *\n 1000 || 0;\n }\n }\n });\n this._rtcStatistic.value = rtcStats;\n }).then(() => {\n if (this._isMonitorRunning) {\n this._updateTimeOut = window.setTimeout(() => this.updateStatistic(), updateStatisticTimeOut);\n }\n });\n }\n\n private getCodecByType(type: string): string {\n switch (type) {\n case 'audio':\n return this._estimatedAudioCodec;\n case 'video':\n return this._estimatedVideoCodec;\n default:\n return 'unknown';\n }\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport IPeerConnection from '../../rtc/IPeerConnection';\nimport SDK from '../SDK';\nimport {IStream} from './IStream';\nimport EndPoint, {SetRemoteDescriptionStatus} from '../discovery/EndPoint';\nimport PeerConnectionService, {IPeerConnectionOfferInit} from '../../rtc/PeerConnectionService';\nimport Discovery from '../discovery/Discovery';\nimport FeatureEnablement from '../feature/FeatureEnablement';\nimport ChannelState from '../channels/ChannelState';\nimport assertUnreachable from '../../lang/assertUnreachable';\nimport RtcConnectionMonitor from '../../rtc/RtcConnectionMonitor';\nimport Durations from '../../time/Duration';\nimport {ILogger} from '../../logger/LoggerInterface';\nimport LoggerFactory from '../../logger/LoggerFactory';\nimport ChannelContext from '../channels/ChannelContext';\n\nconst iceCandidateAccumulationInterval = 100;\nconst defaultStreamSetupTimeout = 30000;\n\nexport default class RealTimeStream implements IStream {\n private readonly _logger: ILogger = LoggerFactory.getLogger('RealTimeStream');\n private readonly _channelContext: ChannelContext;\n private readonly _handleStreamFailure: () => Promise<void>;\n\n constructor(channelContext, handleStreamFailure: () => Promise<void>) {\n this._channelContext = channelContext;\n this._handleStreamFailure = handleStreamFailure;\n }\n\n start(uri, token, listenOnStreamSetup, playMediaStreamInVideoElement): Promise<void> {\n return Promise.all<EndPoint, IPeerConnectionOfferInit>([\n Discovery.discoverClosestEndPointWithCaching(uri),\n PeerConnectionService.createPeerConnectionOffer()\n ])\n .then(([endPoint, {localOffer, peerConnection}]) => {\n this._channelContext.online.value = true;\n this._channelContext.endPoint.value = endPoint;\n this._logger.info('Connecting to [%s]', endPoint.toString());\n this._logger.info('Local offer:\\n' + localOffer.sdp);\n\n if (FeatureEnablement.clientOfferDisabled || !peerConnection.supportsSetConfiguration || !peerConnection.supportsGetConfiguration) {\n peerConnection.close();\n peerConnection = null;\n localOffer = null;\n }\n\n this._channelContext.peerConnection.value = peerConnection;\n\n return endPoint.subscribe(token, localOffer, this._channelContext.failureCount.value);\n })\n .then(({status, stream, rtcConfiguration, setRemoteDescriptionResponse, createOfferDescriptionResponse, createAnswerDescriptionResponse, lag}) => {\n this._channelContext.stream.value = stream;\n this._channelContext.lag.value = lag;\n\n this._channelContext.applySessionAndStreamPropertiesToVideoElement();\n\n this._logger.debug(\n '[%s] Subscribe completed [%s] [%j] [%j] [%j] [%j]',\n this._channelContext.streamId,\n status,\n rtcConfiguration,\n setRemoteDescriptionResponse,\n createOfferDescriptionResponse,\n createAnswerDescriptionResponse\n );\n\n this._channelContext.state.value = this._channelContext.mapSubscribeStatusToChannelStatus(status);\n\n this._channelContext.applyStatus(status);\n\n if (status !== 'ok') {\n return;\n }\n\n return this.applyRtcConfiguration(this._channelContext.peerConnection.value, rtcConfiguration)\n .then(peerConnection => {\n let submitCandidatesTimeout;\n let cancelDiscovery = false;\n let discoveryCompleted = false;\n const candidates: RTCIceCandidate[] = [];\n\n if (!this._channelContext.peerConnection.value) {\n this._channelContext.peerConnection.value = peerConnection;\n }\n\n peerConnection.onicecandidate = (e): void => {\n if (this._channelContext.stream.value !== stream) {\n return;\n }\n\n if (this._channelContext.peerConnection.value !== peerConnection) {\n return;\n }\n\n if (cancelDiscovery) {\n return;\n }\n\n if (!SDK.sendLocalCandidates.value) {\n return;\n }\n\n if (e.candidate && e.candidate.candidate) {\n candidates.push(e.candidate);\n } else {\n discoveryCompleted = true;\n }\n\n if (!submitCandidatesTimeout) {\n submitCandidatesTimeout = setTimeout(() => {\n if (this._channelContext.stream.value !== stream) {\n return;\n }\n\n if (cancelDiscovery) {\n return;\n }\n\n const ignored = this._channelContext.endPoint.value.addIceCandidates(stream, candidates, discoveryCompleted)\n .then(({status, options}) => {\n if (status !== 'ok') {\n this._logger.warn('[%s] Failed to add ICE candidates with reason [%s]', this._channelContext.streamId, status);\n\n return;\n }\n\n if (options.includes('cancel')) {\n cancelDiscovery = true;\n }\n\n this._logger.info('[%s] Added ICE candidates with reason [%s] and options [%s]', this._channelContext.streamId, status, options);\n })\n .catch(e => {\n this._logger.error('[%s] Failed to add ICE candidates', this._channelContext.streamId, e);\n });\n }, iceCandidateAccumulationInterval);\n }\n };\n\n peerConnection.oniceconnectionstatechange = (): void => {\n if (this._channelContext.stream.value !== stream) {\n return;\n }\n\n if (this._channelContext.peerConnection.value !== peerConnection) {\n return;\n }\n\n const retryCallback = (): void => {\n // If we stop normally the peer connection is unregistered first.\n // Thus anytime we see a closed peer connection that is still valid, it is an error.\n this._channelContext.state.value = ChannelState.Error;\n\n if (this._channelContext.videoElement.value) {\n this._channelContext.videoElement.value.pause();\n this._channelContext.videoElement.value.srcObject = null;\n }\n\n this._channelContext.playing.value = false;\n this._channelContext.loading.value = true;\n\n const ignored = this._handleStreamFailure()\n .catch(e => {\n this._logger.error(\n '[%s] Failed handling stream failure after peer connection stopped with state [%s]',\n this._channelContext.streamId,\n peerConnection.iceConnectionState,\n e\n );\n });\n };\n\n switch (peerConnection.iceConnectionState) {\n case 'checking':\n case 'completed':\n case 'connected':\n case 'new':\n return;\n\n case 'disconnected':\n case 'failed':\n if (navigator.onLine) {\n this._logger.info('[%s] ICE connection state changed to [%s], trying to reconnect', this._channelContext.streamId, peerConnection.iceConnectionState);\n this.reconnectPeerConnection(peerConnection, retryCallback);\n }\n\n return;\n case 'closed':\n this._logger.info('[%s] ICE connection state changed to [%s], retrying to connect', this._channelContext.streamId, peerConnection.iceConnectionState);\n retryCallback();\n\n return;\n default:\n assertUnreachable(peerConnection.iceConnectionState);\n }\n };\n\n const mediaStreamPromise = new Promise<MediaStream>((resolve, reject) => {\n if (!FeatureEnablement.onTrackDisabled) {\n const timeoutId = setTimeout(() => reject(new Error('Stream setup timed out')), defaultStreamSetupTimeout);\n\n peerConnection.ontrack = (e): void => {\n clearTimeout(timeoutId);\n\n resolve(e.streams[0]);\n };\n\n return;\n }\n\n const trackListener = (e): void => {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n clearTimeout(timeoutId);\n peerConnection.removeEventListener('track', trackListener);\n peerConnection.removeEventListener('addstream', trackListener);\n\n if (e.streams) {\n resolve(e.streams[0]);\n } else {\n resolve(e.stream);\n }\n };\n\n const timeoutId = setTimeout(() => {\n peerConnection.removeEventListener('track', trackListener);\n peerConnection.removeEventListener('addstream', trackListener);\n reject(new Error('Stream setup timed out'));\n }, defaultStreamSetupTimeout);\n\n peerConnection.addEventListener('track', trackListener);\n peerConnection.addEventListener('addstream', trackListener);\n\n return;\n });\n\n return new Promise(resolve => {\n resolve();\n }).then(() => {\n if (!setRemoteDescriptionResponse) {\n return;\n }\n\n this._logger.info('[%s] Set local SDP offer [%s]', this._channelContext.streamId, setRemoteDescriptionResponse.sessionDescription.sdp);\n\n return peerConnection.setLocalDescription(setRemoteDescriptionResponse.sessionDescription);\n }).then(() => {\n if (!createAnswerDescriptionResponse) {\n return;\n }\n\n this._logger.info('[%s] Set remote SDP answer [%s]', this._channelContext.streamId, createAnswerDescriptionResponse.sessionDescription.sdp);\n\n return peerConnection.setRemoteDescription(createAnswerDescriptionResponse.sessionDescription);\n }).then(() => {\n if (!createOfferDescriptionResponse) {\n return;\n }\n\n this._logger.info('[%s] Set remote SDP offer [%s]', this._channelContext.streamId, createOfferDescriptionResponse.sessionDescription.sdp);\n\n return peerConnection.setRemoteDescription(createOfferDescriptionResponse.sessionDescription)\n .then(() => {\n return peerConnection.createAnswer({\n offerToReceiveAudio: true,\n offerToReceiveVideo: true\n });\n }).then(answer => {\n this._logger.info('[%s] Set local SDP answer [%j]', this._channelContext.streamId, answer);\n\n return this._channelContext.endPoint.value.setRemoteDescription(stream, answer);\n }).then(({status, sessionDescription}) => {\n this._channelContext.state.value = this.mapSetRemoteDescriptionStatusToChannelStatus(status);\n\n if (status !== 'ok') {\n this._channelContext.playing.value = false;\n this._channelContext.standby.value = true;\n this._channelContext.stopped.value = false;\n\n return;\n }\n\n return peerConnection.setLocalDescription(sessionDescription);\n });\n }).then(() => {\n listenOnStreamSetup.success(this._channelContext.streamId);\n\n return mediaStreamPromise;\n }).then(mediaStream => {\n this._channelContext.mediaStream.value = mediaStream;\n\n const rtcConnectionMonitor = new RtcConnectionMonitor(peerConnection, mediaStream, this._channelContext.endPoint.value.roundTripTime / 4);\n\n this._channelContext.disposables.add(rtcConnectionMonitor);\n\n const ignored = rtcConnectionMonitor.rtcStatistic.subscribe(statistics => {\n this._channelContext.rtcStatistics.value = statistics;\n\n if (!this._channelContext.rtcVideoStatistic && !this._channelContext.rtcAudioStatistic) {\n this._channelContext.rtcAudioStatistic = statistics.audio;\n this._channelContext.rtcVideoStatistic = statistics.video;\n\n return;\n }\n\n let audioTrackFailed = false;\n let videoTrackFailed = false;\n\n if (statistics.audio) {\n if (this._channelContext.rtcAudioStatistic && this._channelContext.rtcAudioStatistic.timestamp !== statistics.audio.timestamp) {\n audioTrackFailed = this._channelContext.rtcAudioStatistic && this._channelContext.rtcAudioStatistic.bytesReceived === statistics.audio.bytesReceived;\n\n if (audioTrackFailed && navigator.onLine) {\n this._logger.info(\n '[%s] Audio track failed with last bytesReceived [%s] is equal to previous bytesReceived [%s] within [%s]',\n this._channelContext.streamId,\n statistics.audio.bytesReceived,\n this._channelContext.rtcAudioStatistic.bytesReceived,\n new Durations(statistics.audio.timestamp - this._channelContext.rtcAudioStatistic.timestamp).toIsoString()\n );\n }\n\n this._channelContext.rtcAudioStatistic = statistics.audio;\n }\n }\n\n if (statistics.video) {\n if (this._channelContext.rtcVideoStatistic && this._channelContext.rtcVideoStatistic.timestamp !== statistics.video.timestamp) {\n videoTrackFailed = this._channelContext.rtcVideoStatistic && this._channelContext.rtcVideoStatistic.bytesReceived === statistics.video.bytesReceived;\n\n if (videoTrackFailed && navigator.onLine) {\n this._logger.info(\n '[%s] Video track failed with last bytesReceived [%s] is equal to previous bytesReceived [%s] within [%s]',\n this._channelContext.streamId,\n statistics.video.bytesReceived,\n this._channelContext.rtcVideoStatistic.bytesReceived,\n new Durations(statistics.video.timestamp - this._channelContext.rtcVideoStatistic.timestamp).toIsoString()\n );\n }\n\n this._channelContext.rtcVideoStatistic = statistics.video;\n }\n }\n\n if ((videoTrackFailed || audioTrackFailed) && navigator.onLine) {\n const retryCallback = (): void => {\n this._channelContext.state.value = ChannelState.Error;\n\n if (this._channelContext.videoElement.value) {\n this._channelContext.videoElement.value.pause();\n this._channelContext.videoElement.value.srcObject = null;\n }\n\n this._channelContext.playing.value = false;\n this._channelContext.loading.value = true;\n\n rtcConnectionMonitor.dispose();\n\n const ignored = this._handleStreamFailure()\n .catch(e => {\n this._logger.error(\n '[%s] Failed handling stream failure after track stopped with state [%s]',\n this._channelContext.streamId,\n peerConnection.iceConnectionState,\n e\n );\n });\n };\n\n this.reconnectPeerConnection(peerConnection, retryCallback);\n } else {\n this._channelContext.peerConnectionReconnectAttempts = 0;\n }\n });\n\n if (!SDK.automaticallyPlayMediaStream) {\n this._channelContext.autoMuted.value = false;\n this._channelContext.autoPaused.value = true;\n this._channelContext.loading.value = false;\n this._channelContext.playing.value = false;\n this._channelContext.state.value = ChannelState.Paused;\n\n return;\n }\n\n return playMediaStreamInVideoElement(mediaStream);\n });\n });\n });\n }\n\n private async applyRtcConfiguration(\n optionalPeerConnection: IPeerConnection | null,\n rtcConfiguration: RTCConfiguration): Promise<IPeerConnection> {\n if (!optionalPeerConnection) {\n rtcConfiguration = this.truncateIceServers(rtcConfiguration);\n\n return SDK.peerConnectionFactory.value.createPeerConnection(rtcConfiguration);\n }\n\n const newRtcConfiguration = {\n ...optionalPeerConnection.getConfiguration(),\n ...rtcConfiguration\n };\n\n optionalPeerConnection.setConfiguration(newRtcConfiguration);\n\n return optionalPeerConnection;\n }\n\n private truncateIceServers(configuration: RTCConfiguration): RTCConfiguration {\n const iceServers: RTCIceServer[] = [];\n\n for (let i = 0; i < configuration.iceServers.length; i++) {\n const urls: string[] = [];\n\n for (let index = 0; index < 2; index++) {\n const url = configuration.iceServers[i].urls[index];\n\n if (url) {\n urls.push(configuration.iceServers[i].urls[index]);\n }\n }\n\n iceServers.push({\n urls: urls,\n username: configuration.iceServers[i].username,\n credential: configuration.iceServers[i].credential\n });\n }\n\n configuration.iceServers = iceServers;\n\n return configuration;\n }\n\n private reconnectPeerConnection(peerConnection: IPeerConnection, retryCallback: () => void): void {\n if (peerConnection.iceConnectionState === 'closed') {\n return;\n }\n\n this._channelContext.state.value = ChannelState.Reconnecting;\n\n if (this._channelContext.peerConnectionReconnectAttempts < SDK.maximalNumberOfPeerConnectionReconnectAttempts || !SDK.automaticallyReconnectPeerConnection) {\n this._channelContext.peerConnectionReconnectAttempts++;\n\n if (FeatureEnablement.clientOfferDisabled ||\n !peerConnection.supportsSetConfiguration ||\n !peerConnection.supportsGetConfiguration ||\n this._channelContext.failureCount.value\n ) {\n return;\n }\n\n this._logger.info('Reconnecting peer connection by restarting ICE');\n\n const localOffer = peerConnection.currentLocalDescription;\n const ignored = peerConnection.createOffer({iceRestart: true}).then(offer => {\n return peerConnection.setLocalDescription(offer).then(() => {\n return peerConnection.setLocalDescription(localOffer);\n });\n })\n .catch(e => {\n this._logger.error('Failed to reconnect peer connection', e);\n this._channelContext.peerConnectionReconnectAttempts = 0;\n retryCallback();\n });\n\n return;\n }\n\n this._logger.info('Failed to reconnect peer connection after [%s] attempts, performing full recovery', this._channelContext.peerConnectionReconnectAttempts);\n this._channelContext.peerConnectionReconnectAttempts = 0;\n retryCallback();\n }\n\n private mapSetRemoteDescriptionStatusToChannelStatus(status: SetRemoteDescriptionStatus): ChannelState {\n switch (status) {\n case 'ok':\n return ChannelState.Starting;\n case 'unauthorized':\n return ChannelState.Unauthorized;\n case 'not-found':\n case 'capacity':\n case 'rate-limited':\n case 'timeout':\n return ChannelState.Recovering;\n case 'failed':\n return ChannelState.Error;\n default:\n assertUnreachable(status);\n }\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport {IStream} from './IStream';\nimport EdgeAuth from '../edgeAuth/EdgeAuth';\nimport RtmpStream from './RtmpStream';\nimport ChunkedStream from './ChunkedStream';\nimport RealTimeStream from './RealTimeStream';\nimport FeatureEnablement from '../feature/FeatureEnablement';\nimport {ILogger} from '../../logger/LoggerInterface';\nimport LoggerFactory from '../../logger/LoggerFactory';\nimport ChannelState from '../channels/ChannelState';\n\nexport default class LegacyStreamFactory {\n private static _logger: ILogger = LoggerFactory.getLogger('Streaming');\n\n static create(token: string, channelContext, handleStreamFailure: () => Promise<void>): IStream {\n const parsedToken = EdgeAuth.parseToken(token);\n const isRtmp = parsedToken && parsedToken.token && parsedToken.token.capabilities && parsedToken.token.capabilities.includes('rtmp');\n\n if (isRtmp) {\n if (FeatureEnablement.isRTMPEnabled) {\n return new RtmpStream(channelContext, handleStreamFailure);\n }\n\n channelContext.state.value = ChannelState.UnsupportedFeature;\n\n this._logger.error('RTMP playback is not enabled.');\n\n return;\n }\n\n const isStreaming = parsedToken && parsedToken.token && parsedToken.token.capabilities && parsedToken.token.capabilities.includes('streaming');\n\n if (isStreaming) {\n return new ChunkedStream(channelContext, handleStreamFailure);\n }\n\n return new RealTimeStream(channelContext, handleStreamFailure);\n }\n\n constructor() {\n throw new Error('LegacyStreamFactory is a static class that may not be instantiated');\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport LoggerFactory from '../../logger/LoggerFactory';\nimport IDisposable from '../../lang/IDisposable';\nimport ReadOnlySubject from '../../rx/ReadOnlySubject';\nimport Dimension from '../../video/Dimension';\nimport EndPoint, {IStream} from '../discovery/EndPoint';\nimport SDK from '../SDK';\nimport IPeerConnection from '../../rtc/IPeerConnection';\nimport ChannelState from './ChannelState';\nimport assertUnreachable from '../../lang/assertUnreachable';\nimport Disposable from '../../lang/Disposable';\nimport EdgeAuth from '../edgeAuth/EdgeAuth';\nimport {ILogger} from '../../logger/LoggerInterface';\nimport VideoTelemetry from '../../video/VideoTelemetry';\nimport SessionTelemetry from '../../video/SessionTelemetry';\nimport {IRtcMonitorStatistic} from '../../rtc/RtcConnectionMonitor';\nimport {BitrateMode, BitrateState} from '../api/SetTemporaryMaximalBitrate';\n\nimport {EdgeToken} from '../edgeAuth/EdgeToken';\nimport {BitsPerSecond, Millisecond} from '../../units/Units';\nimport ChannelContext from './ChannelContext';\nimport StreamFactory from '../streaming/StreamFactory';\nimport DiscoveryUri from '../discovery/DiscoveryUri';\nimport MetricsFactory from '../../metrics/MetricsFactory';\nimport MetricsService from '../../metrics/MetricsService';\n\nconst defaultTargetLag = 0;\nconst defaultStreamTerminationReason = 'client:termination';\nconst backoffIntervalInMilliseconds = 2000;\nconst failureCountCleanUpIntervalInMilliseconds = 3000;\nconst maxBackoffIntervalInMilliseconds = 300000;\nconst standbyPollingIntervalInMilliseconds = 15000;\n\nexport default class Channel implements IDisposable {\n private readonly _logger: ILogger = LoggerFactory.getLogger('Channel');\n private readonly _context: ChannelContext;\n private readonly _channelStartTime: number;\n private readonly _readOnlyVideoElement: ReadOnlySubject<HTMLVideoElement>;\n private readonly _readOnlyToken: ReadOnlySubject<EdgeToken>;\n private readonly _readOnlyPeerConnection: ReadOnlySubject<IPeerConnection>;\n private readonly _readOnlyState: ReadOnlySubject<ChannelState>;\n private readonly _readOnlyAutoMuted: ReadOnlySubject<boolean>;\n private readonly _readOnlyAutoPaused: ReadOnlySubject<boolean>;\n private readonly _readOnlyTokenExpiring: ReadOnlySubject<boolean>;\n private readonly _readOnlyAuthorized: ReadOnlySubject<boolean>;\n private readonly _readOnlyOnline: ReadOnlySubject<boolean>;\n private readonly _readOnlyLoading: ReadOnlySubject<boolean>;\n private readonly _readOnlyPlaying: ReadOnlySubject<boolean>;\n private readonly _readOnlyStandby: ReadOnlySubject<boolean>;\n private readonly _readOnlyStopped: ReadOnlySubject<boolean>;\n private readonly _readOnlyTargetLag: ReadOnlySubject<Millisecond>;\n private readonly _readOnlyLag: ReadOnlySubject<Millisecond>;\n private readonly _readOnlyBitrateLimit: ReadOnlySubject<BitsPerSecond>;\n private readonly _readOnlyResolution: ReadOnlySubject<Dimension>;\n private readonly _readOnlyFailureCount: ReadOnlySubject<number>;\n private readonly _readOnlyEndPoint: ReadOnlySubject<EndPoint>;\n private readonly _readOnlyStream: ReadOnlySubject<IStream>;\n private readonly _readOnlyRtcStatistics: ReadOnlySubject<IRtcMonitorStatistic>;\n private readonly _readOnlyMediaStream: ReadOnlySubject<MediaStream>;\n\n private _metricsService: MetricsService;\n private readonly _videoMetaDataChangedHandler: () => void;\n\n constructor(videoElement: HTMLVideoElement, token: string, targetLag: number = defaultTargetLag) {\n this._context = new ChannelContext(token, targetLag);\n this._channelStartTime = Date.now();\n this._readOnlyVideoElement = new ReadOnlySubject<HTMLVideoElement>(this._context.videoElement);\n this._readOnlyToken = new ReadOnlySubject<string>(this._context.token);\n this._readOnlyPeerConnection = new ReadOnlySubject<IPeerConnection>(this._context.peerConnection);\n this._readOnlyState = new ReadOnlySubject<ChannelState>(this._context.state);\n this._readOnlyAutoMuted = new ReadOnlySubject<boolean>(this._context.autoMuted);\n this._readOnlyAutoPaused = new ReadOnlySubject<boolean>(this._context.autoPaused);\n this._readOnlyTokenExpiring = new ReadOnlySubject<boolean>(this._context.tokenExpiring);\n this._readOnlyAuthorized = new ReadOnlySubject<boolean>(this._context.authorized);\n this._readOnlyOnline = new ReadOnlySubject<boolean>(this._context.online);\n this._readOnlyLoading = new ReadOnlySubject<boolean>(this._context.loading);\n this._readOnlyPlaying = new ReadOnlySubject<boolean>(this._context.playing);\n this._readOnlyStandby = new ReadOnlySubject<boolean>(this._context.standby);\n this._readOnlyStopped = new ReadOnlySubject<boolean>(this._context.stopped);\n this._readOnlyTargetLag = new ReadOnlySubject<number>(this._context.targetLag);\n this._readOnlyLag = new ReadOnlySubject<number>(this._context.lag);\n this._readOnlyBitrateLimit = new ReadOnlySubject<number>(this._context.bitrateLimit);\n this._readOnlyResolution = new ReadOnlySubject<Dimension>(this._context.resolution);\n this._readOnlyFailureCount = new ReadOnlySubject<number>(this._context.failureCount);\n this._readOnlyEndPoint = new ReadOnlySubject<EndPoint>(this._context.endPoint);\n this._readOnlyStream = new ReadOnlySubject<IStream>(this._context.stream);\n this._readOnlyRtcStatistics = new ReadOnlySubject<IRtcMonitorStatistic>(this._context.rtcStatistics);\n this._readOnlyMediaStream = new ReadOnlySubject<MediaStream>(this._context.mediaStream);\n\n const parsedToken = EdgeAuth.parseToken(this._context.token.value);\n const discoveryUri = (EdgeAuth.getUri(parsedToken) || SDK.discoveryUri.value).toString();\n\n SDK.tenancy.value = EdgeAuth.getTenancy(parsedToken) || SDK.tenancy.value;\n DiscoveryUri.uri.value = discoveryUri;\n this._metricsService = MetricsFactory.getMetricsService(discoveryUri);\n this._context.sessionTelemetry = new SessionTelemetry(SDK.pageLoadTime, this._metricsService);\n this._context.channelDisposables.add(this._context.sessionTelemetry);\n this._videoMetaDataChangedHandler = this.handleVideoMetaDataChanged.bind(this);\n this.videoElement = videoElement;\n\n this._context.channelDisposables.add(\n this._context.videoElement.subscribe(videoElement => {\n this._context.rendererDisposables.dispose();\n\n if (!videoElement) {\n return;\n }\n\n this._context.rendererDisposables.add(this._context.stream.subscribe(stream => {\n if (this._context.videoTelemetry) {\n this._context.videoTelemetry.dispose();\n }\n\n if (!stream) {\n return;\n }\n\n if (!this.videoElement) {\n return;\n }\n\n if (this.videoElement.dataset) {\n this.videoElement.dataset.sessionId = SDK.clientSessionId;\n this.videoElement.dataset.streamId = this.streamId;\n }\n\n this._context.videoTelemetry = new VideoTelemetry(this.streamId, SDK.pageLoadTime, this._channelStartTime, this._metricsService);\n this._context.videoTelemetry.setupListenerForTimeToFirstTime(this.videoElement);\n this._context.videoTelemetry.setupListenerForRebuffering(this.videoElement);\n\n if (this._context.state.value === ChannelState.Stopped) {\n const ignored = this.restartAfterStop();\n }\n }));\n\n this._context.channelDisposables.add(this._context.rendererDisposables);\n }));\n this._context.channelDisposables.add(\n this._context.state.subscribe(state => {\n if (this._context.clearFailureCountTimeout) {\n clearTimeout(this._context.clearFailureCountTimeout);\n }\n\n if (!this._context.failureCount.value) {\n return;\n }\n\n if (state !== ChannelState.Playing) {\n return;\n }\n\n this._context.clearFailureCountTimeout = window.setTimeout(() => {\n this._context.failureCount.value = 0;\n }, failureCountCleanUpIntervalInMilliseconds);\n }));\n this._context.channelDisposables.add(\n this._context.resolution.subscribe(resolution => {\n if (this._context.videoTelemetry) {\n this._context.videoTelemetry.onVideoResolutionChanges(resolution.toString());\n }\n }));\n this._context.channelDisposables.add(\n this._context.bitrateLimit.subscribe(bitrateLimit => {\n if (bitrateLimit && this._context.endPoint.value && this._context.stream.value) {\n const elapsedInMilliseconds = Date.now() - this._context.channelInitialization.getTime();\n const ignored = this._context.endPoint.value.limitBitrate(\n this._context.stream.value,\n elapsedInMilliseconds,\n bitrateLimit,\n BitrateState.Keep,\n BitrateMode.Normal\n )\n .catch(e => {\n this._logger.error('Error while setting limit bitrate', e);\n });\n }\n })\n );\n\n this.start();\n }\n\n get videoElement(): HTMLVideoElement {\n return this._context.videoElement.value;\n }\n\n set videoElement(videoElement: HTMLVideoElement) {\n if (this._context.videoElement.value) {\n this._context.videoElement.value.removeEventListener('loadeddata', this._videoMetaDataChangedHandler);\n this._context.videoElement.value.removeEventListener('loadedmetadata', this._videoMetaDataChangedHandler);\n this._context.videoElement.value.removeEventListener('resize', this._videoMetaDataChangedHandler);\n\n if (this._context.videoElement.value.dataset) {\n this._context.videoElement.value.dataset.sessionId = '';\n this._context.videoElement.value.dataset.streamId = '';\n }\n\n this._context.rendererDisposables.dispose();\n\n this._context.videoElement.value.pause();\n this._context.videoElement.value.srcObject = null;\n }\n\n this._context.autoMuted.value = false;\n this._context.autoPaused.value = false;\n this._context.loading.value = false;\n this._context.playing.value = false;\n this._context.state.value = ChannelState.Stopped;\n\n this._context.videoElement.value = videoElement;\n\n if (this._context.videoElement.value) {\n this._context.videoElement.value.addEventListener('loadeddata', this._videoMetaDataChangedHandler);\n this._context.videoElement.value.addEventListener('loadedmetadata', this._videoMetaDataChangedHandler);\n this._context.videoElement.value.addEventListener('resize', this._videoMetaDataChangedHandler);\n }\n }\n\n private handleVideoMetaDataChanged(): void {\n const videoElement = this._context.videoElement.value;\n\n if (videoElement) {\n if (this.resolution.value.width !== videoElement.videoWidth || this.resolution.value.height !== videoElement.videoHeight) {\n this._context.resolution.value = new Dimension(videoElement.videoWidth, videoElement.videoHeight);\n }\n } else {\n this._context.resolution.value = Dimension.empty;\n }\n }\n\n get token(): EdgeToken {\n return this._context.token.value;\n }\n\n set token(token: EdgeToken) {\n this._context.disposables.dispose();\n\n this._context.token.value = token;\n this._context.tokenExpiring.value = false;\n\n const parsedToken = EdgeAuth.parseToken(this._context.token.value);\n const discoveryUri = (EdgeAuth.getUri(parsedToken) || SDK.discoveryUri.value).toString();\n\n SDK.tenancy.value = EdgeAuth.getTenancy(parsedToken) || SDK.tenancy.value;\n DiscoveryUri.uri.value = discoveryUri;\n\n this._metricsService = MetricsFactory.getMetricsService(discoveryUri);\n\n this.start();\n }\n\n get peerConnection(): ReadOnlySubject<IPeerConnection> {\n return this._readOnlyPeerConnection;\n }\n\n get state(): ReadOnlySubject<ChannelState> {\n return this._readOnlyState;\n }\n\n get autoMuted(): ReadOnlySubject<boolean> {\n return this._readOnlyAutoMuted;\n }\n\n get autoPaused(): ReadOnlySubject<boolean> {\n return this._readOnlyAutoPaused;\n }\n\n get tokenExpiring(): ReadOnlySubject<boolean> {\n return this._readOnlyTokenExpiring;\n }\n\n get authorized(): ReadOnlySubject<boolean> {\n return this._readOnlyAuthorized;\n }\n\n get online(): ReadOnlySubject<boolean> {\n return this._readOnlyOnline;\n }\n\n get loading(): ReadOnlySubject<boolean> {\n return this._readOnlyLoading;\n }\n\n get playing(): ReadOnlySubject<boolean> {\n return this._readOnlyPlaying;\n }\n\n get standby(): ReadOnlySubject<boolean> {\n return this._readOnlyStandby;\n }\n\n get stopped(): ReadOnlySubject<boolean> {\n return this._readOnlyStopped;\n }\n\n get targetLag(): ReadOnlySubject<Millisecond> {\n return this._readOnlyTargetLag;\n }\n\n get lag(): ReadOnlySubject<Millisecond> {\n return this._readOnlyLag;\n }\n\n get bitrateLimit(): number {\n return this._readOnlyBitrateLimit.value;\n }\n\n get resolution(): ReadOnlySubject<Dimension> {\n return this._readOnlyResolution;\n }\n\n get failureCount(): ReadOnlySubject<number> {\n return this._readOnlyFailureCount;\n }\n\n get endPoint(): ReadOnlySubject<EndPoint> {\n return this._readOnlyEndPoint;\n }\n\n get stream(): ReadOnlySubject<IStream> {\n return this._readOnlyStream;\n }\n\n get streamId(): string {\n return this._context.streamId;\n }\n\n get rtcStats(): ReadOnlySubject<IRtcMonitorStatistic> {\n return this._readOnlyRtcStatistics;\n }\n\n get mediaStream(): ReadOnlySubject<MediaStream> {\n return this._readOnlyMediaStream;\n }\n\n setBitrateLimit(bitrateLimit: BitsPerSecond): void {\n this._context.bitrateLimit.value = bitrateLimit;\n }\n\n clearBitrateLimit(): void {\n if (this._context.bitrateLimit.value && this._context.endPoint.value && this._context.stream.value) {\n const elapsedInMilliseconds = Date.now() - this._context.channelInitialization.getTime();\n const bitrateInBitsPerSecond = 0;\n const ignored = this._context.endPoint.value.limitBitrate(\n this._context.stream.value,\n elapsedInMilliseconds,\n bitrateInBitsPerSecond,\n BitrateState.Keep,\n BitrateMode.Reset\n )\n .then(({status}) => {\n if (status === 'ok') {\n this._context.bitrateLimit.value = 0;\n }\n })\n .catch(e => {\n this._logger.error('Error while setting limit bitrate', e);\n });\n }\n }\n\n updateTargetLag(lag: Millisecond): void {\n this._context.targetLag.value = lag;\n }\n\n async stop(reason: string): Promise<void> {\n return new Promise(resolve => {\n if (!this._context.isStarting.value) {\n this.processStop(reason);\n\n resolve();\n\n return;\n }\n\n this._context.rendererDisposables.add(this._context.isStarting.subscribe(isStarting => {\n if (!isStarting) {\n this.processStop(reason);\n resolve();\n }\n }));\n });\n }\n\n private processStop(reason: string): void {\n if (this._context.videoElement.value) {\n this._context.videoElement.value.pause();\n this._context.videoElement.value.srcObject = null;\n }\n\n this._context.rendererDisposables.dispose();\n\n this.cleanUpResources(reason);\n\n this._context.state.value = ChannelState.Stopped;\n }\n\n async resume(): Promise<void> {\n if (this._context.mediaStream.value) {\n this._context.autoPaused.value = false;\n\n return this.playMediaStreamInVideoElement(this._context.mediaStream.value);\n }\n }\n\n mute(): void {\n const videoElement = this._context.videoElement.value;\n\n if (videoElement) {\n videoElement.muted = true;\n }\n }\n\n unmute(): void {\n const videoElement = this._context.videoElement.value;\n\n if (videoElement) {\n videoElement.muted = false;\n this._context.autoMuted.value = false;\n }\n }\n\n async dispose(): Promise<void> {\n return this.stop('client:channel-dispose').then(() => {\n this._context.channelDisposables.dispose();\n this._context.isDisposed = true;\n });\n }\n\n getUri(token): URL {\n const parsedToken = EdgeAuth.parseToken(token);\n const url = EdgeAuth.getUri(parsedToken);\n\n if (url) {\n return url;\n }\n\n this._logger.info('Fall back to the default discover URI [%s]', SDK.discoveryUri.value);\n\n return new URL(SDK.discoveryUri.value);\n }\n\n async start(): Promise<void> {\n if (this._context.isDisposed) {\n throw new Error('Channel was already disposed');\n }\n\n if (this._context.isStarting.value) {\n this._logger.info('Channel is already starting, skipping start');\n\n return;\n }\n\n this._context.isStarting.value = true;\n\n return this.processStart()\n .finally(() => {\n this._context.isStarting.value = false;\n });\n }\n\n private async processStart(): Promise<void> {\n const token = this._context.token.value;\n const listenOnStreamSetup = this._context.sessionTelemetry.listenOnStreamSetup();\n\n if (!EdgeAuth.isValidToken(token)) {\n this._logger.error('Failed to parse token [%s]', token);\n this._context.state.value = ChannelState.Unauthorized;\n this._context.authorized.value = false;\n\n return;\n }\n\n this.cleanUpResources('client:start');\n this._context.state.value = ChannelState.Starting;\n this._context.loading.value = true;\n\n const uri = this.getUri(token);\n const handleStreamFailureCallback: () => Promise<void> = () => new Promise((resolve): void => {\n // Need to set isStarting to false and call handleStreamFailure if stream monitors found an issue\n this._context.isStarting.value = false;\n\n return resolve(this.handleStreamFailure());\n });\n const streamPlayer = StreamFactory.create(token, this._context, handleStreamFailureCallback);\n\n if (!streamPlayer) {\n return;\n }\n\n return streamPlayer.start(\n uri,\n token,\n listenOnStreamSetup,\n this.playMediaStreamInVideoElement.bind(this))\n .then(() => {\n this._context.loading.value = false;\n })\n .catch(e => {\n listenOnStreamSetup.fail();\n\n this._context.failureCount.value++;\n\n this._context.online.value = false;\n\n this.cleanUpResources('client:cleanup-after-failed-setup');\n\n this._context.state.value = ChannelState.Error;\n\n this._logger.error('Failed to start channel', e);\n })\n .finally(() => {\n if (this._context.state.value === ChannelState.Playing || !SDK.automaticRetryOnFailure) {\n return;\n }\n\n const timeoutId = setTimeout(() => {\n const ignored = this.handleStreamFailure()\n .catch(e => {\n this._logger.error('Failed handling stream failure', e);\n });\n }, this.getRetryInterval());\n\n this._context.disposables.add(new Disposable(() => {\n clearTimeout(timeoutId);\n }));\n });\n }\n\n private async restartAfterStop(): Promise<void> {\n if (this._context.isDisposed) {\n throw new Error('Channel was already disposed');\n }\n\n if (this._context.mediaStream.value) {\n return this.playMediaStreamInVideoElement(this._context.mediaStream.value);\n }\n\n if (this._context.token.value) {\n const ignored = this.start();\n }\n }\n\n public async play(): Promise<void> {\n const mediaStream = this._context.mediaStream.value;\n\n if (!mediaStream) {\n return this.start();\n }\n\n return this.playMediaStreamInVideoElement(mediaStream);\n }\n\n private getRetryInterval(): number {\n switch (this._context.state.value) {\n case ChannelState.StandBy:\n case ChannelState.Offline:\n return standbyPollingIntervalInMilliseconds;\n case ChannelState.Error:\n case ChannelState.Recovering:\n case ChannelState.Unauthorized:\n case ChannelState.GeoRestricted:\n case ChannelState.GeoBlocked:\n case ChannelState.Stopped:\n case ChannelState.Starting:\n case ChannelState.Playing:\n case ChannelState.Paused:\n case ChannelState.Reconnecting:\n case ChannelState.UnsupportedFeature:\n // First and second attempt fast, after that exponential with backoff interval\n return Math.min(maxBackoffIntervalInMilliseconds, Math.pow(backoffIntervalInMilliseconds, Math.max(0, this._context.failureCount.value - 1)));\n default:\n assertUnreachable(this._context.state.value);\n }\n }\n\n private async handleStreamFailure(): Promise<void> {\n switch (this._context.state.value) {\n case ChannelState.Error:\n case ChannelState.Reconnecting:\n case ChannelState.StandBy:\n case ChannelState.Offline:\n case ChannelState.Recovering:\n this._logger.info('Retry start with initial state [%s] [%s]', this._context.state.value, ChannelState[this._context.state.value]);\n\n break;\n case ChannelState.Unauthorized:\n this._logger.info('Channel is unauthorized, skipping retry of start. Please provide a new token and invoke start()');\n\n return;\n case ChannelState.GeoRestricted:\n this._logger.info('Channel is geo restricted, skipping retry of start. Please provide a new token and invoke start()');\n\n return;\n case ChannelState.GeoBlocked:\n this._logger.info('Channel is geo blocked, skipping retry of start. Please provide a new token and invoke start()');\n\n return;\n case ChannelState.Stopped:\n this._logger.info('Channel is stopped, skipping retry of start.');\n\n return;\n case ChannelState.Playing:\n this._logger.info('Channel is playing, skipping retry of start');\n\n return;\n case ChannelState.Paused:\n this._logger.info('Channel is paused, skipping retry of start. Please invoke play()');\n\n return;\n case ChannelState.Starting:\n this._logger.info('Channel is already starting, skipping retry of start');\n\n return;\n case ChannelState.UnsupportedFeature:\n this._logger.info('Channel is stopped due to unsupported feature, skipping retry of start.');\n\n return;\n default:\n assertUnreachable(this._context.state.value);\n }\n\n return this.start();\n }\n\n private cleanUpResources(reason: string = defaultStreamTerminationReason): void {\n this._context.disposables.dispose();\n\n const peerConnection = this._context.peerConnection.value;\n\n if (peerConnection) {\n this._context.peerConnection.value = null;\n peerConnection.close();\n }\n\n if (this._context.mediaStream.value) {\n this._context.mediaStream.value.getTracks().forEach(track => track.stop());\n this._context.mediaStream.value = null;\n }\n\n this._context.autoPaused.value = false;\n this._context.autoMuted.value = false;\n this._context.playing.value = false;\n this._context.stopped.value = true;\n this._context.standby.value = false;\n\n if (this._context.stream.value && this._context.endPoint.value) {\n const ignored = this._context.endPoint.value.destroyStream(this._context.stream.value, reason)\n .then(({status}) => {\n if (status !== 'ok') {\n this._logger.warn('[%s] Failed to destroy stream with reason [%s]', this.streamId, status);\n\n return;\n }\n\n this._logger.info('[%s] Destroyed stream with reason [%s]', this.streamId, status);\n })\n .catch(e => {\n this._logger.error('[%s] Failed to destroy stream', this.streamId, e);\n });\n }\n\n if (this.videoElement && this.videoElement.dataset) {\n this.videoElement.dataset.sessionId = '';\n this.videoElement.dataset.streamId = '';\n }\n\n this._context.stream.value = null;\n this._context.endPoint.value = null;\n this._context.peerConnectionReconnectAttempts = 0;\n }\n\n private async playMediaStreamInVideoElement(mediaStream: MediaStream): Promise<void> {\n const videoElement = this._context.videoElement.value;\n\n if (!videoElement) {\n this._context.autoMuted.value = false;\n this._context.autoPaused.value = false;\n this._context.loading.value = false;\n this._context.playing.value = false;\n this._context.state.value = ChannelState.Stopped;\n\n return;\n }\n\n videoElement.srcObject = mediaStream;\n\n const playPromise = videoElement.play();\n\n if (playPromise === undefined) {\n this._context.autoMuted.value = false;\n this._context.autoPaused.value = false;\n this._context.loading.value = false;\n this._context.playing.value = true;\n this._context.state.value = ChannelState.Playing;\n\n return;\n }\n\n return playPromise.then(() => {\n this._context.autoMuted.value = false;\n this._context.autoPaused.value = false;\n this._context.loading.value = false;\n this._context.playing.value = true;\n this._context.state.value = ChannelState.Playing;\n }).catch(e => {\n const hasAudioTrack = !!mediaStream.getTracks().filter(track => {\n return track.kind === 'audio';\n });\n const automaticallyMuteVideoOnPlayFailureOff = !SDK.automaticallyMuteVideoOnPlayFailure;\n\n if (automaticallyMuteVideoOnPlayFailureOff || videoElement.muted || !hasAudioTrack) {\n this._context.autoMuted.value = false;\n this._context.autoPaused.value = true;\n this._context.loading.value = false;\n this._context.playing.value = false;\n this._context.state.value = ChannelState.Paused;\n\n if (automaticallyMuteVideoOnPlayFailureOff) {\n this._logger.info('[%s] Paused video after play failed. Manual user action required.', this.streamId, e);\n videoElement.srcObject = null;\n\n return;\n }\n\n if (hasAudioTrack) {\n this._logger.info('[%s] Failed to play video. Manual user action required.', this.streamId, e);\n\n return;\n }\n\n this._logger.info('[%s] Failed to play muted video. Manual user action required.', this.streamId, e);\n\n return;\n }\n\n videoElement.muted = true;\n\n return videoElement.play()\n .then(() => {\n this._logger.info('[%s] Played video after auto muting. Manual user action required to unmute.', this.streamId);\n\n this._context.autoMuted.value = true;\n this._context.autoPaused.value = false;\n this._context.loading.value = false;\n this._context.playing.value = true;\n this._context.state.value = ChannelState.Playing;\n }).catch(e => {\n videoElement.muted = false;\n\n this._logger.info('[%s] Failed to play video. Manual user action required.', this.streamId, e);\n\n this._context.autoMuted.value = false;\n this._context.autoPaused.value = true;\n this._context.loading.value = false;\n this._context.playing.value = false;\n this._context.state.value = ChannelState.Paused;\n });\n });\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nimport Channel from './Channel';\nimport SDK from '../SDK';\nimport {EdgeToken} from '../edgeAuth/EdgeToken';\nimport {Millisecond} from '../../units/Units';\n\ntype CreateChannelOptions = {\n videoElement: HTMLVideoElement;\n token: EdgeToken;\n targetLag?: Millisecond;\n}\n\nexport default class Channels {\n static createChannel(options: CreateChannelOptions): Channel {\n if (!SDK.initialized.value) {\n throw new Error('SDK is not loaded.');\n }\n\n return new Channel(options.videoElement, options.token, options.targetLag);\n }\n\n private constructor() {\n throw new Error('Channels is a static class that may not be instantiated');\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nimport SDK from '../SDK';\nimport Channels from './Channels';\nimport ChannelState from './ChannelState';\n\nexport {\n SDK,\n Channels,\n ChannelState\n};\n\nexport default {\n SDK,\n Channels,\n ChannelState\n};","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nconst defaultDiscoveryUri = 'https://pcast.phenixrts.com/pcast/endPoints';\n\nexport {defaultDiscoveryUri};","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\n\nimport {defaultDiscoveryUri} from '../defaults';\nimport Subject from '../../rx/Subject';\nimport VersionManager from '../version/VersionManager';\n\nexport default class DiscoveryUri {\n private static readonly _discoveryUri: Subject<string> = new Subject<string>(defaultDiscoveryUri);\n\n static get uri(): Subject<string> {\n return DiscoveryUri._discoveryUri;\n }\n\n static buildDiscoveryUrl(uri: URL): string {\n const url = new URL(uri.toString());\n const sdkVersion = VersionManager.sdkVersion;\n\n url.search = `?${new URLSearchParams([['version', sdkVersion], ['_', `${Date.now()}`]]).toString()}`;\n\n if (url.pathname === '/') {\n url.pathname = '/pcast/endPoints';\n }\n\n return url.toString();\n }\n\n private constructor() {\n throw new Error('DiscoveryUri is a static class that may not be instantiated');\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport LoggerFactory from '../../logger/LoggerFactory';\nimport {IEdgeAuth} from './EdgeAuthToken';\nimport {ILogger} from '../../logger/LoggerInterface';\nimport {EdgeToken} from './EdgeToken';\n\nconst edgeAuthTokenPrefix = 'DIGEST:';\n\nexport default class EdgeAuth {\n private static _logger: ILogger = LoggerFactory.getLogger('EdgeAuth');\n\n static parseToken(token: EdgeToken): IEdgeAuth {\n if (!this.isValidToken(token)) {\n EdgeAuth._logger.error('Token is not valid [%s]', token);\n\n return undefined;\n }\n\n try {\n const encodedEdgeAuthToken = atob(token.substr(edgeAuthTokenPrefix.length));\n const edgeAuthToken = JSON.parse(encodedEdgeAuthToken);\n\n edgeAuthToken.token = JSON.parse(edgeAuthToken.token);\n\n return edgeAuthToken;\n } catch (e) {\n EdgeAuth._logger.error('Cannot parse token value', e);\n\n return undefined;\n }\n }\n\n static getUri(parsedToken: IEdgeAuth): URL {\n return parsedToken && parsedToken.token && parsedToken.token.uri ?\n new URL(parsedToken.token.uri) : null;\n }\n\n static getTenancy(parsedToken: IEdgeAuth): string {\n return parsedToken && parsedToken.applicationId ?\n parsedToken.applicationId : '';\n }\n\n static isValidToken(token: EdgeToken): boolean {\n return !!token && token.startsWith(edgeAuthTokenPrefix);\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport BrowserDetector from '../../dom/BrowserDetector';\n\nexport default class FeatureEnablement {\n static get clientOfferDisabled(): boolean {\n // Client offer workflow does not work correctly in the following browsers\n return BrowserDetector.isChrome74 ||\n BrowserDetector.isChrome75 ||\n BrowserDetector.isChrome76 ||\n BrowserDetector.isChrome77;\n }\n\n static get addTranceiverDisabled(): boolean {\n // Chrome 69, 70, 71, 72 exposes `addTranceiver` but it does not work correctly\n return BrowserDetector.isChrome69 ||\n BrowserDetector.isChrome70 ||\n BrowserDetector.isChrome71 ||\n BrowserDetector.isChrome72;\n }\n\n static get getStatsPromiseBasedDisabled(): boolean {\n return BrowserDetector.browserName === 'Chrome' && BrowserDetector.browserMajorVersion <= 66;\n }\n\n static get getCurrentOfferDisabled(): boolean {\n return BrowserDetector.browserName === 'Chrome' && BrowserDetector.browserMajorVersion <= 69 ||\n BrowserDetector.browserName === 'Firefox' && BrowserDetector.browserMajorVersion <= 56;\n }\n\n static get onTrackDisabled(): boolean {\n return BrowserDetector.browserName === 'Chrome' && BrowserDetector.browserMajorVersion <= 63 ||\n BrowserDetector.browserName === 'Firefox' && BrowserDetector.browserMajorVersion <= 52;\n }\n\n static get webkitRTCPeerConnectionEnabled(): boolean {\n return BrowserDetector.browserName === 'Chrome' && BrowserDetector.browserMajorVersion <= 55;\n }\n\n static get promiseBasedPCMethodsDisabled(): boolean {\n return BrowserDetector.browserName === 'Firefox' && BrowserDetector.browserMajorVersion <= 52;\n }\n\n static get shouldUseNativeHls(): boolean {\n return BrowserDetector.browserName === 'Safari' ||\n BrowserDetector.browserName === 'SamsungBrowser';\n }\n\n static get isRTMPEnabled(): boolean {\n return (BrowserDetector.browserName === 'Firefox' && BrowserDetector.browserMajorVersion < 84) ||\n (BrowserDetector.browserName === 'Chrome' && BrowserDetector.browserMajorVersion < 70) ||\n BrowserDetector.browserName === 'Edge' ||\n BrowserDetector.browserName === 'IE';\n }\n\n static get isPrecachingEnabled(): boolean {\n return BrowserDetector.browserName !== 'IE';\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\ndeclare const __SDKVERSION__: string;\n\nexport default class VersionManager {\n private static _defaultVersion = new Date().toISOString();\n\n static get sdkVersion(): string {\n try {\n return __SDKVERSION__;\n } catch (e) {\n return this._defaultVersion;\n }\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport TelemetryService from './TelemetryService';\nimport TelemetryConfiguration from './TelemetryConfiguration';\nimport {IAppender} from '../logger/IAppender';\nimport {LoggingLevel} from '../logger/Logger';\n\nexport default class TelemetryAppender implements IAppender {\n private readonly _telemetryService: TelemetryService;\n private readonly _tenancy: string;\n private readonly _sessionId: string;\n private readonly _threshold: LoggingLevel;\n\n constructor(telemetryConfiguration: TelemetryConfiguration) {\n this._tenancy = telemetryConfiguration.tenancy;\n this._sessionId = telemetryConfiguration.sessionId;\n this._threshold = telemetryConfiguration.threshold;\n this._telemetryService = new TelemetryService(telemetryConfiguration);\n }\n\n log(logLevel: LoggingLevel, message: string, category: string, date: Date): void {\n if (logLevel < this._threshold) {\n return;\n }\n\n this._telemetryService.push(logLevel, message, category, date);\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport {LoggingLevel} from '../logger/Logger';\nimport LoggerDefaults from '../logger/LoggerDefaults';\n\nexport default class TelemetryConfiguration {\n private _url = 'https://telemetry.phenixrts.com/telemetry/logs';\n private _tenancy: string;\n private _sessionId: string;\n private _environment: string;\n private _threshold = LoggerDefaults.defaultTelemetryLoggingLevel;\n\n get url(): string {\n return this._url;\n }\n\n set url(url: string) {\n const telemetryUrl = new URL(url);\n\n telemetryUrl.pathname = telemetryUrl.pathname + '/logs';\n\n this._url = telemetryUrl.toString();\n }\n\n get environment(): string {\n return this._environment;\n }\n\n set environment(environment: string) {\n this._environment = environment;\n }\n\n get tenancy(): string {\n return this._tenancy;\n }\n\n set tenancy(tenancy: string) {\n this._tenancy = tenancy;\n }\n\n get sessionId(): string {\n return this._sessionId;\n }\n\n set sessionId(sessionId: string) {\n this._sessionId = sessionId;\n }\n\n get threshold(): LoggingLevel {\n return this._threshold;\n }\n\n set threshold(threshold: LoggingLevel) {\n this._threshold = threshold;\n }\n}","/**\n * Copyright 2022 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.\n */\nimport {LoggingLevel} from '../logger/Logger';\nimport VersionManager from '../sdk/version/VersionManager';\nimport TelemetryConfiguration from './TelemetryConfiguration';\n\nconst requestSizeLimit = 8192;\n\ninterface ILogItem {\n timestamp: string;\n tenancy: string;\n level: string;\n category: string;\n message: string;\n sessionId: string;\n version: string;\n environment: string;\n fullQualifiedName: string;\n}\n\nexport default class TelemetryService {\n private readonly _telemetryConfiguration: TelemetryConfiguration;\n\n private _logs: Array<ILogItem> = [];\n private _isSending: boolean;\n private _domain = location.hostname;\n\n constructor(telemetryConfiguration: TelemetryConfiguration) {\n this._telemetryConfiguration = telemetryConfiguration;\n }\n\n push(logLevel: LoggingLevel, message: string, category: string, timestamp: Date): void {\n const logRecord = {\n timestamp: timestamp.toISOString(),\n tenancy: this._telemetryConfiguration.tenancy,\n level: LoggingLevel[logLevel],\n category,\n message,\n sessionId: this._telemetryConfiguration.sessionId,\n version: VersionManager.sdkVersion,\n environment: this._telemetryConfiguration.environment,\n fullQualifiedName: this._domain\n };\n\n if (logLevel < LoggingLevel.Error) {\n this._logs.push(logRecord);\n } else {\n this._logs.unshift(logRecord);\n }\n\n const ignored = this.sendLogsIfAble();\n }\n\n private async sendLogs(logMessages: Array<ILogItem>): Promise<Response | void> {\n const formData = new FormData();\n\n formData.append('jsonBody', JSON.stringify({records: logMessages}));\n\n return await fetch(this._telemetryConfiguration.url, {\n method: 'POST',\n body: formData\n });\n }\n\n private async sendLogsIfAble(): Promise<Response | void> {\n if (this._logs.length <= 0 || this._isSending) {\n return;\n }\n\n let numberOfLogsToSend = 0;\n let sizeOfLogsToSend = 0;\n\n this._isSending = true;\n\n const getLogSize = (log: ILogItem): number => Object.values(log)\n .reduce((sum, item) => sum + (item ? item.length : 0), 0);\n\n while (this._logs.length > numberOfLogsToSend && getLogSize(this._logs[numberOfLogsToSend]) + sizeOfLogsToSend < requestSizeLimit) {\n sizeOfLogsToSend += getLogSize(this._logs[numberOfLogsToSend]);\n numberOfLogsToSend++;\n }\n\n if (!numberOfLogsToSend) {\n this._logs[numberOfLogsToSend].message = this._logs[numberOfLogsToSend].message.substring(0,\n getLogSize(this._logs[numberOfLogsToSend]) + (requestSizeLimit - getLogSize(this._logs[numberOfLogsToSend])));\n numberOfLogsToSend = 1;\n }\n\n const logMessages = this._logs.slice(0, numberOfLogsToSend);\n\n this._logs = this._logs.slice(numberOfLogsToSend);\n\n return this.sendLogs(logMessages).then(response => {\n this._isSending = false;\n\n const ignored = this.sendLogsIfAble();\n\n return response;\n }).catch(() => {\n this._isSending = false;\n\n const ignored = this.sendLogsIfAble();\n });\n }\n}","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\nmodule.exports = (!STRICT_METHOD || !USES_TO_LENGTH) ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.github.io/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n result = new C();\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterOut }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_OUT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_OUT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push.call(target, value); // filterOut\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterOut` method\n // https://github.com/tc39/proposal-array-filtering\n filterOut: createMethod(7)\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\n\nvar defineProperty = Object.defineProperty;\nvar cache = {};\n\nvar thrower = function (it) { throw it; };\n\nmodule.exports = function (METHOD_NAME, options) {\n if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];\n if (!options) options = {};\n var method = [][METHOD_NAME];\n var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;\n var argument0 = has(options, 0) ? options[0] : thrower;\n var argument1 = has(options, 1) ? options[1] : undefined;\n\n return cache[METHOD_NAME] = !!method && !fails(function () {\n if (ACCESSORS && !DESCRIPTORS) return true;\n var O = { length: -1 };\n\n if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower });\n else O[1] = 1;\n\n method.call(O, argument0, argument1);\n });\n};\n","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar padStart = require('../internals/string-pad').start;\n\nvar abs = Math.abs;\nvar DatePrototype = Date.prototype;\nvar getTime = DatePrototype.getTime;\nvar nativeDateToISOString = DatePrototype.toISOString;\n\n// `Date.prototype.toISOString` method implementation\n// https://tc39.github.io/ecma262/#sec-date.prototype.toisostring\n// PhantomJS / old WebKit fails here:\nmodule.exports = (fails(function () {\n return nativeDateToISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n nativeDateToISOString.call(new Date(NaN));\n})) ? function toISOString() {\n if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');\n var date = this;\n var year = date.getUTCFullYear();\n var milliseconds = date.getUTCMilliseconds();\n var sign = year < 0 ? '-' : year > 9999 ? '+' : '';\n return sign + padStart(abs(year), sign ? 6 : 4, 0) +\n '-' + padStart(date.getUTCMonth() + 1, 2, 0) +\n '-' + padStart(date.getUTCDate(), 2, 0) +\n 'T' + padStart(date.getUTCHours(), 2, 0) +\n ':' + padStart(date.getUTCMinutes(), 2, 0) +\n ':' + padStart(date.getUTCSeconds(), 2, 0) +\n '.' + padStart(milliseconds, 3, 0) +\n 'Z';\n} : nativeDateToISOString;\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","var fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(iphone|ipod|ipad).*applewebkit/i.test(userAgent);\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar regexpExec = require('../internals/regexp-exec');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$<a>') !== '7';\n});\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\nvar REPLACE = wellKnownSymbol('replace');\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !(\n REPLACE_SUPPORTS_NAMED_GROUPS &&\n REPLACE_KEEPS_$0 &&\n !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n )) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }, {\n REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n });\n var stringMethod = methods[0];\n var regexMethod = methods[1];\n\n redefine(String.prototype, KEY, stringMethod);\n redefine(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return regexMethod.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return regexMethod.call(string, this); }\n );\n }\n\n if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\nvar aFunction = require('../internals/a-function');\nvar isObject = require('../internals/is-object');\n\nvar slice = [].slice;\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n if (!(argsLength in factories)) {\n for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[argsLength] = Function('C,a', 'return new C(' + list.join(',') + ')');\n } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.github.io/ecma262/#sec-function.prototype.bind\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = slice.call(arguments, 1);\n var boundFunction = function bound(/* args... */) {\n var args = partArgs.concat(slice.call(arguments));\n return this instanceof boundFunction ? construct(fn, args.length, args) : fn.apply(that, args);\n };\n if (isObject(fn.prototype)) boundFunction.prototype = fn.prototype;\n return boundFunction;\n};\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var anObject = require('../internals/an-object');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = function (it) {\n var iteratorMethod = getIteratorMethod(it);\n if (typeof iteratorMethod != 'function') {\n throw TypeError(String(it) + ' is not iterable');\n } return anObject(iteratorMethod.call(it));\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func\n (function () { return this; })() || Function('return this')();\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","module.exports = {};\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n }\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = false;\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n","var anObject = require('../internals/an-object');\n\nmodule.exports = function (iterator) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) {\n return anObject(returnMethod.call(iterator)).value;\n }\n};\n","'use strict';\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","module.exports = {};\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n if (!IS_IOS && !IS_NODE && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n then = promise.then;\n notify = function () {\n then.call(promise, flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\n var searchParams = url.searchParams;\n var result = '';\n url.pathname = 'c%20d';\n searchParams.forEach(function (value, key) {\n searchParams['delete']('b');\n result += key + value;\n });\n return (IS_PURE && !url.toJSON)\n || !searchParams.sort\n || url.href !== 'http://a/c%20d?a=1&c=3'\n || searchParams.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !searchParams[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('http://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('http://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('http://x', undefined).host !== 'x';\n});\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","'use strict';\nvar aFunction = require('../internals/a-function');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n};\n\n// 25.4.1.5 NewPromiseCapability(C)\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseInt = global.parseInt;\nvar hex = /^[+-]?0[Xx]/;\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22;\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n var S = trim(String(string));\n return $parseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10));\n} : $parseInt;\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\nvar nativeAssign = Object.assign;\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\nmodule.exports = !nativeAssign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : nativeAssign;\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return nativeGetOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","var anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var DESCRIPTORS = require('../internals/descriptors');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {\n result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.github.io/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.github.io/ecma262/#sec-object.values\n values: createMethod(false)\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var state;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) {\n createNonEnumerableProperty(value, 'name', key);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","'use strict';\nvar regexpFlags = require('./regexp-flags');\nvar stickyHelpers = require('./regexp-sticky-helpers');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = regexpFlags.call(re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = flags.replace('y', '');\n if (flags.indexOf('g') === -1) {\n flags += 'g';\n }\n\n strCopy = String(str).slice(re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = match.input.slice(charsAdded);\n match[0] = match[0].slice(charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\n\nvar fails = require('./fails');\n\n// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n// so we use an intermediate function.\nfunction RE(s, f) {\n return RegExp(s, f);\n}\n\nexports.UNSUPPORTED_Y = fails(function () {\n // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n var re = RE('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = RE('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// `SameValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-samevalue\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.8.1',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.github.io/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","// https://github.com/zloirock/core-js/issues/280\nvar userAgent = require('../internals/engine-user-agent');\n\n// eslint-disable-next-line unicorn/no-unsafe-regex\nmodule.exports = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('../internals/to-length');\nvar repeat = require('../internals/string-repeat');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar ceil = Math.ceil;\n\n// `String.prototype.{ padStart, padEnd }` methods implementation\nvar createMethod = function (IS_END) {\n return function ($this, maxLength, fillString) {\n var S = String(requireObjectCoercible($this));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n var fillLen, stringFiller;\n if (intMaxLength <= stringLength || fillStr == '') return S;\n fillLen = intMaxLength - stringLength;\n stringFiller = repeat.call(fillStr, ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return IS_END ? S + stringFiller : stringFiller + S;\n };\n};\n\nmodule.exports = {\n // `String.prototype.padStart` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.padstart\n start: createMethod(false),\n // `String.prototype.padEnd` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.padend\n end: createMethod(true)\n};\n","'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\n// eslint-disable-next-line max-statements\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n output.push(delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n for (var k = base; /* no condition */; k += base) {\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n\n ++delta;\n ++n;\n }\n return output.join('');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = input.toLowerCase().replace(regexSeparators, '\\u002E').split('.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);\n }\n return encoded.join('.');\n};\n","'use strict';\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.repeat` method implementation\n// https://tc39.github.io/ecma262/#sec-string.prototype.repeat\nmodule.exports = ''.repeat || function repeat(count) {\n var str = String(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar bind = require('../internals/function-bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar location = global.location;\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\n\nvar run = function (id) {\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(id + '', location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n typeof postMessage == 'function' &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n // eslint-disable-next-line no-undef\n && !Symbol.sham\n // eslint-disable-next-line no-undef\n && typeof Symbol.iterator == 'symbol';\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name)) {\n if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n concat: function concat(arg) { // eslint-disable-line no-unused-vars\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","var $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n fill: fill\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n// Edge 14- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength(FIND_INDEX);\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength(FIND);\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n forEach: forEach\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n// `Array.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: !USES_TO_LENGTH }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\nvar $ = require('../internals/export');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n// `Array.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? nativeIndexOf.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\n// `Array.isArray` method\n// https://tc39.github.io/ecma262/#sec-array.isarray\n$({ target: 'Array', stat: true }, {\n isArray: isArray\n});\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.github.io/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n// FF49- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('map');\n\n// `Array.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { 1: 0 });\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\n\n// `Array.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH || CHROME_BUG }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('slice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('splice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","var $ = require('../internals/export');\n\n// `Date.now` method\n// https://tc39.github.io/ecma262/#sec-date.now\n$({ target: 'Date', stat: true }, {\n now: function now() {\n return new Date().getTime();\n }\n});\n","var $ = require('../internals/export');\nvar toISOString = require('../internals/date-to-iso-string');\n\n// `Date.prototype.toISOString` method\n// https://tc39.github.io/ecma262/#sec-date.prototype.toisostring\n// PhantomJS / old WebKit has a broken implementations\n$({ target: 'Date', proto: true, forced: Date.prototype.toISOString !== toISOString }, {\n toISOString: toISOString\n});\n","var redefine = require('../internals/redefine');\n\nvar DatePrototype = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar nativeDateToString = DatePrototype[TO_STRING];\nvar getTime = DatePrototype.getTime;\n\n// `Date.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-date.prototype.tostring\nif (new Date(NaN) + '' != INVALID_DATE) {\n redefine(DatePrototype, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? nativeDateToString.call(this) : INVALID_DATE;\n });\n}\n","var $ = require('../internals/export');\nvar bind = require('../internals/function-bind');\n\n// `Function.prototype.bind` method\n// https://tc39.github.io/ecma262/#sec-function.prototype.bind\n$({ target: 'Function', proto: true }, {\n bind: bind\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.github.io/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.github.io/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n var first, third, radix, maxCode, digits, length, index, code;\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = it.charCodeAt(0);\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = it.slice(2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = digits.charCodeAt(index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.github.io/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var dummy = this;\n return dummy instanceof NumberWrapper\n // check on 1..constructor(foo) case\n && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,' +\n // ESNext\n 'fromString,range'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperties = require('../internals/object-define-properties');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\n$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, {\n defineProperties: defineProperties\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar objectDefinePropertyModile = require('../internals/object-define-property');\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\n$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, {\n defineProperty: objectDefinePropertyModile.f\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.github.io/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n","var $ = require('../internals/export');\nvar parseIntImplementation = require('../internals/number-parse-int');\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != parseIntImplementation }, {\n parseInt: parseIntImplementation\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar redefine = require('../internals/redefine');\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromise && fails(function () {\n NativePromise.prototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.github.io/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n }\n});\n\n// patch native Promise.prototype for native async functions\nif (!IS_PURE && typeof NativePromise == 'function' && !NativePromise.prototype['finally']) {\n redefine(NativePromise.prototype, 'finally', getBuiltIn('Promise').prototype['finally']);\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar isObject = require('../internals/is-object');\nvar aFunction = require('../internals/a-function');\nvar anInstance = require('../internals/an-instance');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar PromiseConstructor = NativePromise;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar $fetch = getBuiltIn('fetch');\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar NATIVE_REJECTION_EVENT = typeof PromiseRejectionEvent == 'function';\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor);\n if (!GLOBAL_CORE_JS_PROMISE) {\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (V8_VERSION === 66) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n if (!IS_NODE && !NATIVE_REJECTION_EVENT) return true;\n }\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromiseConstructor.prototype['finally']) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = PromiseConstructor.resolve(1);\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n return !(promise.then(function () { /* empty */ }) instanceof FakePromise);\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0;\n // variable length - can't use forEach\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n }\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n then.call(value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromiseConstructor, PROMISE);\n aFunction(executor);\n Internal.call(this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromiseConstructor.prototype, {\n // `Promise.prototype.then` method\n // https://tc39.github.io/ecma262/#sec-promise.prototype.then\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n state.reactions.push(reaction);\n if (state.state != PENDING) notify(state, false);\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.github.io/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && typeof NativePromise == 'function') {\n nativeThen = NativePromise.prototype.then;\n\n // wrap native Promise#then for native async functions\n redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n nativeThen.call(that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n\n // wrap fetch result\n if (typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, {\n // eslint-disable-next-line no-unused-vars\n fetch: function fetch(input /* , init */) {\n return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments));\n }\n });\n }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.github.io/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n capability.reject.call(undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.github.io/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.github.io/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n $promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.github.io/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n iterate(iterable, function (promise) {\n $promiseResolve.call(C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar aFunction = require('../internals/a-function');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar bind = require('../internals/function-bind');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\n\n// `Reflect.construct` method\n// https://tc39.github.io/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n nativeConstruct(function () { /* empty */ });\n});\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar nativeEndsWith = ''.endsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = String(requireObjectCoercible(this));\n notARegExp(searchString);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n var search = String(searchString);\n return nativeEndsWith\n ? nativeEndsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~String(requireObjectCoercible(this))\n .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : regexp[MATCH];\n return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative(nativeMatch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $padStart = require('../internals/string-pad').start;\nvar WEBKIT_BUG = require('../internals/string-pad-webkit-bug');\n\n// `String.prototype.padStart` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.padstart\n$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $padStart(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $ = require('../internals/export');\nvar repeat = require('../internals/string-repeat');\n\n// `String.prototype.repeat` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.repeat\n$({ target: 'String', proto: true }, {\n repeat: repeat\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n if (\n (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n ) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n }\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return nativeReplace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = requireObjectCoercible(this);\n var searcher = regexp == undefined ? undefined : regexp[SEARCH];\n return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative(nativeSearch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\n\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SUPPORTS_Y);\n","'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar nativeStartsWith = ''.startsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = String(requireObjectCoercible(this));\n notARegExp(searchString);\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return nativeStartsWith\n ? nativeStartsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","// `Symbol.prototype.description` getter\n// https://tc39.github.io/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar has = require('../internals/has');\nvar isObject = require('../internals/is-object');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n var result = this instanceof SymbolWrapper\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n symbolPrototype.constructor = SymbolWrapper;\n\n var symbolToString = symbolPrototype.toString;\n var native = String(NativeSymbol('test')) == 'Symbol(test)';\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n defineProperty(symbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = isObject(this) ? this.valueOf() : this;\n var string = symbolToString.call(symbol);\n if (has(EmptyStringDescriptionStore, symbol)) return '';\n var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar isSymbol = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPrimitive(P, true);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPrimitive(V, true);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPrimitive(P, true);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.github.io/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n redefine($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.github.io/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = String(key);\n if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.github.io/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.github.io/ecma262/#sec-json.stringify\nif ($stringify) {\n var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n });\n\n $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n // eslint-disable-next-line no-unused-vars\n stringify: function stringify(it, replacer, space) {\n var args = [it];\n var index = 1;\n var $replacer;\n while (arguments.length > index) args.push(arguments[index++]);\n $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return $stringify.apply(null, args);\n }\n });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar slice = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\n\nvar wrap = function (scheduler) {\n return function (handler, timeout /* , ...arguments */) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice.call(arguments, 2) : undefined;\n return scheduler(boundArgs ? function () {\n // eslint-disable-next-line no-new-func\n (typeof handler == 'function' ? handler : Function(handler)).apply(this, args);\n } : handler, timeout);\n };\n};\n\n// ie9- setTimeout & setInterval additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\n$({ global: true, bind: true, forced: MSIE }, {\n // `setTimeout` method\n // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout\n setTimeout: wrap(global.setTimeout),\n // `setInterval` method\n // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval\n setInterval: wrap(global.setInterval)\n});\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has');\nvar bind = require('../internals/function-bind-context');\nvar classof = require('../internals/classof');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $fetch = getBuiltIn('fetch');\nvar Headers = getBuiltIn('Headers');\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\n\nvar deserialize = function (it) {\n var result = it.replace(plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = result.replace(percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replace[match];\n};\n\nvar serialize = function (it) {\n return encodeURIComponent(it).replace(find, replacer);\n};\n\nvar parseSearchParams = function (result, query) {\n if (query) {\n var attributes = query.split('&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = attribute.split('=');\n result.push({\n key: deserialize(entry.shift()),\n value: deserialize(entry.join('='))\n });\n }\n }\n }\n};\n\nvar updateSearchParams = function (query) {\n this.entries.length = 0;\n parseSearchParams(this.entries, query);\n};\n\nvar validateArgumentsLength = function (passed, required) {\n if (passed < required) throw TypeError('Not enough arguments');\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n } return step;\n});\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n var that = this;\n var entries = [];\n var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;\n\n setInternalState(that, {\n type: URL_SEARCH_PARAMS,\n entries: entries,\n updateURL: function () { /* empty */ },\n updateSearchParams: updateSearchParams\n });\n\n if (init !== undefined) {\n if (isObject(init)) {\n iteratorMethod = getIteratorMethod(init);\n if (typeof iteratorMethod === 'function') {\n iterator = iteratorMethod.call(init);\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = entryNext.call(entryIterator)).done ||\n (second = entryNext.call(entryIterator)).done ||\n !entryNext.call(entryIterator).done\n ) throw TypeError('Expected sequence with length 2');\n entries.push({ key: first.value + '', value: second.value + '' });\n }\n } else for (key in init) if (hasOwn(init, key)) entries.push({ key: key, value: init[key] + '' });\n } else {\n parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');\n }\n }\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\nredefineAll(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.append` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n validateArgumentsLength(arguments.length, 2);\n var state = getInternalParamsState(this);\n state.entries.push({ key: name + '', value: value + '' });\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index].key === key) entries.splice(index, 1);\n else index++;\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) result.push(entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index++].key === key) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var found = false;\n var key = name + '';\n var val = value + '';\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) entries.splice(index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) entries.push({ key: key, value: val });\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n var entries = state.entries;\n // Array#sort is not stable in some engines\n var slice = entries.slice();\n var entry, entriesIndex, sliceIndex;\n entries.length = 0;\n for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {\n entry = slice[sliceIndex];\n for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {\n if (entries[entriesIndex].key > entry.key) {\n entries.splice(entriesIndex, 0, entry);\n break;\n }\n }\n if (entriesIndex === sliceIndex) entries.push(entry);\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries);\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n var entries = getInternalParamsState(this).entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n result.push(serialize(entry.key) + '=' + serialize(entry.value));\n } return result.join('&');\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` for correct work with polyfilled `URLSearchParams`\n// https://github.com/zloirock/core-js/issues/674\nif (!USE_NATIVE_URL && typeof $fetch == 'function' && typeof Headers == 'function') {\n $({ global: true, enumerable: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n var args = [input];\n var init, body, headers;\n if (arguments.length > 1) {\n init = arguments[1];\n if (isObject(init)) {\n body = init.body;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headers.has('content-type')) {\n headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n init = create(init, {\n body: createPropertyDescriptor(0, String(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n }\n args.push(init);\n } return $fetch.apply(this, args);\n }\n });\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar global = require('../internals/global');\nvar defineProperties = require('../internals/object-define-properties');\nvar redefine = require('../internals/redefine');\nvar anInstance = require('../internals/an-instance');\nvar has = require('../internals/has');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/string-punycode-to-ascii');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar URLSearchParamsModule = require('../modules/web.url-search-params');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar NativeURL = global.URL;\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar floor = Math.floor;\nvar pow = Math.pow;\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[A-Za-z]/;\nvar ALPHANUMERIC = /[\\d+-.A-Za-z]/;\nvar DIGIT = /\\d/;\nvar HEX_START = /^(0x|0X)/;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\dA-Fa-f]+$/;\n// eslint-disable-next-line no-control-regex\nvar FORBIDDEN_HOST_CODE_POINT = /[\\u0000\\u0009\\u000A\\u000D #%/:?@[\\\\]]/;\n// eslint-disable-next-line no-control-regex\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\u0000\\u0009\\u000A\\u000D #/:?@[\\\\]]/;\n// eslint-disable-next-line no-control-regex\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u001F ]+|[\\u0000-\\u001F ]+$/g;\n// eslint-disable-next-line no-control-regex\nvar TAB_AND_NEW_LINE = /[\\u0009\\u000A\\u000D]/g;\nvar EOF;\n\nvar parseHost = function (url, input) {\n var result, codePoints, index;\n if (input.charAt(0) == '[') {\n if (input.charAt(input.length - 1) != ']') return INVALID_HOST;\n result = parseIPv6(input.slice(1, -1));\n if (!result) return INVALID_HOST;\n url.host = result;\n // opaque host\n } else if (!isSpecial(url)) {\n if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n url.host = result;\n } else {\n input = toASCII(input);\n if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n url.host = result;\n }\n};\n\nvar parseIPv4 = function (input) {\n var parts = input.split('.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] == '') {\n parts.pop();\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part == '') return input;\n radix = 10;\n if (part.length > 1 && part.charAt(0) == '0') {\n radix = HEX_START.test(part) ? 16 : 8;\n part = part.slice(radix == 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input;\n number = parseInt(part, radix);\n }\n numbers.push(number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index == partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = numbers.pop();\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// eslint-disable-next-line max-statements\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var char = function () {\n return input.charAt(pointer);\n };\n\n if (char() == ':') {\n if (input.charAt(1) != ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (char()) {\n if (pieceIndex == 8) return;\n if (char() == ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && HEX.test(char())) {\n value = value * 16 + parseInt(char(), 16);\n pointer++;\n length++;\n }\n if (char() == '.') {\n if (length == 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (char()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (char() == '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!DIGIT.test(char())) return;\n while (DIGIT.test(char())) {\n number = parseInt(char(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece == 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n }\n if (numbersSeen != 4) return;\n break;\n } else if (char() == ':') {\n pointer++;\n if (!char()) return;\n } else if (char()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\n\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n result.unshift(host % 256);\n host = floor(host / 256);\n } return result.join('.');\n // ipv6\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += host[index].toString(16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (char, set) {\n var code = codeAt(char, 0);\n return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char);\n};\n\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\nvar isSpecial = function (url) {\n return has(specialSchemes, url.scheme);\n};\n\nvar includesCredentials = function (url) {\n return url.username != '' || url.password != '';\n};\n\nvar cannotHaveUsernamePasswordPort = function (url) {\n return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n};\n\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && ALPHA.test(string.charAt(0))\n && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));\n};\n\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (\n string.length == 2 ||\n ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\nvar shortenURLsPath = function (url) {\n var path = url.path;\n var pathSize = path.length;\n if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.pop();\n }\n};\n\nvar isSingleDot = function (segment) {\n return segment === '.' || segment.toLowerCase() === '%2e';\n};\n\nvar isDoubleDot = function (segment) {\n segment = segment.toLowerCase();\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\n// eslint-disable-next-line max-statements\nvar parseURL = function (url, input, stateOverride, base) {\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, char, bufferCodePoints, failure;\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n }\n\n input = input.replace(TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n char = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (char && ALPHA.test(char)) {\n buffer += char.toLowerCase();\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) {\n buffer += char.toLowerCase();\n } else if (char == ':') {\n if (stateOverride && (\n (isSpecial(url) != has(specialSchemes, buffer)) ||\n (buffer == 'file' && (includesCredentials(url) || url.port !== null)) ||\n (url.scheme == 'file' && !url.host)\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (isSpecial(url) && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (isSpecial(url)) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n url.path.push('');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && char == '#') {\n url.scheme = base.scheme;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (char == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (char == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (char == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '/' || (char == '\\\\' && isSpecial(url))) {\n state = RELATIVE_SLASH;\n } else if (char == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.path.pop();\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (isSpecial(url) && (char == '/' || char == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (char == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (char != '/' || buffer.charAt(pointer + 1) != '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (char != '/' && char != '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (char == '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += char;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (char == ':' && !seenBracket) {\n if (buffer == '') return INVALID_HOST;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME) return;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (isSpecial(url) && buffer == '') return INVALID_HOST;\n if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (char == '[') seenBracket = true;\n else if (char == ']') seenBracket = false;\n buffer += char;\n } break;\n\n case PORT:\n if (DIGIT.test(char)) {\n buffer += char;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url)) ||\n stateOverride\n ) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (char == '/' || char == '\\\\') state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (char == EOF) {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '?') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n url.host = base.host;\n url.path = base.path.slice();\n shortenURLsPath(url);\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (char == '/' || char == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (char == EOF || char == '/' || char == '\\\\' || char == '?' || char == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = parseHost(url, buffer);\n if (failure) return failure;\n if (url.host == 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += char;\n break;\n\n case PATH_START:\n if (isSpecial(url)) {\n state = PATH;\n if (char != '/' && char != '\\\\') continue;\n } else if (!stateOverride && char == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n state = PATH;\n if (char != '/') continue;\n } break;\n\n case PATH:\n if (\n char == EOF || char == '/' ||\n (char == '\\\\' && isSpecial(url)) ||\n (!stateOverride && (char == '?' || char == '#'))\n ) {\n if (isDoubleDot(buffer)) {\n shortenURLsPath(url);\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else if (isSingleDot(buffer)) {\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = buffer.charAt(0) + ':'; // normalize windows drive letter\n }\n url.path.push(buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n url.path.shift();\n }\n }\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(char, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n url.path[0] += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n if (char == \"'\" && isSpecial(url)) url.query += '%27';\n else if (char == '#') url.query += '%23';\n else url.query += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (char != EOF) url.fragment += percentEncode(char, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLConstructor, 'URL');\n var base = arguments.length > 1 ? arguments[1] : undefined;\n var urlString = String(url);\n var state = setInternalState(that, { type: 'URL' });\n var baseState, failure;\n if (base !== undefined) {\n if (base instanceof URLConstructor) baseState = getInternalURLState(base);\n else {\n failure = parseURL(baseState = {}, String(base));\n if (failure) throw TypeError(failure);\n }\n }\n failure = parseURL(state, urlString, null, baseState);\n if (failure) throw TypeError(failure);\n var searchParams = state.searchParams = new URLSearchParams();\n var searchParamsState = getInternalSearchParamsState(searchParams);\n searchParamsState.updateSearchParams(state.query);\n searchParamsState.updateURL = function () {\n state.query = String(searchParams) || null;\n };\n if (!DESCRIPTORS) {\n that.href = serializeURL.call(that);\n that.origin = getOrigin.call(that);\n that.protocol = getProtocol.call(that);\n that.username = getUsername.call(that);\n that.password = getPassword.call(that);\n that.host = getHost.call(that);\n that.hostname = getHostname.call(that);\n that.port = getPort.call(that);\n that.pathname = getPathname.call(that);\n that.search = getSearch.call(that);\n that.searchParams = getSearchParams.call(that);\n that.hash = getHash.call(that);\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar serializeURL = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (includesCredentials(url)) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme == 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n};\n\nvar getOrigin = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var port = url.port;\n if (scheme == 'blob') try {\n return new URL(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !isSpecial(url)) return 'null';\n return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');\n};\n\nvar getProtocol = function () {\n return getInternalURLState(this).scheme + ':';\n};\n\nvar getUsername = function () {\n return getInternalURLState(this).username;\n};\n\nvar getPassword = function () {\n return getInternalURLState(this).password;\n};\n\nvar getHost = function () {\n var url = getInternalURLState(this);\n var host = url.host;\n var port = url.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n};\n\nvar getHostname = function () {\n var host = getInternalURLState(this).host;\n return host === null ? '' : serializeHost(host);\n};\n\nvar getPort = function () {\n var port = getInternalURLState(this).port;\n return port === null ? '' : String(port);\n};\n\nvar getPathname = function () {\n var url = getInternalURLState(this);\n var path = url.path;\n return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n};\n\nvar getSearch = function () {\n var query = getInternalURLState(this).query;\n return query ? '?' + query : '';\n};\n\nvar getSearchParams = function () {\n return getInternalURLState(this).searchParams;\n};\n\nvar getHash = function () {\n var fragment = getInternalURLState(this).fragment;\n return fragment ? '#' + fragment : '';\n};\n\nvar accessorDescriptor = function (getter, setter) {\n return { get: getter, set: setter, configurable: true, enumerable: true };\n};\n\nif (DESCRIPTORS) {\n defineProperties(URLPrototype, {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n href: accessorDescriptor(serializeURL, function (href) {\n var url = getInternalURLState(this);\n var urlString = String(href);\n var failure = parseURL(url, urlString);\n if (failure) throw TypeError(failure);\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n origin: accessorDescriptor(getOrigin),\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n protocol: accessorDescriptor(getProtocol, function (protocol) {\n var url = getInternalURLState(this);\n parseURL(url, String(protocol) + ':', SCHEME_START);\n }),\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n username: accessorDescriptor(getUsername, function (username) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(username));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n password: accessorDescriptor(getPassword, function (password) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(password));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n host: accessorDescriptor(getHost, function (host) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(host), HOST);\n }),\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n hostname: accessorDescriptor(getHostname, function (hostname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(hostname), HOSTNAME);\n }),\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n port: accessorDescriptor(getPort, function (port) {\n var url = getInternalURLState(this);\n if (cannotHaveUsernamePasswordPort(url)) return;\n port = String(port);\n if (port == '') url.port = null;\n else parseURL(url, port, PORT);\n }),\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n pathname: accessorDescriptor(getPathname, function (pathname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n url.path = [];\n parseURL(url, pathname + '', PATH_START);\n }),\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n search: accessorDescriptor(getSearch, function (search) {\n var url = getInternalURLState(this);\n search = String(search);\n if (search == '') {\n url.query = null;\n } else {\n if ('?' == search.charAt(0)) search = search.slice(1);\n url.query = '';\n parseURL(url, search, QUERY);\n }\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n searchParams: accessorDescriptor(getSearchParams),\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n hash: accessorDescriptor(getHash, function (hash) {\n var url = getInternalURLState(this);\n hash = String(hash);\n if (hash == '') {\n url.fragment = null;\n return;\n }\n if ('#' == hash.charAt(0)) hash = hash.slice(1);\n url.fragment = '';\n parseURL(url, hash, FRAGMENT);\n })\n });\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\nredefine(URLPrototype, 'toJSON', function toJSON() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\nredefine(URLPrototype, 'toString', function toString() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n // eslint-disable-next-line no-unused-vars\n if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {\n return nativeCreateObjectURL.apply(NativeURL, arguments);\n });\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n // eslint-disable-next-line no-unused-vars\n if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {\n return nativeRevokeObjectURL.apply(NativeURL, arguments);\n });\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","var global =\n (typeof globalThis !== 'undefined' && globalThis) ||\n (typeof self !== 'undefined' && self) ||\n (typeof global !== 'undefined' && global)\n\nvar support = {\n searchParams: 'URLSearchParams' in global,\n iterable: 'Symbol' in global && 'iterator' in Symbol,\n blob:\n 'FileReader' in global &&\n 'Blob' in global &&\n (function() {\n try {\n new Blob()\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in global,\n arrayBuffer: 'ArrayBuffer' in global\n}\n\nfunction isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n}\n\nif (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n }\n return name.toLowerCase()\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n}\n\nexport function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n}\n\nHeaders.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue + ', ' + value : value\n}\n\nHeaders.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n}\n\nHeaders.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n}\n\nHeaders.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n}\n\nHeaders.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n}\n\nHeaders.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n}\n\nHeaders.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push(name)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.values = function() {\n var items = []\n this.forEach(function(value) {\n items.push(value)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push([name, value])\n })\n return iteratorFor(items)\n}\n\nif (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n}\n\nfunction consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n}\n\nfunction fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n}\n\nfunction readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n}\n\nfunction readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n}\n\nfunction readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n}\n\nfunction bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n}\n\nfunction Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n this.bodyUsed = this.bodyUsed\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n this._bodyText = body = Object.prototype.toString.call(body)\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n var isConsumed = consumed(this)\n if (isConsumed) {\n return isConsumed\n }\n if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n return Promise.resolve(\n this._bodyArrayBuffer.buffer.slice(\n this._bodyArrayBuffer.byteOffset,\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n )\n )\n } else {\n return Promise.resolve(this._bodyArrayBuffer)\n }\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n}\n\n// HTTP methods whose capitalization should be normalized\nvar methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\nfunction normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return methods.indexOf(upcased) > -1 ? upcased : method\n}\n\nexport function Request(input, options) {\n if (!(this instanceof Request)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n this.signal = input.signal\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.signal = options.signal || this.signal\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime())\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime()\n }\n }\n }\n}\n\nRequest.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n}\n\nfunction decode(body) {\n var form = new FormData()\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n}\n\nfunction parseHeaders(rawHeaders) {\n var headers = new Headers()\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n preProcessedHeaders\n .split('\\r')\n .map(function(header) {\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n })\n .forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n}\n\nBody.call(Request.prototype)\n\nexport function Response(bodyInit, options) {\n if (!(this instanceof Response)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = options.status === undefined ? 200 : options.status\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = options.statusText === undefined ? '' : '' + options.statusText\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n}\n\nBody.call(Response.prototype)\n\nResponse.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n}\n\nResponse.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n}\n\nvar redirectStatuses = [301, 302, 303, 307, 308]\n\nResponse.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n}\n\nexport var DOMException = global.DOMException\ntry {\n new DOMException()\n} catch (err) {\n DOMException = function(message, name) {\n this.message = message\n this.name = name\n var error = Error(message)\n this.stack = error.stack\n }\n DOMException.prototype = Object.create(Error.prototype)\n DOMException.prototype.constructor = DOMException\n}\n\nexport function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n\n if (request.signal && request.signal.aborted) {\n return reject(new DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest()\n\n function abortXhr() {\n xhr.abort()\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n setTimeout(function() {\n resolve(new Response(body, options))\n }, 0)\n }\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'))\n }, 0)\n }\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'))\n }, 0)\n }\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new DOMException('Aborted', 'AbortError'))\n }, 0)\n }\n\n function fixUrl(url) {\n try {\n return url === '' && global.location.href ? global.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob'\n } else if (\n support.arrayBuffer &&\n request.headers.get('Content-Type') &&\n request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1\n ) {\n xhr.responseType = 'arraybuffer'\n }\n }\n\n if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers)) {\n Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n xhr.setRequestHeader(name, normalizeValue(init.headers[name]))\n })\n } else {\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n }\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr)\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr)\n }\n }\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n}\n\nfetch.polyfill = true\n\nif (!global.fetch) {\n global.fetch = fetch\n global.Headers = Headers\n global.Request = Request\n global.Response = Response\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\n__webpack_require__(7147);\nreturn __webpack_require__(4146);\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};"],"sourceRoot":""}