{"version":3,"sources":["webpack://SVP/webpack/bootstrap","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/babel-runtime/helpers/defineProperty.js","webpack://SVP/./player/playback/config/status-codes.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/babel-runtime/regenerator/index.js","webpack://SVP/./player/config/production.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/babel-runtime/core-js/promise.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/babel-runtime/helpers/asyncToGenerator.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/babel-runtime/core-js/object/assign.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_core.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/babel-runtime/helpers/classCallCheck.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_export.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_global.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_wks.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/babel-runtime/core-js/object/keys.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/babel-runtime/helpers/createClass.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_is-object.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/babel-runtime/helpers/typeof.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_object-dp.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/babel-runtime/helpers/toConsumableArray.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_an-object.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_descriptors.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_ctx.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_hide.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/babel-runtime/core-js/object/get-prototype-of.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/babel-runtime/helpers/possibleConstructorReturn.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/babel-runtime/helpers/inherits.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_fails.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_has.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_iterators.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_to-iobject.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_to-object.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/es6.string.iterator.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/babel-runtime/helpers/slicedToArray.js","webpack://SVP/./utils/script-loader.js","webpack://SVP/./player/config/translations.js","webpack://SVP/./player/config.js","webpack://SVP/./player/config/jw-keys.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/web.dom.iterable.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_cof.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_library.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_a-function.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_property-desc.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_object-keys.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_set-to-string-tag.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_for-of.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_object-create.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_to-length.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_uid.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_classof.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_meta.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_object-pie.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/babel-runtime/core-js/json/stringify.js","webpack://SVP/./icons/play.svg","webpack://SVP/./icons/pause.svg","webpack://SVP/./icons/audio.svg","webpack://SVP/./icons/audio-muted.svg","webpack://SVP/./icons/chevron-right.svg","webpack://SVP/./icons/close.svg","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_iobject.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_defined.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_iter-define.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_dom-create.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_to-primitive.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_to-integer.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_shared-key.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_shared.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_enum-bug-keys.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/core.get-iterator-method.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_an-instance.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_new-promise-capability.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_redefine-all.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_object-sap.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_wks-ext.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_wks-define.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_object-gops.js","webpack://SVP/./icons/captions.svg","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_iter-step.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_ie8-dom-define.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_redefine.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_object-keys-internal.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_html.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_object-gpo.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_iter-call.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_is-array-iter.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_species-constructor.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_task.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_perform.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_promise-resolve.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_set-species.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_iter-detect.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/babel-runtime/core-js/object/define-property.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_is-array.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_object-gopn.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_object-gopd.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_validate-collection.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/babel-runtime/core-js/object/freeze.js","webpack://SVP/./player/playback/ads/homad-lib.js","webpack://SVP/./icons/audio-half.svg","webpack://SVP/./icons/fullscreen-off.svg","webpack://SVP/./icons/fullscreen-on.svg","webpack://SVP/./icons/settings.svg","webpack://SVP/./icons/share.svg","webpack://SVP/./icons/av-button.svg","webpack://SVP/./icons/defs.svg","webpack://SVP/./player/plugins/pause.html","webpack://SVP/./player/plugins/countdown.html","webpack://SVP/./player/plugins/recommended/recommended.html","webpack://SVP/./player/plugins/recommended/next-asset.html","webpack://SVP/./player/plugins/recommended/grid.html","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/babel-runtime/core-js/map.js","webpack://SVP/./icons/error.svg","webpack://SVP/./svp-player.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/babel-runtime/core-js/is-iterable.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/fn/is-iterable.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/es6.array.iterator.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_add-to-unscopables.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_iter-create.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_object-dps.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_array-includes.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_to-absolute-index.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_string-at.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/core.is-iterable.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/babel-runtime/core-js/get-iterator.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/fn/get-iterator.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/core.get-iterator.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/fn/promise.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/es6.promise.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_invoke.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_microtask.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_user-agent.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/es7.promise.finally.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/es7.promise.try.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/regenerator-runtime/runtime-module.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/regenerator-runtime/runtime.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/fn/object/define-property.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/es6.object.define-property.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/babel-runtime/core-js/array/from.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/fn/array/from.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/es6.array.from.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_create-property.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/fn/object/keys.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/es6.object.keys.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/babel-runtime/core-js/symbol/iterator.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/fn/symbol/iterator.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/babel-runtime/core-js/symbol.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/fn/symbol/index.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/es6.symbol.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_enum-keys.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_object-gopn-ext.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/es7.symbol.async-iterator.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/es7.symbol.observable.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/fn/object/assign.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/es6.object.assign.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_object-assign.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/fn/json/stringify.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/fn/object/freeze.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/es6.object.freeze.js","webpack://SVP/./icons/playlist.svg","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/fn/object/get-prototype-of.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/es6.object.get-prototype-of.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/babel-runtime/core-js/object/set-prototype-of.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/fn/object/set-prototype-of.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/es6.object.set-prototype-of.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_set-proto.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/babel-runtime/core-js/object/create.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/fn/object/create.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/es6.object.create.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/fn/map.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/es6.map.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_collection-strong.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_collection.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_array-methods.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_array-species-create.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_array-species-constructor.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/es7.map.to-json.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_collection-to-json.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_array-from-iterable.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/es7.map.of.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_set-collection-of.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/es7.map.from.js","webpack://SVP//home/artmicha/svp/cap4svp/20181123101817/node_modules/core-js/library/modules/_set-collection-from.js","webpack://SVP/./utils/underscore.js","webpack://SVP/./utils/backbone.events.js","webpack://SVP/./utils/device.js","webpack://SVP/./utils/merge.js","webpack://SVP/./utils/utils.js","webpack://SVP/./utils/logger.js","webpack://SVP/./utils/server-time.js","webpack://SVP/./utils/model.js","webpack://SVP/./player/model/category.js","webpack://SVP/./player/model/asset.js","webpack://SVP/./utils/image.js","webpack://SVP/./player/model/stream.js","webpack://SVP/./player/services/api.js","webpack://SVP/./player/services/api/series.js","webpack://SVP/./player/services/api/related.js","webpack://SVP/./player/services/api/asset.js","webpack://SVP/./player/model/excluded-assets.js","webpack://SVP/./player/model/recommended/related.js","webpack://SVP/./player/model/next-asset.js","webpack://SVP/./player/model/locale.js","webpack://SVP/./player/model/domain.js","webpack://SVP/./player/model/token.js","webpack://SVP/./player/playback/ads/appnexus-tag-builder.js","webpack://SVP/./player/playback/ads/appnexus-jw-config.js","webpack://SVP/./player/playback/ads/appnexus.js","webpack://SVP/./player/playback/config/playlist.js","webpack://SVP/./player/playback/config/playback.js","webpack://SVP/./player/playback/youbora.js","webpack://SVP/./player/playback/config.js","webpack://SVP/./player/playback/config/sharing.js","webpack://SVP/./player/playback/config/captions.js","webpack://SVP/./player/playback/config/jw-youbora.js","webpack://SVP/./player/playback/config/keys.js","webpack://SVP/./player/playback/viewport.js","webpack://SVP/./player/playback/ads/homad.js","webpack://SVP/./player/playback/ads/homad-jw.js","webpack://SVP/./player/playback/config/autoplay.js","webpack://SVP/./player/playback/ads/prevent-seeking.js","webpack://SVP/./player/playback/skin/icons-loader.js","webpack://SVP/./player/playback/skin/settings-menu.js","webpack://SVP/./player/playback/skin.js","webpack://SVP/./player/playback/provider.js","webpack://SVP/./player/playback/ads/appnexus-ad-asset.js","webpack://SVP/./player/plugins/model.js","webpack://SVP/./player/plugins.js","webpack://SVP/./player/playback/ads/appnexus-ast.js","webpack://SVP/./player/plugins/pause.js","webpack://SVP/./player/plugins/age-limit.js","webpack://SVP/./player/plugins/countdown.js","webpack://SVP/./player/model/recommended/list.js","webpack://SVP/./player/model/recommended.js","webpack://SVP/./player/plugins/recommended.js","webpack://SVP/./player/plugins/svp-stats/tracker.js","webpack://SVP/./player/plugins/svp-stats.js","webpack://SVP/./player/plugins/pulse-stats/tracker.js","webpack://SVP/./utils/eventable.js","webpack://SVP/./player/plugins/pulse-stats/ad-events.js","webpack://SVP/./player/plugins/pulse-stats/session.js","webpack://SVP/./player/plugins/pulse-stats/playback-events.js","webpack://SVP/./player/plugins/pulse-stats/ui-events.js","webpack://SVP/./player/model/category-tree.js","webpack://SVP/./player/plugins/pulse-stats.js","webpack://SVP/./utils/string.js","webpack://SVP/./player/player.js","webpack://SVP/./utils/adblock-detect.js","webpack://SVP/./index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","_defineProperty2","obj","default","_interopRequireDefault","configurable","writable","ACTIVE","ACTIVE_PREVIEW","NOT_ACTIVE","NOT_ACTIVE_GEOBLOCKED","NOT_FOUND","NOT_ACTIVE_PAST","GENERAL_ERROR","NETWORK_ERROR","TOKEN_FETCH_ERROR","statusMessages","babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default","_statusMessages","__webpack_exports__","errorCode","_config__WEBPACK_IMPORTED_MODULE_0__","config","env","_promise2","fn","gen","apply","this","arguments","resolve","reject","step","arg","info","error","done","then","err","core","version","__e","instance","Constructor","TypeError","global","ctx","hide","has","$export","type","source","own","out","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","P","IS_BIND","B","IS_WRAP","W","expProto","target","undefined","C","a","b","length","Function","virtual","R","U","window","Math","self","__g","store","uid","USE_SYMBOL","defineProperties","props","descriptor","protoProps","staticProps","it","_iterator2","_symbol2","_typeof","constructor","anObject","IE8_DOM_DEFINE","toPrimitive","dP","f","O","Attributes","e","_from2","arr","Array","isArray","arr2","isObject","aFunction","that","createDesc","_typeof3","ReferenceError","_setPrototypeOf2","_create2","subClass","superClass","__proto__","exec","IObject","defined","$at","String","iterated","_t","_i","point","index","_isIterable3","_getIterator3","_arr","_n","_d","_e","_s","next","push","sliceIterator","path","babel_runtime_core_js_promise__WEBPACK_IMPORTED_MODULE_0___default","onSuccess","onError","script","document","createElement","callback","src","async","onreadystatechange","onload","readyState","onerror","body","appendChild","loadScript","translations","en","Video will start at","Video will start in","ageLimit-0","months","defineProperty_default","_en","codeToString","STATUS_CODES","admessage","cuetext","skipmessage","skiptext","podmessage","no","_no","player","play","playback","pause","volume","prev","cast","airplay","fullscreen","playlist","hd","cc","audioTracks","playbackRates","replay","buffer","more","liveBroadcast","loadingAd","rewind","nextUp","nextUpClose","related","close","settings","unmute","copied","se","_se","__BUILD_VERSION__","keys","100sport","ab","adressa","altaposten","ap","bt","brandstudio","folkebladet","fvn","harstad","itromso","podcast","rbnett","riks","ridenews","sa","schibsted","smp","svd","tronderavisa","vgtv","vgtvs","api","url","tokenUrl","thumbnailsUrl","vendor","identifier","getUrl","endpoint","joiner","indexOf","cb","random","ads","homad","client","appnexus","vmap","ast","debug","cdn","svp","pollyfils","youbora","time","images","servers","sizes","poster","autoHeight","autoWidth","skins","about","link","text","sharing","sites","code","domains","blacklist","whitelist","preview","locale","Iterators","TO_STRING_TAG","DOMIterables","split","NAME","Collection","proto","toString","slice","bitmap","$keys","enumBugKeys","def","TAG","tag","stat","isArrayIter","toLength","getIterFn","BREAK","RETURN","iterable","entries","ITERATOR","iterator","result","iterFn","dPs","IE_PROTO","Empty","createDict","iframeDocument","iframe","style","display","contentWindow","open","write","lt","Properties","toInteger","min","id","px","concat","cof","ARG","T","tryGet","callee","META","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","w","meta","KEY","NEED","fastKey","getWeak","onFreeze","propertyIsEnumerable","LIBRARY","redefine","$iterCreate","setToStringTag","getPrototypeOf","BUGGY","returnThis","Base","DEFAULT","IS_SET","FORCED","methods","IteratorPrototype","getMethod","kind","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","values","is","val","valueOf","ceil","floor","isNaN","shared","copyright","classof","getIteratorMethod","forbiddenField","promise","$$resolve","$$reject","safe","fails","exp","wksExt","$Symbol","charAt","getOwnPropertySymbols","toIObject","arrayIndexOf","names","documentElement","toObject","ObjectProto","ret","ArrayProto","SPECIES","D","defer","channel","port","invoke","html","cel","process","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","Dispatch","counter","queue","run","listener","event","data","args","nextTick","now","port2","port1","onmessage","postMessage","addEventListener","importScripts","removeChild","setTimeout","set","clear","v","newPromiseCapability","x","promiseCapability","DESCRIPTORS","SAFE_CLOSING","riter","from","skipClosing","iter","hiddenKeys","getOwnPropertyNames","pIE","gOPD","getOwnPropertyDescriptor","TYPE","isLoaded","exportz","conf","k","u","g","round","fromCharCode","A","h","q","charCodeAt","toLowerCase","j","fireEvent","createEvent","state","initCustomEvent","dispatchEvent","track","M","isEnabled","encodeURIComponent","homad_url_prefix_alias","homad_track_key","homad_track_value","message","V","J","I","K","H","L","N","X","z","abs","Date","navigator","appCodeName","appName","appVersion","userAgent","platform","language","parseInt","reverse","match","y","startPlayer","eval","fp_error","hd_ready","head","firstChild","insertBefore","setInterval","clearTimeout","getElementsByTagName","parentNode","getElementsByClassName","top","hasChildNodes","lastChild","homad_url_suffix_base64","homad_url_suffix","homad_hash_guessed","enabled","server","replace","getTime","XMLHttpRequest","status","JSON","parse","responseText","substr","setRequestHeader","send","location","hostname","onFailure","globalConfig","clientConfig","clearInterval","loadSvpLibrary","_ref","babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default","babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default","mark","_callee","wrap","_context","abrupt","Promise","SVP","initialize","stop","loadJwPlayer","_ref2","_callee2","root","PLAYER_LIB","_context2","define","amd","babel_runtime_core_js_promise__WEBPACK_IMPORTED_MODULE_1___default","require","jwplayer","scriptLoader","_x","_ref3","_callee3","onReady","_context3","onSvpPlayerReady","library","_library","babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default","_x2","addToUnscopables","_k","Arguments","getKeys","toAbsoluteIndex","IS_INCLUDES","$this","el","fromIndex","max","TO_STRING","pos","isIterable","getIterator","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","anInstance","forOf","speciesConstructor","task","microtask","newPromiseCapabilityModule","perform","promiseResolve","versions","v8","$Promise","isNode","empty","USE_NATIVE","FakePromise","PromiseRejectionEvent","isThenable","notify","isReject","chain","_c","_v","ok","reaction","exited","handler","fail","domain","_h","onHandleUnhandled","enter","exit","onUnhandled","console","unhandled","isUnhandled","emit","onunhandledrejection","reason","_a","onrejectionhandled","$reject","_w","$resolve","wrapper","executor","onFulfilled","onRejected","catch","capability","all","remaining","$index","alreadyCalled","race","un","macrotask","Observer","MutationObserver","WebKitMutationObserver","last","flush","parent","standalone","toggle","node","createTextNode","observe","characterData","finally","onFinally","isFunction","try","callbackfn","hadRuntime","regeneratorRuntime","oldRuntime","Op","hasOwn","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","inModule","runtime","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","getProto","NativeIteratorPrototype","Gp","GeneratorFunctionPrototype","Generator","GeneratorFunction","displayName","isGeneratorFunction","genFun","ctor","setPrototypeOf","awrap","__await","defineIteratorMethods","AsyncIterator","innerFn","outerFn","tryLocsList","pop","Context","reset","skipTempReset","sent","_sent","delegate","method","tryEntries","forEach","resetTryEntry","rootRecord","completion","rval","dispatchException","exception","context","handle","loc","caught","record","entry","tryLoc","hasCatch","hasFinally","catchLoc","finallyLoc","Error","finallyEntry","complete","afterLoc","finish","thrown","delegateYield","resultName","nextLoc","protoGenerator","generator","_invoke","doneResult","delegateResult","maybeInvokeDelegate","tryCatch","makeInvokeMethod","previousPromise","callInvokeWithMethodAndArg","unwrapped","return","pushTryEntry","locs","iteratorMethod","$Object","desc","createProperty","arrayLike","aLen","mapfn","mapping","$defineProperty","$fails","wks","wksDefine","enumKeys","_create","gOPNExt","$GOPD","$DP","gOPN","$JSON","_stringify","stringify","HIDDEN","TO_PRIMITIVE","isEnum","SymbolRegistry","AllSymbols","OPSymbols","QObject","setter","findChild","setSymbolDesc","protoDesc","sym","isSymbol","$defineProperties","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","$set","es6Symbols","wellKnownSymbols","for","keyFor","useSetter","useSimple","replacer","$replacer","gOPS","getSymbols","symbols","windowNames","getWindowNames","assign","$assign","join","freeze","$freeze","$getPrototypeOf","check","test","buggy","Map","strong","validate","getEntry","redefineAll","$iterDefine","setSpecies","SIZE","_f","getConstructor","IS_MAP","ADDER","_l","delete","setStrong","each","common","IS_WEAK","IS_ADDER","size","asc","$create","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","res","original","toJSON","COLLECTION","of","mapFn","nextItem","idCounter","_","MAX_ARRAY_INDEX","pow","getLength","isEmpty","collection","isArrayLike","isString","isArguments","uniqueId","prefix","Events","eventSplitter","eventsApi","iteratee","events","opts","typeof_default","on","internalOn","listening","_events","onApi","_listeners","listenTo","_listenId","listeningTo","_listeningTo","thisId","objId","count","options","handlers","off","offApi","listeners","stopListening","ids","_callback","once","onceMap","listenToOnce","map","offer","trigger","triggerApi","objEvents","allEvents","triggerEvents","ev","a1","a2","a3","unbind","userAgentMatch","regex","lazyUserAgentMatch","isFF","isIETrident","isIPad","isEdge","isAndroid","device","isIOS","isAppleIOS","isIPhone","isSafari","isAndroidNative","isChrome","isFirefox","isIE","isDesktop","isMobile","isTablet","isSamsungInternet","isWindowsPhone","getChromeVersion","raw","getPixelRatio","devicePixelRatio","getFlashVersion","flash","plugins","description","parseFloat","ActiveXObject","GetVariable","getDeviceType","canAutoplay","isMergeableObject","cloneIfNecessary","optionsArgument","clone","deepmerge","emptyTarget","defaultArrayMerge","destination","array","arrayMerge","keys_default","mergeObject","reduce","jwUtils","utils","jwUnderscore","extend","merge","ajax","isUndefined","isNumber","omit","memoize","createNode","addStyleSheet","addClass","removeClass","throttle","template","cache","tmpl","str","getElementById","innerHTML","shareTimeToSeconds","hours","minutes","seconds","compact","hasFlash","number","zeroPad","escape","escapeMap","&","<",">","\"","'","`","string","getTimeFormatted","timestamp","inherit","model","child","Surrogate","__super__","scriptloader","getScrollSnapPrefix","scrollSnapSupport","promise_default","jsonToUrl","startsWith","searchString","position","log","block","localStorage","getItem","logger","unshift","ServerTime","_time","_responseTime","fetch","resolveRequest","SimpleModel","attr","attributes","oldVal","Category","additional","background","main","image","logo","playerLogo","playerLogoImage","relatedExperiments","metadata","getRelatedExperiments","isSeries","getLastAsset","Model","handleErrors","response","Asset","getVendor","unifyTimestamp","startIndexPoint","ageLimit","sourceFiles","series","season","seasonNumber","episode","episodeNumber","flightTimes","start","end","created","published","updated","category","chapters","chapter","timeline","nextAsset","tags","_embedded","_fetch","_this","json","assign_default","destroy","getAgeLimit","getNextAssetId","getNextAssetSource","getChapter","chapterIndex","getChapters","getThumbnail","getTitle","getCategory","requestNumber","currentServerId","getServer","getImageTransform","serversAmount","imageId","width","height","pixelRatio","cacheKey","transform","maxDimension","idLen","transformType","transformSizes","dimensions","getImageQuality","normalizeTransformSize","curr","getClosestSize","getImageSrc","extension","Stream","title","streams","hls","streamUrls","hds","mp4","streamType","mediaType","assetType","streamConfiguration","snapshots","captions","begin","externalId","duration","is360","pseudostreaming","audioStream","audio","showAds","cuePoints","getId","hasProperty","properties","getDuration","getCuePoints","isSecure","isGeoblocked","isLive","wasLive","isActive","isPast","isFuture","hasHds","hasPlayableSource","getTimeToStart","isOnHttp","protocol","streamUrl","getPoster","getPosterSrc","containerWidth","getSnapshots","hasSnapshots","getCaptions","hasMp4Streams","hasAudioOnlyStream","getMp4Streams","stream","streamData","bitrate","getPlaybackTime","hasCreatives","getExternalId","getDisplayType","hasAdsDisabled","getEndpoint","categoryId","getNextFromEpisodeList","assetId","assets","findIndex","item","getNextEpisode","asyncToGenerator_default","regenerator_default","limit","engine","getList","_ref2$limit","_ref2$engine","getAssetEndpoint","getListEndpoint","_ref$params","params","_ref$filters","filters","queryParams","api_asset","getById","getByIds","_ref4","_ref5","getClosestAsset","_ref6","_ref7","_response$_embedded$a","order","publishedDate","slicedToArray_default","_x3","getKey","EXCLUDED_ASSETS_KEY","ExcludedAssets","add","getAll","splice","getStorage","setItem","stringify_default","getFromArray","randomIndex","recommended_related","excludedAssets","useMlEngine","experimentsList","experimentVariant","createResponse","hasPlayNext","asset","includeCategory","hasNextInCategory","fetchNextFromSeries","seriesService","fetchNextFromCategory","_this2","assetService","fetchNextById","_this3","_ref4$source","fetchNextFromRelatedEngine","_this4","_ref5$source","_callee4","_context4","relatedService","relatedHelpers","getNext","_this5","_callee5","nextAssetId","fetchNextParams","_context5","t0","fetchNext","_this6","_callee6","_context6","Locale","translate","substitute","getMonthName","date","getMonth","isDomainInArray","origin","domainBeginning","len","Domain","na","vendors","getPermissions","isBlacklisted","fetchToken","isFetching","expire","Token","maxBitrate","classCallCheck_default","request","configuration","isValid","query","expiry","appnexus_tag_builder","getVmapTag","queryObject","getAstConfig","tagOptions","globalOptions","getDefaultParams","countryCode","getCountryCode","supplyType","publisherName","slotIds","preroll","midroll","postroll","JwAdsConfig","setParams","adSlotConfig","offset","adLabel","appnexusTag","getConfig","getParams","memberId","member","getJwAdSchedule","adSlots","adConfig","adsConfig","hasNext","cuePoint","getAdsConfig","schedule","getAdPlacements","adPlacements","globalParams","placements","placementId","appnexusTagBuilder","parseAdPlacements","getClientConfig","adn","adSchedule","adOptions","getLiveMidrollTag","maxDuration","vmaxduration","getPlaylist","hlsUrl","addPlaylistMetadata","playlistItem","mediaId","startTime","mediaid","starttime","addProgressiveMediaSources","mp4Stream","sources","label","file","addSnapshots","tracks","addCaptions","caption","add3dSupport","stereomode","advertising","autoplayMuted","autoplayadsmuted","vpaidcontrols","adschedule","addAppnexusAds","canAutostart","autoplay","withCredentials","preload","autostart","mute","skin","slot","hasPreroll","load","Plugin","setAdapter","adapters","JWPlayer","Config","token","jwDefaults","primary","hlshtml","flashplayer","wmode","setLocale","getMaxBitrate","setStream","container","clientWidth","clientHeight","getToken","hasValidToken","getStreamUrl","isStreamPlayable","getSettings","getJwConfig","abouttext","aboutlink","localization","addPlaylist","getPlaylistSettings","heading","sharingDefaults","addSharing","jwConfig","native","renderCaptionsNatively","setCaptions","setPlaybackOptions","media","resource","content_id","content_metadata","owner","addYoubora","setKey","jw","hasRecommended","getRecommended","rawOptions","permissions","freeze_default","Viewport","current","labels","update","newIndex","compare","comp","binarySearch","newBreakpoint","getViewportByIndex","currentBreakpoint","getTagUrl","potOffset","getAdPotTag","__svp__locale","skipable","skipAdOnContextChange","runInsideContainer","adjustAdVolumeToContentPlayer","postrollUseCompleteEvent","muteButton","audioIcon","unmuteButton","audioMuted","playButton","playIcon","pauseButton","pauseIcon","skipableButton","skipButton","innerWarpper.style","prerollAdTag","midrollAdTag","postrollAdTag","SvpPlayer","Player","isHomadLoaded","defaults","aabConfig","details","detail","containerId","getEvents","playerId","removeEvents","getAdBlock","aab","HomadAds","getContainer","classList","remove","adPosition","adPlaying","currentTime","adId","impression","impressionURL","eventName","adPlayerLoading","pauseReason","getCurrentTime","adposition","mutations","mutation","nodes","addedNodes","video","querySelector","childList","getAdPlayer","adPlayer","adPlayerContainer","initializeAdPlayer","canDeviceAutoplay","svpPlayer","supposedCurrentTime","onSeeking","onTimeUpdate","seeking","init","videoElement","removeEventListener","getVideo","iconsMap",".jw-svg-icon-play",".jw-svg-icon-pause",".jw-skip-icon .jw-svg-icon-next","chevronRight",".jw-svg-icon-settings",".jw-svg-icon-sharing","share",".jw-svg-icon-cc-on",".jw-svg-icon-cc-off",".jw-svg-icon-volume-0",".jw-svg-icon-volume-50","audioHalf",".jw-svg-icon-volume-100",".jw-svg-icon-fullscreen-on","fullscreenOn",".jw-svg-icon-fullscreen-off","fullscreenOff","avButton","defsLoaded","icons_loader","customIcon","selector","icons","querySelectorAll","icon","svpIcon","setAttribute","getAttribute","replaceChild","loadIcons","settings_menu","contains","submenu","right","offsetWidth","offsetLeft","submenuHandler","playback_skin","defs","loadDefs","settingsMenu","PlayerModel","isInitalized","viewport","onViewportChange","forwardEvent","getAdPosition","slotId","pre","mid","post","setup","svpSkin","preventAdSeeking","accountCode","enableAnalytics","onPlaylistItemLoad","onPlay","onPause","onComplete","eventData","onTime","onPlayerResize","onMeta","getCaptionsList","sequence","xml","adSelector","adData","URL","podcount","parseAdData","playNext","togglePlayback","streamPoster","playbackType","getVolume","setVolume","seek","getState","getStream","isAdPlaying","loadStream","force","getPosition","getProvider","provider","playerCaptions","setCurrentCaptions","captionsIndex","_this7","playbackEndTime","onFirstFrameLoad","levels","playbackEnd","playlistItemId","_this8","currentViewport","previousViewport","_this9","TXXX","slotDuration","adTag","playAd","skipAd","playReason","forwardedMethods","warn","HomadAdsJw","proxyMethod","sourceMethod","VIDEO","Blob","Uint8Array","PluginModel","getName","setPlayer","Plugins","pluginsRepo","PluginsLoader","scripts","queueLen","plugin","pluginSrc","getPluginSrc","onResponse","register","apntag","firstLoad","defineTag","tagId","tagConfig","targetId","loadTags","onEvent","showTag","refreshTag","refresh","resizeTag","dimmensions","resizeAd","offEvent","PausePlugin","maxDisplays","displayCounter","withAdTag","adPlacement","withCounter","getBoundingClientRect","appnexusAdId","creativeId","isAdTagLoaded","show","timerId","onSeek","onResumeClick","render","adTagOptions","appnexusAdContainerId","pauseTemplate","closeIcon","closeButton","stopPropagation","AgeLimitPlugin","CountdownPlugin","liveDOM","countdownDOM","timer","countdownTemplate","intervalId","getDateData","repaint","liveDate","isCountdownActive","leadingZeros","sec","currentState","getDate","getHours","getMinutes","numValue","numLen","num","endDate","diff","dateData","years","days","mapResponse","getEngine","list","fetchByIds","fetchFromRelatedEngine","Recommended","ml","items","recommendedList","RecommendedPlugin","countdownTime","countdown","grid","gridItemsReady","nextAssetSource","getThumbnailUrl","onInitialize","fetchDuration","recommended","getAsset","getItems","getNextAsset","onPlaybackComplete","scrollSnapPrefix","gridItem","getByClass","onTimeNextVisible","onPlayNextVisible","timeout","transitionDuration","onNextAssetReady","Image","nextAssetTemplate","nextIcon","onGridItemsReady","gridTemplate","dataset","onGridVisible","onAssetReplay","className","previousEl","recommendedTemplate","ClickTracker","trackMediaEvent","sendRequest","trackStreamEvent","queryString","apiUrl","getApiUrl","hypen","SvpStatsPlugin","trackingInterval","getTrackingInterval","initialStartTime","playerTime","adSlot","PulseTrackerLoader","providers","pulse","PROVIDER_TRACKER_ID","TRACKER_ID","tracker","Eventable","BackboneEvents","AdEvents","possibleConstructorReturn_default","get_prototype_of_default","beforeUnload","onAdSlotComplete","onAdSlotStart","onAdStarted","onAdProgress","onAdPause","onAdPlay","onPauseAdVisible","slotData","_window","toConsumableArray_default","previousPosition","_window2","_window3","session","PlaybackEvents","watchData","createSession","beforePlaybackStarted","onBeforeUnload","onPlaylistItem","onInitialPlay","onAssetPlay","onLiveTime","onRecommendedPlay","beforeStreamStart","wasViewed","viewable","previousAssetId","eventTime","eventInterval","trackTimeEvent","playbackSource","onRecommendedVisible","CategoryTree","categories","map_default","parentId","instances","PulseStatsPlugin","decorator","embed","categoryPath","categoryTree","getPath","getTracker","getCategoryPath","playerAsset","resolveTracker","PulseTracker","adEvents","playbackEvents","uiEvents","UiEvents","onAdEvent","onPlaybackEvent","onUiEvent","intent","trackingData","@type","@id","muted","toUpperCase","capitalizeFirstLetter","mediaAssetId","slotNumber","accessControl","access","getTags","stories","getStories","originAssetId","createObjectURL","onceConfigReady","isCompleted","isPlayNextAvailable","serverTime","destroyPlugin","clearError","previousErrorNode","Provider","onPlayerEvent","SvpPlugins","addPlugin","setAsset","onAssetReady","NextAsset","pulseConfig","statusCode","onAssetError","translatedMessage","errorDetails","errorIcon","posterSrc","errorNode","callFunction","getCurrentQuartile","getCurrentCaptions","setCaptionsStyles","styles","getPlugin","hasAdblock","detected","bait","offsetParent","offsetHeight","offsetTop","getComputedStyle","baitTemp","getPropertyValue","index_initialize","__defaults","svpYoubora","loadYoubora"],"mappings":"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,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG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","file":"player.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"//cdn.svp.schibsted.io/player/3.4.0/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 109);\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (obj, key, value) {\n if (key in obj) {\n (0, _defineProperty2.default)(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};","export const ACTIVE = 12000;\nexport const ACTIVE_PREVIEW = 12001;\n\nexport const NOT_ACTIVE = 14001;\nexport const NOT_ACTIVE_GEOBLOCKED = 14002;\nexport const NOT_FOUND = 14003;\nexport const NOT_ACTIVE_PAST = 14004;\n\nexport const GENERAL_ERROR = 15000;\nexport const NETWORK_ERROR = 15101;\nexport const TOKEN_FETCH_ERROR = 15102;\n\nconst statusMessages = {\n [ACTIVE]: 'Stream active',\n [ACTIVE_PREVIEW]: 'Preview mode',\n [NOT_ACTIVE]: 'Stream is not active',\n [NOT_ACTIVE_GEOBLOCKED]: 'Stream failed to play due to geoblock restrictions',\n [NOT_FOUND]: 'Stream not found',\n [NOT_ACTIVE_PAST]: 'Stream has been unpublished',\n [GENERAL_ERROR]: 'General error',\n [NETWORK_ERROR]: 'Network error',\n [TOKEN_FETCH_ERROR]: 'Token fetch error'\n};\n\n/**\n * Get localized messages\n */\nexport default (errorCode) => statusMessages[errorCode] || statusMessages[GENERAL_ERROR];","module.exports = require(\"regenerator-runtime\");\n","import config from '../config';\n\nconfig.env = 'production';\nexport default config;\n","module.exports = { \"default\": require(\"core-js/library/fn/promise\"), __esModule: true };","\"use strict\";\n\nexports.__esModule = true;\n\nvar _promise = require(\"../core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (fn) {\n return function () {\n var gen = fn.apply(this, arguments);\n return new _promise2.default(function (resolve, reject) {\n function step(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 return _promise2.default.resolve(value).then(function (value) {\n step(\"next\", value);\n }, function (err) {\n step(\"throw\", err);\n });\n }\n }\n\n return step(\"next\");\n });\n };\n};","module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };","var core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* 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","\"use strict\";\n\nexports.__esModule = true;\n\nvar _from = require(\"../core-js/array/from\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return (0, _from2.default)(arr);\n }\n};","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\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","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/object/get-prototype-of\"), __esModule: true };","\"use strict\";\n\nexports.__esModule = true;\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && ((typeof call === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = require(\"../core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","module.exports = {};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _isIterable2 = require(\"../core-js/is-iterable\");\n\nvar _isIterable3 = _interopRequireDefault(_isIterable2);\n\nvar _getIterator2 = require(\"../core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = (0, _getIterator3.default)(arr), _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\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if ((0, _isIterable3.default)(Object(arr))) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();","function loadScript(path, onSuccess, onError) {\n var script = document.createElement(\"script\"),\n done = false;\n\n const callback = onSuccess || function () {};\n\n script.type = \"text/javascript\";\n script.src = path;\n script.async = true;\n script.onreadystatechange = script.onload = function() {\n if ( !done && (!this.readyState ||\n this.readyState === \"loaded\" || this.readyState === \"complete\") ) {\n done = true;\n callback();\n\n // Handle memory leak in IE\n script.onload = script.onreadystatechange = null;\n }\n };\n\n script.onerror = onError;\n\n document.body.appendChild(script);\n}\n\nexport default (path) => {\n return new Promise((resolve, reject) => loadScript(path, resolve, reject));\n}","/* eslint-disable max-len */\nimport codeToString, * as STATUS_CODES from '../playback/config/status-codes';\n\n// translation configuration for different locales\nconst translations = {\n en: {\n // Countdown plugin\n 'Video will start at': 'Video will start at',\n 'Video will start in': 'Video will start in',\n\n 'ageLimit-0': 'A',\n\n // months is special case for translating month to human readable form\n months: [\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'\n ],\n // general troubles, we don't know exactly what had happen\n [codeToString(STATUS_CODES.GENERAL_ERROR)]: 'Sorry. An error occured. Try again later.',\n // stream is available only in certain areas/countries\n [codeToString(STATUS_CODES.NOT_ACTIVE_GEOBLOCKED)]: 'The video failed to play due to geoblock restrictions.',\n // stream is 404 (wrong/deleted from akamai)\n [codeToString(STATUS_CODES.NOT_FOUND)]: 'Sorry. This video is unavailable.',\n // asset is not active\n [codeToString(STATUS_CODES.NOT_ACTIVE)]: 'Sorry. This video is not active.',\n // asset's flight times are in the past\n [codeToString(STATUS_CODES.NOT_ACTIVE_PAST)]: 'Sorry. This video is unavailable.',\n // network error while playing live stream\n [codeToString(STATUS_CODES.NETWORK_ERROR)]: 'Network issues. Please check your internet connection',\n // token can not be retrieved\n [codeToString(STATUS_CODES.TOKEN_FETCH_ERROR)]: 'Sorry. An error occured. Try again later.',\n\n // sharing box heading\n Sharing: 'Share this video',\n 'Live button': 'Live',\n\n // error message\n 'Error code': 'Error code',\n\n // closed captions\n en_GB: 'English',\n es_ES: 'Español',\n nb_NO: 'Bokmål',\n sv_SE: 'Swedish',\n\n 'Audio video switch': 'Audio video switch',\n 'Playing audio only': 'Playing audio only',\n\n ads: {\n // jw ad messages\n admessage: 'The ad will end in xx seconds',\n cuetext: 'Advertisement',\n skipmessage: 'Skip ad in xx',\n skiptext: 'Skip',\n podmessage: 'Ad __AD_POD_CURRENT__ of __AD_POD_LENGTH__'\n },\n\n adblock: {\n admessage: 'The ad will end in [time]s'\n },\n player: {}\n },\n no: {\n // Countdown plugin\n 'Video will start at': 'Videoen starter',\n 'Video will start in': 'Videoen starter om',\n\n 'ageLimit-0': 'A',\n\n // months is special case for translating month to human readable form\n months: [\n 'Jan', 'Feb', 'Mar', 'Apr', 'Mai', 'Jun',\n 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'\n ],\n // general troubles, we don't know exactly what had happen\n [codeToString(STATUS_CODES.GENERAL_ERROR)]: 'Beklager, en feil oppstod. Prøv å spill av videoen senere',\n // stream is available only in certain areas/countries\n [codeToString(STATUS_CODES.NOT_ACTIVE_GEOBLOCKED)]: 'Denne videoen er kun tilgjengelig i Norge',\n // stream is 404 (wrong/deleted from akamai)\n [codeToString(STATUS_CODES.NOT_FOUND)]: 'Beklager, videoen er ikke tilgjengelig',\n // asset is not active\n [codeToString(STATUS_CODES.NOT_ACTIVE)]: 'Beklager, videoen er ikke tilgjengelig',\n // asset's flight times are in the past\n [codeToString(STATUS_CODES.NOT_ACTIVE_PAST)]: 'Beklager, vi har ikke rettigheter til å vise videoen lenger',\n // network error while playing live stream\n [codeToString(STATUS_CODES.NETWORK_ERROR)]: 'Kunne ikke spille av video, venligst sjekk internettforbindelsen din',\n // token can not be retrieved\n [codeToString(STATUS_CODES.TOKEN_FETCH_ERROR)]: 'Beklager, en feil oppstod. Prøv å spill av videoen senere',\n\n // jw player error messages\n 'This video cannot be played because of a technical error.': 'Kunne ikke spille av video på grunn av en teknisk feil',\n 'Sorry, the video player failed to load.': 'Kunne ikke spille av video, venligst sjekk
internettforbindelsen din',\n 'This video file cannot be played.': 'Kunne ikke spille av video',\n 'The live stream is either down or has ended.': 'Livesendingen er nede eller er avsluttet',\n 'There was a problem providing access to protected content.': 'Kunne ikke spille av video, venligst sjekk
internettforbindelsen din',\n 'This video cannot be played because of a problem with your internet connection.': 'Kunne ikke spille av video, venligst sjekk
internettforbindelsen din',\n\n // sharing box heading\n Sharing: 'Del denne videoen',\n 'Live button': 'Direkte',\n\n // error message\n 'Error code': 'Feilkode',\n\n // closed captions\n en_GB: 'English',\n es_ES: 'Español',\n nb_NO: 'Bokmål',\n sv_SE: 'Svensk',\n\n // av button\n 'Audio video switch': 'Kun lyd',\n 'Playing audio only': 'Spiller kun lyd',\n\n ads: {\n admessage: 'Annonsen slutter om xx',\n cuetext: 'Annonse',\n skipmessage: 'Hopp over om xx',\n skiptext: 'Hopp over',\n podmessage: 'Annonse __AD_POD_CURRENT__ av __AD_POD_LENGTH__'\n },\n\n adblock: {\n admessage: 'Annonsen slutter om [time]'\n },\n player: {\n player: 'Videospiller',\n play: 'Spill',\n playback: 'Start avspilling',\n pause: 'Pause',\n volume: 'Volum',\n prev: 'Forrige',\n next: 'Neste',\n cast: 'Chromecast',\n airplay: 'AirPlay',\n fullscreen: 'Fullskjerm',\n playlist: 'Spilleliste',\n hd: 'Kvalitet',\n cc: 'Undertekster',\n audioTracks: 'Lydspor',\n playbackRates: 'Avspillingshastighet',\n replay: 'Spill igjen',\n buffer: 'Laster inn',\n more: 'Mer',\n liveBroadcast: 'Liveopptak',\n loadingAd: 'Laster annonse',\n rewind: 'Spol tilbake 10 sekunder',\n nextUp: \"Neste' video\",\n nextUpClose: 'Lukk neste',\n related: 'Relaterte videoer',\n close: 'Lukk',\n settings: ' Innstillinger',\n unmute: 'Slå på lyd',\n copied: 'Kopiert'\n }\n },\n\n se: {\n // Countdown plugin\n 'Video will start at': 'Videon är tillgänglig',\n 'Video will start in': 'Videon är tillgänglig om',\n\n 'ageLimit-0': 'A',\n\n // months is special case for translating month to human readable form\n months: [\n 'Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun',\n 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'\n ],\n // general troubles, we don't know exactly what had happen\n [codeToString(STATUS_CODES.GENERAL_ERROR)]: 'Något gick fel. Försök igen senare.',\n // stream is available only in certain areas/countries\n [codeToString(STATUS_CODES.NOT_ACTIVE_GEOBLOCKED)]: 'Vi har tyvärr endast rättigheter att spela detta innehåll i Sverige',\n // stream is 404 (wrong/deleted from akamai)\n [codeToString(STATUS_CODES.NOT_FOUND)]: 'Videon är inte tillgänglig',\n // asset is not active\n [codeToString(STATUS_CODES.NOT_ACTIVE)]: 'Videon är inte tillgänglig',\n // asset's flight times are in the past\n [codeToString(STATUS_CODES.NOT_ACTIVE_PAST)]: 'Videon är inte tillgänglig',\n // network error while playing live stream\n [codeToString(STATUS_CODES.NETWORK_ERROR)]: 'Något gick fel. Kolla gärna din internet koppling och försök lite senare',\n // token can not be retrieved\n [codeToString(STATUS_CODES.TOKEN_FETCH_ERROR)]: 'Token kunde inte hämtas',\n\n // jw player error messages\n 'This video cannot be played because of a technical error.': 'Den här videon kan inte spelas på grund av ett tekniskt fel',\n 'Sorry, the video player failed to load.': 'Något gick fel. Försök igen senare',\n 'This video file cannot be played.': 'Det gick inte att spela videon',\n 'The live stream is either down or has ended.': 'Live överföring är antingen nere eller har slutat',\n 'There was a problem providing access to protected content.': 'Något gick fel. Kolla gärna din internet koppling och försök lite senare',\n 'This video cannot be played because of a problem with your internet connection.': 'Något gick fel. Kolla gärna din internet koppling och försök lite senare',\n\n // sharing box heading\n Sharing: 'Dela',\n 'Live button': 'Live',\n\n // error message\n 'Error code': 'Felkod',\n\n // closed captions\n en_GB: 'English',\n es_ES: 'Español',\n nb_NO: 'Bokmål',\n sv_SE: 'Sverige',\n\n // av button\n 'Audio video switch': 'Endas ljud',\n 'Playing audio only': 'Spelar bara ljud',\n\n ads: {\n admessage: 'Annonsen tar slut om xx sekunder',\n cuetext: 'Annons',\n skipmessage: 'Skippa annons om xx',\n skiptext: 'Skippa',\n podmessage: 'Annons __AD_POD_CURRENT__ av __AD_POD_LENGTH__'\n },\n\n adblock: {\n admessage: 'Annonsen tar slut om [time] sekunder'\n },\n\n player: {\n player: 'Videospelare',\n play: 'Spela',\n playback: 'Spela video',\n pause: 'Pausa',\n volume: 'Volym',\n prev: 'Förra',\n next: 'Nästa',\n cast: 'Chromecast',\n airplay: 'AirPlay',\n fullscreen: 'Fullskärm',\n playlist: 'Spellista',\n hd: 'Kvalitet',\n cc: 'Undertexter',\n audioTracks: 'Ljudspår',\n playbackRates: 'Uppspelningshastighet',\n replay: 'Spela igen',\n buffer: 'Laddar',\n more: 'Mer',\n liveBroadcast: 'Live',\n loadingAd: 'Laddar annons',\n rewind: 'Spola tillbaka 10 sekunder',\n nextUp: 'Nästa',\n nextUpClose: 'Stäng',\n related: 'Fler videos',\n close: 'Stäng',\n settings: 'Inställningar',\n unmute: 'Slå på ljud',\n copied: 'Kopierad'\n }\n }\n};\n\n/**\n * Get single locale translations hash map\n */\nexport default function (locale) {\n return translations[locale];\n}\n","/* global __BUILD_VERSION__ */\nimport translations from './config/translations';\nimport jwKeys from './config/jw-keys';\n\nconst VERSION = __BUILD_VERSION__;\n\nconst config = {\n version: VERSION,\n player: {\n keys: jwKeys\n },\n /**\n * SVP API configuration\n */\n api: {\n url: '//svp.vg.no/svp/api/v1/',\n tokenUrl: '//svp.vg.no/svp/token/v1/',\n thumbnailsUrl: '//svp.vg.no/svp/thumbnails/v1/',\n\n vendor: null,\n /**\n * API identifier\n */\n identifier: 'svp-player',\n\n /**\n * Get full endpoint url to requested resource\n *\n * @param vendor\n * @param endpoint\n * @returns {string}\n */\n getUrl: function (vendor, endpoint) {\n const joiner = (endpoint.indexOf('?') > -1) ? '&' : '?';\n let url = `${this.url + vendor + endpoint + joiner}appName=${this.identifier}`;\n\n // enable cachebreaking in preview mode\n if (this.cb === true) {\n url += `&cb=${Math.random() * 10000}`;\n }\n\n return url;\n }\n },\n\n ads: {\n homad: {\n global: 'https://s3.amazonaws.com/homad-global-configs.schneevonmorgen.com/global_config.json',\n client: '/homad-config.json'\n },\n\n appnexus: {\n vmap: 'https://ib.adnxs.com/vmap',\n ast: 'https://acdn.adnxs.com/ast/ast.js',\n debug: false\n }\n },\n\n cdn: {\n svp: `//cdn.svp.schibsted.io/player/${VERSION}`,\n player: '//cdn.svp.schibsted.io/jw/jwplayer-8.5.6',\n pollyfils: '//svp.vgc.no/pollyfils/es6-promise.min.js',\n youbora: 'https://smartplugin.youbora.com/v6/js/adapters/jwplayer/6.4.2/sp.min.js'\n },\n\n time: '//svp.vg.no/svp/api/v1/time',\n\n /**\n * Imbo images server\n */\n images: {\n servers: ['imbo', 'imbo01', 'imbo02', 'imbo03'],\n\n sizes: {\n poster: {\n autoHeight: [\n 380, 480, 580, 680, 780, 800, 980, 1080, 1440, 2048\n ],\n autoWidth: [\n 452, 613, 740, 900, 1080, 1440\n ]\n }\n\n }\n },\n\n /**\n * Default skins for providers\n */\n skins: {\n default: {\n url: `//cdn.svp.schibsted.io/player/${VERSION}/css/player.css`,\n name: 'svp-default jw-skin-seven'\n }\n },\n\n about: {\n vgtv: {\n link: 'http://www.vgtv.no/',\n text: 'VGTV'\n }\n },\n\n sharing: {\n global: {\n sites: ['facebook', 'twitter']\n },\n\n vgtv: {\n link: 'http://www.vgtv.no/#!/MEDIAID',\n // eslint-disable-next-line max-len\n code: ``\n }\n },\n\n domains: {\n blacklist: {\n global: [],\n ab: ['*avpixlat.info', '*exponerat.net']\n },\n\n whitelist: {\n global: [\n '*localhost', '*schibsted.io', '*schibsted.media', '*schibsted.ws', '*schibsted.se', '*smp.no',\n '*plan3dev.se', '*plan3.se',\n '*vg.no', '*vgtv.no', '*vgnett.no',\n '*aftonbladet.se',\n '*aftenposten.no', '*ap.no',\n '*sa.no', '*aftenbladet.no',\n\n '*adresseavisen.no',\n '*polarismedia.no',\n '*adressa.no',\n '*bt.no',\n '*fvn.no',\n\n '*htmlinstant.com',\n '*ht.no',\n '*rbnett.no',\n '*itromso.no',\n '*folkebladet.no',\n '*framtidinord.no',\n '*osloby.no',\n '*av-avis.no',\n '*medianorge.no',\n '*herokuapp.com',\n '*bergenstidende.no',\n '*bonansa.no',\n '*sysla.no',\n '*bygdanytt.no',\n '*vestnytt.no',\n '*strilen.no',\n '*snd.no', '*fedrelandsvennen.no', '*lister24.no', '*l-a.no', '*lindesnesfyr.no',\n\n // Polaris related newspapers\n // addressa.no\n '*adressa.no', '*avisa-st.no', '*banett.no', '*fosna-folket.no', '*hitra-froya.no', '*innherred.no',\n '*mb.no', '*bladet.no', '*opdalingen.no', '*tronderbladet.no',\n // rbnett\n '*rbnett.no', '*andalsnes-avis.no', '*driva.no',\n // smp newspaper\n '*smp.no', '*dolen.no', '*fjordabladet.no', '*fjt.no', '*fjordingen.no', '*fjuken.no', '*heroynytt.no',\n '*morenytt.no', '*sunnmoringen.no', '*vigga.no', '*vikebladet.no',\n // itromso.no\n '*itromso.no', '*framtidinord.no',\n // ht.no\n '*ht.no', '*vol.no',\n // t-a.no\n '*t-a.no', '*namdalsavisa.no',\n // other polaris newspapers\n '*altaposten.no', '*folkebladet.no',\n '*svd.se',\n\n // testing env\n '*mylocal.com'\n ]\n },\n\n preview: {\n global: [\n '*vgnett.no', '*svp.schibsted.io', '*cms.schibsted.media', '*localhost'\n ]\n }\n },\n\n translations: translations\n};\n\nexport default config;\n","\nexport default {\n default: 'OjqkBWp9VpYP8utpWdzBZ+eZIJhcfOW5U9g4/w==',\n //\n '100sport': 'Uq5GO7mRz+oxp7pVh3bZEvDEBzEYRTG4h3sr1Q==',\n ab: 'qK+optxkJTV2KblAIiLdoWze6AAGxX5Qxeb57A==',\n adressa: 'BQs7m1EiK0wlK8xAZQgJwU1a4OskbKgoYRSEfA==',\n altaposten: 'Y0grkUQ6BaCat409fP7mPqr1SbDS+LntWrQIpg==',\n ap: 'ElscszbjUK+A0En7My3UPpJ/4MlOUOn+fiU2/w==',\n bt: 'wgmdmAfgbneZjUBt8ZxqiKTxVCpriTwcC06hzQ==',\n brandstudio: 'uXOJWRxZaxOSRhIisAGWsEbzn3PIhbTlCn99IQ==',\n folkebladet: 'kGoJc75y4Uq1r2kw2n883oYzGk+SrEJ2GEDQUQ==',\n fvn: '88vcnFV8g4crXq1P8jrGz8D7XqMwawGvwFmhJg==',\n harstad: 'C8hK/HIbIL3k9h4dN4xY3lHAPdjLyx7B4WGM/w==',\n itromso: 'QAPvDWM3mHi3lYOZCLqOwHZMstixgFefhc/d1Q==',\n podcast: 'X2K7i+dwWXsIR0BKyX+3C+8s4y9VOWcYgtjeJA==',\n rbnett: 'y7Z4M5Ah6dOyDH7/ZrCQjHZPb3E3xnctwkixbw==',\n riks: 'a5kTQmkeGHV+P2wOaTQvAuXEdivj2lbXoAxTbw==',\n ridenews: '6s5IkHj1LiODLxDOaYr1ze6F7F1Cun92UFuOpA==',\n sa: 'dWpue+L8nJKbDFqh9Ps3o2mxqr92MY2G9tQohg==',\n schibsted: 'Cn+pnRPeR7dlwUgy+QwoSwyu0NXoGUtxD/LVqA==',\n smp: 'eZ34FUhLc6cW3MypHSgtbYwRgbDxKLV/iaABmQ==',\n svd: 'Olwljnb5W0VdUf38yWyv3kjowR9JamQYw4RndA==',\n tronderavisa: '7azVhGsMlCm9EuRPr4EJ8RY6cyVbmAgeS1MkKw==',\n vgtv: 'edF0bFyKcM68omCq24JsMWw/CO/f6cAgS91oiQ==',\n vgtvs: 'D/kRElM9UDSgZxbEqPBESxIKamNBql5PeIabpg=='\n};\n","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","module.exports = true;\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\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","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(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 (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","exports.f = {}.propertyIsEnumerable;\n","module.exports = { \"default\": require(\"core-js/library/fn/json/stringify\"), __esModule: true };","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\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 (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(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\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var hide = require('./_hide');\nmodule.exports = function (target, src, safe) {\n for (var key in src) {\n if (safe && target[key]) target[key] = src[key];\n else hide(target, key, src[key]);\n } return target;\n};\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","exports.f = require('./_wks');\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","exports.f = Object.getOwnPropertySymbols;\n","module.exports = \"\"","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","module.exports = require('./_hide');\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) 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 ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = 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 ? ObjectProto : null;\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\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 (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\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};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = 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 invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(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 (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_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","'use strict';\nvar global = require('./_global');\nvar core = require('./_core');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/object/freeze\"), __esModule: true };","/* jshint ignore:start */\n/* eslint-disable */\n\nvar isLoaded = false;\nvar exportz = {};\n\nexport default function (conf) {\n if (!isLoaded) {\n isLoaded = true;\n\n (function(k) {\n k = k || {}; (function(l) {\n function b() { this.u = 'setup'; }l.g = b; b.prototype = {\n c: function(a) { a = a && typeof a === 'number' && a > 0 ? Math.round(a) : 10; for (var g = '', e = 0; e < a; e++)g += String.fromCharCode((Math.random() < 0.5 ? 65 : 97) + Math.floor(26 * Math.random())); return g; },\n A: function(a) {\n function g(d) {\n var a = '';\n var c;\n var g;\n for (c = 7; c >= 0; c--)g = d >>> 4 * c & 15, a += g.toString(16);return a;\n }function e(d, a) { return d << a | d >>> 32 - a; }\n var c;\n var h;\n var b = Array(80);\n var l = 1732584193;\n var q = 4023233417;\n var p = 2562383102;\n var k = 271733878;\n var t = 3285377520;\n var f;\n var m;\n var n;\n var r;\n var d;\n a = a && typeof a === 'string'\n ? a : '';f = a.length;var u = [];for (c = 0; c < f - 3; c += 4)h = a.charCodeAt(c) << 24 | a.charCodeAt(c + 1) << 16 | a.charCodeAt(c + 2) << 8 | a.charCodeAt(c + 3), u.push(h);switch (f % 4) { case 0: c = 2147483648; break; case 1: c = a.charCodeAt(f - 1) << 24 | 8388608; break; case 2: c = a.charCodeAt(f - 2) << 24 | a.charCodeAt(f - 1) << 16 | 32768; break; case 3: c = a.charCodeAt(f - 3) << 24 | a.charCodeAt(f - 2) << 16 | a.charCodeAt(f - 1) << 8 | 128; }for (u.push(c); u.length % 16 != 14;)u.push(0);u.push(f >>> 29);u.push(f << 3 & 4294967295);for (a = 0; a < u.length; a += 16) {\n for (c = 0; c < 16; c++)b[c] = u[a + c]; for (c = 16; c <= 79; c++)b[c] = e(b[c - 3] ^ b[c - 8] ^ b[c - 14] ^ b[c - 16], 1); h = l; f = q; m = p; n = k; r = t; for (c = 0; c <= 19; c++)d = e(h, 5) + (f & m | ~f & n) + r + b[c] + 1518500249 & 4294967295, r = n, n = m, m = e(f, 30), f = h, h = d; for (c = 20; c <= 39; c++)d = e(h, 5) + (f ^ m ^ n) + r + b[c] + 1859775393 & 4294967295, r = n, n = m, m = e(f, 30), f = h, h = d; for (c = 40; c <= 59; c++)d = e(h, 5) + (f & m | f & n | m & n) + r + b[c] + 2400959708 & 4294967295, r = n, n = m, m = e(f, 30), f = h, h = d; for (c = 60; c <= 79; c++)d = e(h, 5) + (f ^ m ^ n) + r + b[c] + 3395469782 & 4294967295, r = n, n = m, m = e(f, 30), f = h, h = d; l = l + h & 4294967295; q = q + f & 4294967295; p = p + m & 4294967295; k = k + n\n & 4294967295; t = t + r & 4294967295;\n }return (g(l) + g(q) + g(p) + g(k) + g(t)).toLowerCase();\n },\n j: function(a) {\n for (var g = '', e, c, b, l, k, q, p = 0; p < a.length;) {\n e = a.charCodeAt(p++), c = a.charCodeAt(p++), b = a.charCodeAt(p++), l = e >> 2, e = (e & 3) << 4 | c >> 4, k = (c & 15) << 2 | b >> 6, q = b & 63, isNaN(c) ? k = q = 64 : isNaN(b) && (q = 64), g = g + 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='.charAt(l) + 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='.charAt(e) + 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='.charAt(k)\n + 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='.charAt(q);\n } return g;\n },\n fireEvent: function(a, g, b) {\n var c = this.u;\n var h = document.createEvent('CustomEvent');\n b.state = c;h.initCustomEvent(g, !1, !1, b);a.dispatchEvent(h);\n },\n l: function(a, g, b) { g || (g = 'hdEvent'); b || (b = window); this.fireEvent(b, g, a); },\n track: function(a, b, e) {\n if (e) {\n if (!homad || !homad.M)window.setTimeout(function() { this.track(a, b, e); }.bind(this), 500); else if (homad.isEnabled) {\n var c = `${homad.T()}?homad_track_key=${encodeURIComponent(a)}&homad_track_value=${\n encodeURIComponent(b)}`; homad.o(c, !0); c = homad.o(c, !0); c.data.homad_url_prefix_alias = ''; c.data.homad_track_key = encodeURIComponent(a); c.data.homad_track_value = encodeURIComponent(b); homad.P(c, function() {});\n }\n }\n }\n };\n }(k)); var v = k.g || v; new v(); var w = new v(); (function(l) {\n function b(a) { this.data = a || {}; }l.f = b; b.S = function(a, b) {\n var e = {};\n var c;\n for (c in b)e[c] = b[c];for (c in a)e[c] = a[c];return e;\n }; b.w = { code: '1000', type: 'penalty', message: '' }; b.V = { code: '1001', type: 'mediaerror', message: '' }; b.C = { code: '1002', type: 'vpaid', message: '' };\n b.O = { code: '1003', type: 'emptyVast', message: '' }; b.F = { code: '1004', type: 'malformattedXML' }; b.J = { code: '1005', type: 'adStart' }; b.G = { code: '1006', type: 'adFirstQuartile' }; b.I = { code: '1007', type: 'adMidPoint' }; b.K = { code: '1008', type: 'adThirdQuartile' }; b.i = { code: '1009', type: 'adComplete' }; b.H = { code: '1010', type: 'adImpressionsCalled' }; b.B = { code: '1011', type: 'vastLoadingFailed' }; b.U = { code: '1012', type: 'noCreative' }; b.R = { code: '1013', type: 'emptyVastFromHomadServerEvent', message: '' }; b.D = {\n code: '1014',\n type: 'wrapperLimitReached',\n message: ''\n }; b.L = { code: '1015', type: 'clickthrough', message: '' }; b.N = { code: '1016', type: 'continueContent', message: '' }; b.X = { code: '1017', type: 'variableDeletedEvent', message: '' }; b.W = { code: '1018', type: 'noVariableSettingEvent', message: '' }; b.prototype = {};\n }(k)); var z = k.f || z; (function(l) {\n function b() {}l.h = b; b.prototype = {\n s: function(a) {\n var b = 0;\n var e;\n var c;\n var h;\n if (a.length == 0) return b;e = 0;for (h = a.length; e < h; e++)c = a.charCodeAt(e), b = (b << 5) - b + c, b |= 0;return Math.abs(b);\n },\n m: function() {\n return Math.round(Date.now() / 1E3 / 3600 / 24) + navigator.appCodeName\n + navigator.appName + navigator.appVersion + navigator.userAgent + navigator.platform + (navigator.language || navigator.i || 'x');\n },\n a: function(a) { a = parseInt(a); if (a >= 65 && a <= 90 || a >= 97 && a <= 122) return String.fromCharCode(a); if (a <= 0) return ''; if (a < 65) return this.a(a + 65); if (a > 90) return this.a(Math.round(a / 2)); },\n reverse: function(a) { for (var b = '', e = a.length - 1, b = ''; e >= 0; b += a[e--]);return b; },\n b: function() {\n for (var a = this.s(`${this.m()}`), a = (`${a}${this.reverse(`${a}`)}`).match(/.{1,2}/g), b = '', e = 0; e < a.length; e++)b += this.a(a[e]); b.length == 0\n && (b = 'zork'); return b;\n },\n v: function() { return `${this.b()}2`; }\n };\n }(k)); var y = k.h || y; (function() {\n function l() {\n if (p)conf.startPlayer && eval(conf.startPlayer), document.fp_error = !0, document.hd_ready = !0; else {\n var d = document.createElement('script');d.type = 'text/javascript';d.src = `https://hgc-cf-cache-1.svonm.com/hd-main.js?cache=${w.c(10)}`;d.onerror = e;document.head.firstChild ? document.head.insertBefore(d, document.head.firstChild) : document.head.appendChild(d);\n var d = new y();\n var a = document.createEvent('CustomEvent');\n conf.version = '20170704_0930_802';a.initCustomEvent(d.b(), !1, !1, conf);window.setInterval(function() { window.dispatchEvent(a); }, 500);b();\n }\n }function b() { var d = new y(); r = window.setTimeout(function() { a(); }, 15E3); window.addEventListener(d.v(), function() { window.clearTimeout(r); }); }function a() {\n for (var d = document.getElementsByTagName('video'), a = 0; a < d.length; a++) { try { d[a] && d[a].pause && typeof d[a].pause === 'function' && d[a].pause(); } catch (b) {}d[a].parentNode.removeChild(d[a]); }d = document.getElementsByTagName('object'); for (a = 0; a < d.length; a++)d[a].parentNode.removeChild(d[a]);\n d = document.getElementsByClassName('video-wrapper'); for (a = 0; a < d.length; a++)d[a] && d[a].parentNode && d[a].parentNode.removeChild(d[a]); d = document.getElementsByClassName('videoplayer'); for (a = 0; a < d.length; a++)d[a] && d[a].parentNode && d[a].parentNode.removeChild(d[a]); if (window.self != window.top) for (d = window.document; d.hasChildNodes();)d.removeChild(d.lastChild);\n }function g() {\n if (t) {\n var d = `fail-init-100.gif${v()}`; k(t, function() {}, function() {}, {\n homad_url_prefix_alias: f,\n homad_url_suffix_base64: w.j(d),\n homad_url_suffix: d,\n homad_hash_guessed: 'true'\n });\n }w.l(z.w); x && typeof x === 'function' ? x() : (a(), window.setInterval(a, 500), window.setTimeout(a, 1500));\n }function e() { var a = document.createElement('script'); a.type = 'text/javascript'; a.src = `https://s3.amazonaws.com/homad-global-configs.schneevonmorgen.com/hd-main.js?cache=${w.c(10)}`; a.onerror = g; document.head.firstChild ? document.head.insertBefore(a, document.head.firstChild) : document.head.appendChild(a); }function c(a) { p || (p = !q(a.enabled)); l(); }function h(a) {\n a && a.server && a.server[0]\n && (t = (`${a.server[1]}`).replace('[hash]', w.A(`${(new Date()).getTime()}`)), f = 'homadvastimpressions'); p ? l() : (p = !q(a.enabled)) ? l() : k(a.config, c, l);\n }function k(a, b, c, e) {\n var f = new XMLHttpRequest(); f.onreadystatechange = function() { if (b && f.readyState == 4 && f.status == 200) { var a = {}; try { a = JSON.parse(f.responseText); } catch (d) { a.enabled = 'false'; }b(a); }c && f.readyState == 4 && f.status != 200 && c(f); }; try {\n if (e) {\n f.open('POST', a, !0); a = e; e = ''; for (var g in a)e += `&${g}=${encodeURIComponent(a[g])}`; e = e.substr(1); f.setRequestHeader('Content-type',\n 'application/x-www-form-urlencoded'); f.send(e);\n } else f.open('GET', a, !0), f.send();\n } catch (h) { c && c(f); }\n }function v() { var a = '?c=unknown'; window && window.location && window.location.hostname && (a = `?c=${window.location.hostname}`); return a; }function q(a) { return a == 'True' || a == 'true' || a == 1 || a == '1' || a == 1; }\n var p = !1;\n var x = conf.onFailure;\n var t = '';\n var f = '';\n var m = !1;\n var n = 0;\n var r = !1;\n k(conf.globalConfig, function(a) { p ? l() : p = !q(a.enabled); });typeof conf.clientConfig === 'string' ? k(conf.clientConfig, h, function() {\n window.setTimeout(function() {\n k(conf.clientConfig,\n h, function() { window.setTimeout(g, 1500); });\n }, 500);\n }) : m = window.setInterval(function() { var a = ''; try { a = conf.clientConfig(), n++, a ? (h(a), window.clearInterval(m)) : n >= 50 && (window.clearInterval(m), g()); } catch (b) {} }, 100);\n }());\n }).call(exportz, exportz);\n }\n}\n","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"
\\n
\\\">
\\n\\n
\\n \\n \\n \\n
\\n\\n \\n
\"","module.exports = \"
\\n
\\n
\\n \\n \\n
\\n
\\n \\n
\\n
\\n
\\n\"","module.exports = \"\\n\"","module.exports = \"\\n <%= closeIcon %>\\n\\n\\n <%= next.getTitle() %>\\n ');\\\">\\n s\\\">\\n Next <%= nextIcon %>\\n );\\\">\\n \\n\\n\"","module.exports = \"\\n\"","module.exports = { \"default\": require(\"core-js/library/fn/map\"), __esModule: true };","module.exports = \"\"","import config from \"player/config\";\nimport scriptLoader from 'utils/script-loader';\n\nconst loadSvpLibrary = async () => {\n return import( /* webpackMode: \"eager\"*/ './index').then(SVP => [\n SVP.default,\n SVP.initialize\n ]);\n};\n\nconst loadJwPlayer = async (root) => {\n const PLAYER_LIB = config.cdn.player + '/jwplayer.js';\n\n if (root.define && root.define.amd) {\n return new Promise((resolve) => {\n root.require([PLAYER_LIB], function (jwplayer) {\n root.jwplayer = jwplayer;\n resolve(jwplayer);\n });\n })\n } else {\n return scriptLoader(PLAYER_LIB);\n }\n};\n\n\n(async function(root) {\n const onReady = root.onSvpPlayerReady;\n\n // onSvpPlayerReady is required callback to handle due to SDK async loading\n if(onReady) {\n loadJwPlayer(root)\n .then(loadSvpLibrary)\n .then(library => {\n const [SVP, initialize] = library;\n root.SVP = SVP;\n onReady();\n initialize();\n });\n }\n}(window));\n","module.exports = { \"default\": require(\"core-js/library/fn/is-iterable\"), __esModule: true };","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","module.exports = function () { /* empty */ };\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($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++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function (it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n // eslint-disable-next-line no-prototype-builtins\n || Iterators.hasOwnProperty(classof(O));\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n","var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.promise');\nrequire('../modules/es7.promise.finally');\nrequire('../modules/es7.promise.try');\nmodule.exports = require('../modules/_core').Promise;\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\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 && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\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 (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may 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 (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\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 values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(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.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\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 forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\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 var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(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 return 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};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.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","'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = require('./_export');\nvar newPromiseCapability = require('./_new-promise-capability');\nvar perform = require('./_perform');\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\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\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() { return this })() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nmodule.exports = require(\"./runtime\");\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\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 var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\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 runtime.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 runtime.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 runtime.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 runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.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 runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.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 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 runtime.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 runtime.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 // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() { return this })() || Function(\"return this\")()\n);\n","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","module.exports = { \"default\": require(\"core-js/library/fn/array/from\"), __esModule: true };","require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\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($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\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 gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n","var core = require('../../modules/_core');\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n","require('../../modules/es6.object.freeze');\nmodule.exports = require('../../modules/_core').Object.freeze;\n","// 19.1.2.5 Object.freeze(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('freeze', function ($freeze) {\n return function freeze(it) {\n return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n };\n});\n","module.exports = \"\"","require('../../modules/es6.object.get-prototype-of');\nmodule.exports = require('../../modules/_core').Object.getPrototypeOf;\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/object/set-prototype-of\"), __esModule: true };","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/object/create\"), __esModule: true };","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.map');\nrequire('../modules/es7.map.to-json');\nrequire('../modules/es7.map.of');\nrequire('../modules/es7.map.from');\nmodule.exports = require('../modules/_core').Map;\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar meta = require('./_meta');\nvar fails = require('./_fails');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar setToStringTag = require('./_set-to-string-tag');\nvar dP = require('./_object-dp').f;\nvar each = require('./_array-methods')(0);\nvar DESCRIPTORS = require('./_descriptors');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n if (!DESCRIPTORS || typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME, '_c');\n target._c = new Base();\n if (iterable != undefined) forOf(iterable, IS_MAP, target[ADDER], target);\n });\n each('add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON'.split(','), function (KEY) {\n var IS_ADDER = KEY == 'add' || KEY == 'set';\n if (KEY in proto && !(IS_WEAK && KEY == 'clear')) hide(C.prototype, KEY, function (a, b) {\n anInstance(this, C, KEY);\n if (!IS_ADDER && IS_WEAK && !isObject(a)) return KEY == 'get' ? undefined : false;\n var result = this._c[KEY](a === 0 ? 0 : a, b);\n return IS_ADDER ? this : result;\n });\n });\n IS_WEAK || dP(C.prototype, 'size', {\n get: function () {\n return this._c.size;\n }\n });\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F, O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Map', { toJSON: require('./_collection-to-json')('Map') });\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar classof = require('./_classof');\nvar from = require('./_array-from-iterable');\nmodule.exports = function (NAME) {\n return function toJSON() {\n if (classof(this) != NAME) throw TypeError(NAME + \"#toJSON isn't generic\");\n return from(this);\n };\n};\n","var forOf = require('./_for-of');\n\nmodule.exports = function (iter, ITERATOR) {\n var result = [];\n forOf(iter, false, result.push, result, ITERATOR);\n return result;\n};\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of\nrequire('./_set-collection-of')('Map');\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { of: function of() {\n var length = arguments.length;\n var A = new Array(length);\n while (length--) A[length] = arguments[length];\n return new this(A);\n } });\n};\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from\nrequire('./_set-collection-from')('Map');\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar ctx = require('./_ctx');\nvar forOf = require('./_for-of');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {\n var mapFn = arguments[1];\n var mapping, A, n, cb;\n aFunction(this);\n mapping = mapFn !== undefined;\n if (mapping) aFunction(mapFn);\n if (source == undefined) return new this();\n A = [];\n if (mapping) {\n n = 0;\n cb = ctx(mapFn, arguments[2], 2);\n forOf(source, false, function (nextItem) {\n A.push(cb(nextItem, n++));\n });\n } else {\n forOf(source, false, A.push, A);\n }\n return new this(A);\n } });\n};\n","/* jshint ignore:start */\n\n var idCounter = 0;\n\n // we do not include underscore as it is our hard dependency\n var _ = jwplayer._,\n property = function (key) {\n return function (obj) {\n return obj == null ? void 0 : obj[key];\n };\n },\n MAX_ARRAY_INDEX = Math.pow(2, 53) - 1,\n getLength = property('length'),\n isArrayLike = function (collection) {\n var length = getLength(collection);\n return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX;\n };\n\n _.isEmpty = function (obj) {\n if (obj == null) return true;\n if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0;\n return _.keys(obj).length === 0;\n };\n\n _.uniqueId = function(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n };\n\n export default _;\n\n/* jshint ignore:end */\n","/* jshint ignore:start */\nimport _ from './underscore';\n\n // Backbone.Events\n // ---------------\n\n // A module that can be mixed in to *any object* in order to provide it with\n // a custom event channel. You may bind a callback to an event with `on` or\n // remove with `off`; `trigger`-ing an event fires all callbacks in\n // succession.\n //\n // var object = {};\n // _.extend(object, Backbone.Events);\n // object.on('expand', function(){ alert('expanded'); });\n // object.trigger('expand');\n //\n var Events = {};\n\n // Regular expression used to split event strings.\n var eventSplitter = /\\s+/;\n\n // Iterates over the standard `event, callback` (as well as the fancy multiple\n // space-separated events `\"change blur\", callback` and jQuery-style event\n // maps `{event: callback}`).\n var eventsApi = function(iteratee, events, name, callback, opts) {\n var i = 0, names;\n if (name && typeof name === 'object') {\n // Handle event maps.\n if (callback !== void 0 && 'context' in opts && opts.context === void 0) opts.context = callback;\n for (names = _.keys(name); i < names.length ; i++) {\n events = eventsApi(iteratee, events, names[i], name[names[i]], opts);\n }\n } else if (name && eventSplitter.test(name)) {\n // Handle space separated event names by delegating them individually.\n for (names = name.split(eventSplitter); i < names.length; i++) {\n events = iteratee(events, names[i], callback, opts);\n }\n } else {\n // Finally, standard events.\n events = iteratee(events, name, callback, opts);\n }\n return events;\n };\n\n // Bind an event to a `callback` function. Passing `\"all\"` will bind\n // the callback to all events fired.\n Events.on = function(name, callback, context) {\n return internalOn(this, name, callback, context);\n };\n\n // Guard the `listening` argument from the public API.\n var internalOn = function(obj, name, callback, context, listening) {\n obj._events = eventsApi(onApi, obj._events || {}, name, callback, {\n context: context,\n ctx: obj,\n listening: listening\n });\n\n if (listening) {\n var listeners = obj._listeners || (obj._listeners = {});\n listeners[listening.id] = listening;\n }\n\n return obj;\n };\n\n // Inversion-of-control versions of `on`. Tell *this* object to listen to\n // an event in another object... keeping track of what it's listening to\n // for easier unbinding later.\n Events.listenTo = function(obj, name, callback) {\n if (!obj) return this;\n var id = obj._listenId || (obj._listenId = _.uniqueId('l'));\n var listeningTo = this._listeningTo || (this._listeningTo = {});\n var listening = listeningTo[id];\n\n // This object is not listening to any other events on `obj` yet.\n // Setup the necessary references to track the listening callbacks.\n if (!listening) {\n var thisId = this._listenId || (this._listenId = _.uniqueId('l'));\n listening = listeningTo[id] = {obj: obj, objId: id, id: thisId, listeningTo: listeningTo, count: 0};\n }\n\n // Bind callbacks on obj, and keep track of them on listening.\n internalOn(obj, name, callback, this, listening);\n return this;\n };\n\n // The reducing API that adds a callback to the `events` object.\n var onApi = function(events, name, callback, options) {\n if (callback) {\n var handlers = events[name] || (events[name] = []);\n var context = options.context, ctx = options.ctx, listening = options.listening;\n if (listening) listening.count++;\n\n handlers.push({ callback: callback, context: context, ctx: context || ctx, listening: listening });\n }\n return events;\n };\n\n // Remove one or many callbacks. If `context` is null, removes all\n // callbacks with that function. If `callback` is null, removes all\n // callbacks for the event. If `name` is null, removes all bound\n // callbacks for all events.\n Events.off = function(name, callback, context) {\n if (!this._events) return this;\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: context,\n listeners: this._listeners\n });\n return this;\n };\n\n // Tell this object to stop listening to either specific events ... or\n // to every object it's currently listening to.\n Events.stopListening = function(obj, name, callback) {\n var listeningTo = this._listeningTo;\n if (!listeningTo) return this;\n\n var ids = obj ? [obj._listenId] : _.keys(listeningTo);\n\n for (var i = 0; i < ids.length; i++) {\n var listening = listeningTo[ids[i]];\n\n // If listening doesn't exist, this object is not currently\n // listening to obj. Break out early.\n if (!listening) break;\n\n listening.obj.off(name, callback, this);\n }\n if (_.isEmpty(listeningTo)) this._listeningTo = void 0;\n\n return this;\n };\n\n // The reducing API that removes a callback from the `events` object.\n var offApi = function(events, name, callback, options) {\n if (!events) return;\n\n var i = 0, listening;\n var context = options.context, listeners = options.listeners;\n\n // Delete all events listeners and \"drop\" events.\n if (!name && !callback && !context) {\n var ids = _.keys(listeners);\n for (; i < ids.length; i++) {\n listening = listeners[ids[i]];\n delete listeners[listening.id];\n delete listening.listeningTo[listening.objId];\n }\n return;\n }\n\n var names = name ? [name] : _.keys(events);\n for (; i < names.length; i++) {\n name = names[i];\n var handlers = events[name];\n\n // Bail out if there are no events stored.\n if (!handlers) break;\n\n // Replace events if there are any remaining. Otherwise, clean up.\n var remaining = [];\n for (var j = 0; j < handlers.length; j++) {\n var handler = handlers[j];\n if (\n callback && callback !== handler.callback &&\n callback !== handler.callback._callback ||\n context && context !== handler.context\n ) {\n remaining.push(handler);\n } else {\n listening = handler.listening;\n if (listening && --listening.count === 0) {\n delete listeners[listening.id];\n delete listening.listeningTo[listening.objId];\n }\n }\n }\n\n // Update tail event if the list has any events. Otherwise, clean up.\n if (remaining.length) {\n events[name] = remaining;\n } else {\n delete events[name];\n }\n }\n if (_.size(events)) return events;\n };\n\n // Bind an event to only be triggered a single time. After the first time\n // the callback is invoked, its listener will be removed. If multiple events\n // are passed in using the space-separated syntax, the handler will fire\n // once for each event, not once for a combination of all events.\n Events.once = function(name, callback, context) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, _.bind(this.off, this));\n return this.on(events, void 0, context);\n };\n\n // Inversion-of-control versions of `once`.\n Events.listenToOnce = function(obj, name, callback) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, _.bind(this.stopListening, this, obj));\n return this.listenTo(obj, events);\n };\n\n // Reduces the event callbacks into a map of `{event: onceWrapper}`.\n // `offer` unbinds the `onceWrapper` after it has been called.\n var onceMap = function(map, name, callback, offer) {\n if (callback) {\n var once = map[name] = _.once(function() {\n offer(name, once);\n callback.apply(this, arguments);\n });\n once._callback = callback;\n }\n return map;\n };\n\n // Trigger one or many events, firing all bound callbacks. Callbacks are\n // passed the same arguments as `trigger` is, apart from the event name\n // (unless you're listening on `\"all\"`, which will cause your callback to\n // receive the true name of the event as the first argument).\n Events.trigger = function(name) {\n if (!this._events) return this;\n\n var length = Math.max(0, arguments.length - 1);\n var args = Array(length);\n for (var i = 0; i < length; i++) args[i] = arguments[i + 1];\n\n eventsApi(triggerApi, this._events, name, void 0, args);\n return this;\n };\n\n // Handles triggering the appropriate event callbacks.\n var triggerApi = function(objEvents, name, cb, args) {\n if (objEvents) {\n var events = objEvents[name];\n var allEvents = objEvents.all;\n if (events && allEvents) allEvents = allEvents.slice();\n if (events) triggerEvents(events, args);\n if (allEvents) triggerEvents(allEvents, [name].concat(args));\n }\n return objEvents;\n };\n\n // A difficult-to-believe, but optimized internal dispatch function for\n // triggering events. Tries to keep the usual cases speedy (most internal\n // Backbone events have 3 arguments).\n var triggerEvents = function(events, args) {\n var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2];\n switch (args.length) {\n case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx); return;\n case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); return;\n case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); return;\n case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return;\n default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); return;\n }\n };\n\n // Aliases for backwards compatibility.\n Events.bind = Events.on;\n Events.unbind = Events.off;\n\n export default Events;\n\n","\n \n var userAgent = navigator.userAgent;\n\n function userAgentMatch(regex) {\n return userAgent.match(regex) !== null;\n }\n\n function lazyUserAgentMatch(regex) {\n return function () {\n return userAgentMatch(regex);\n };\n }\n\n var isFF = lazyUserAgentMatch(/gecko\\//i);\n var isIETrident = lazyUserAgentMatch(/trident\\/.+rv:\\s*11/i);\n var isIPad = lazyUserAgentMatch(/iPad/i);\n var isIPhone = lazyUserAgentMatch(/iPhone/i);\n// Check for Facebook App Version to see if it's Facebook\n\n function isEdge() {\n return userAgentMatch(/\\sEdge\\/\\d+/i);\n }\n\n function isMSIE() {\n return userAgentMatch(/msie/i);\n }\n\n function isChrome() {\n return userAgentMatch(/\\s(?:Chrome|CriOS)\\//i) && !isEdge();\n }\n\n function isIE() {\n return isEdge() || isIETrident() || isMSIE();\n }\n\n function isSafari() {\n return userAgentMatch(/safari/i) && !userAgentMatch(/(?:Chrome|CriOS|chromium|android)/i);\n }\n\n /** Matches iOS devices **/\n function isIOS(version) {\n var isAppleIOS = userAgentMatch(/iP(hone|ad|od)/i),\n result = null;\n\n // check if version matches\n if(isAppleIOS && version) {\n result = /OS ([._\\d]+)/.exec(userAgent);\n\n // get version and parse it\n if(result && parseInt(result[1], 10) === version) {\n return true;\n } else {\n // didn't match version\n return false;\n }\n }\n\n return isAppleIOS;\n }\n\n function isAndroid() {\n return userAgentMatch(/Android/i);\n }\n\n /** Matches Android devices **/\n function isAndroidNative() {\n // Android Browser appears to include a user-agent string for Chrome/18\n if (userAgentMatch(/chrome\\/[123456789]/i) && !userAgentMatch(/chrome\\/18/i) && !isFF()) {\n return false;\n }\n return isAndroid();\n }\n\n /**\n * If the browser has flash capabilities, return the flash version\n */\n function flashVersion() {\n if (isAndroid()) {\n return 0;\n }\n\n var plugins = navigator.plugins;\n var flash;\n\n if (plugins) {\n flash = plugins['Shockwave Flash'];\n if (flash && flash.description) {\n return parseFloat(flash.description.replace(/\\D+(\\d+\\.?\\d*).*/, '$1'));\n }\n }\n\n if (typeof window.ActiveXObject !== 'undefined') {\n try {\n flash = new window.ActiveXObject('ShockwaveFlash.ShockwaveFlash');\n if (flash) {\n return parseFloat(flash.GetVariable('$version').split(' ')[1].replace(/\\s*,\\s*/, '.'));\n }\n } catch (e) {\n return 0;\n }\n\n return flash;\n }\n return 0;\n }\n\n export default {\n isIOS: isIOS,\n isIPhone: isIPhone,\n isIPad: isIPad,\n isSafari: isSafari,\n\n isAndroid: isAndroid,\n isAndroidNative: isAndroidNative,\n isChrome: isChrome,\n\n isFirefox: isFF,\n\n isEdge: isEdge,\n isIE: isIE,\n\n isDesktop: function () {\n return !this.isMobile() && !this.isTablet();\n },\n\n isSamsungInternet: function () {\n return userAgent.indexOf('SamsungBrowser') !== -1;\n },\n\n isTablet: function () {\n var isTablet = isIPad() || false;\n\n // android tables are when\n if (this.isAndroid() && (userAgent.indexOf('Mobile') === -1)) {\n isTablet = true;\n }\n\n return isTablet;\n },\n\n isMobile: function () {\n return userAgent.match(/(iPhone|iPod|Android(?=.*Mobile).*|HTC|Fennec|IEMobile|BlackBerry|SymbianOS(?=.*AppleWebKit).*|Opera Mobi|Symbian|SonyEricsson|Nokia|SAMSUNG|LG)/i) === null ? false : true;\n },\n\n isWindowsPhone: function () {\n return userAgent.match(/Windows Phone/i) !== null;\n },\n\n getChromeVersion: function () {\n var raw = userAgent.match(/Chrom(e|ium)\\/([0-9]+)\\./);\n\n return raw ? parseInt(raw[2], 10) : false;\n },\n\n getPixelRatio: function () {\n var devicePixelRatio = window.devicePixelRatio || 1;\n\n if (devicePixelRatio > 1) {\n devicePixelRatio = 2;\n }\n\n return devicePixelRatio;\n },\n\n getFlashVersion: flashVersion,\n\n\n /**\n * Tracking is divided by device type\n *\n * @returns {*}\n */\n getDeviceType: function () {\n if (this.isTablet()) {\n return 'tablet';\n }\n\n if (this.isMobile()) {\n return 'phone';\n }\n\n return 'desktop';\n },\n\n canAutoplay: function () {\n var canAutoplay = 'always';\n\n // default is muted for never ios systems\n if (this.isIOS()) {\n canAutoplay = 'muted';\n }\n\n // iOS 8 and 9 can not autoplay any kind of stream\n // also Android Devices are lacking this\n if (this.isIOS(9) || this.isIOS(8) || (this.isAndroid())) {\n canAutoplay = 'never';\n }\n\n // chrome android can autoplay muted\n if (this.isAndroid() && !this.isSamsungInternet() && this.getChromeVersion() >= 53) {\n canAutoplay = 'muted';\n }\n\n return canAutoplay;\n }\n };\n\n","/* jshint ignore:start */\n\n function isMergeableObject(val) {\n var nonNullObject = val && typeof val === 'object'\n\n return nonNullObject\n && Object.prototype.toString.call(val) !== '[object RegExp]'\n && Object.prototype.toString.call(val) !== '[object Date]'\n }\n\n function emptyTarget(val) {\n return Array.isArray(val) ? [] : {}\n }\n\n function cloneIfNecessary(value, optionsArgument) {\n var clone = optionsArgument && optionsArgument.clone === true\n return (clone && isMergeableObject(value)) ? deepmerge(emptyTarget(value), value, optionsArgument) : value\n }\n\n function defaultArrayMerge(target, source, optionsArgument) {\n var destination = target.slice()\n source.forEach(function(e, i) {\n if (typeof destination[i] === 'undefined') {\n destination[i] = cloneIfNecessary(e, optionsArgument)\n } else if (isMergeableObject(e)) {\n destination[i] = deepmerge(target[i], e, optionsArgument)\n } else if (target.indexOf(e) === -1) {\n destination.push(cloneIfNecessary(e, optionsArgument))\n }\n })\n return destination\n }\n\n function mergeObject(target, source, optionsArgument) {\n var destination = {}\n if (isMergeableObject(target)) {\n Object.keys(target).forEach(function (key) {\n destination[key] = cloneIfNecessary(target[key], optionsArgument)\n })\n }\n Object.keys(source).forEach(function (key) {\n if (!isMergeableObject(source[key]) || !target[key]) {\n destination[key] = cloneIfNecessary(source[key], optionsArgument)\n } else {\n destination[key] = deepmerge(target[key], source[key], optionsArgument)\n }\n })\n return destination\n }\n\n function deepmerge(target, source, optionsArgument) {\n var array = Array.isArray(source);\n var options = optionsArgument || { arrayMerge: defaultArrayMerge }\n var arrayMerge = options.arrayMerge || defaultArrayMerge\n\n if (array) {\n return Array.isArray(target) ? arrayMerge(target, source, optionsArgument) : cloneIfNecessary(source, optionsArgument)\n } else {\n return mergeObject(target, source, optionsArgument)\n }\n }\n\n deepmerge.all = function deepmergeAll(array, optionsArgument) {\n if (!Array.isArray(array) || array.length < 2) {\n throw new Error('first argument should be an array with at least two elements')\n }\n\n // we are sure there are at least 2 values, so it is safe to have no initial value\n return array.reduce(function(prev, next) {\n return deepmerge(prev, next, optionsArgument)\n })\n }\n\n window.deepmerge = deepmerge;\n\n export default deepmerge;\n\n","/* global jwplayer */\nimport Events from './backbone.events';\nimport device from './device';\nimport merge from './merge';\n var jwUtils = jwplayer.utils,\n jwUnderscore = jwplayer._,\n // jwplayer is hard dependecy here\n utils = {\n Events: Events,\n\n // methods reused from jwplayer core\n extend: jwUtils.extend,\n // merge with deep copy, similar to jQuery extend\n merge: merge,\n\n ajax: jwUtils.ajax,\n\n each: jwUnderscore.each,\n isUndefined: jwUnderscore.isUndefined,\n isNumber: jwUnderscore.isNumber,\n isString: jwUnderscore.isString,\n isArray: jwUnderscore.isArray,\n omit: jwUnderscore.omit,\n memoize: jwUnderscore.memoize,\n\n createNode: jwUtils.createElement,\n addStyleSheet: jwUtils.addStyleSheet,\n addClass: jwUtils.addClass,\n removeClass: jwUtils.removeClass,\n throttle: jwUnderscore.throttle,\n\n /* jshint ignore:start */\n /**\n * Template system borrowed from http://ejohn.org/blog/javascript-micro-templating/\n */\n template: (function () {\n var cache = {};\n\n return function tmpl(str, data) {\n // Figure out if we're getting a template, or if we need to\n // load the template - and be sure to cache the result.\n var fn = !/\\W/.test(str) ?\n cache[str] = cache[str] ||\n tmpl(document.getElementById(str).innerHTML) :\n\n // Generate a reusable function that will serve as a template\n // generator (and which will be cached).\n new Function(\"obj\",\n \"var p=[],print=function(){p.push.apply(p,arguments);};\" +\n\n // Introduce the data as local variables using with(){}\n \"with(obj){p.push('\" +\n\n // Convert the template into pure JavaScript\n str\n .replace(/[\\r\\t\\n]/g, \" \")\n .split(\"<%\").join(\"\\t\")\n .replace(/((^|%>)[^\\t]*)'/g, \"$1\\r\")\n .replace(/\\t=(.*?)%>/g, \"',$1,'\")\n .split(\"\\t\").join(\"');\")\n .split(\"%>\").join(\"p.push('\")\n .split(\"\\r\").join(\"\\\\'\")\n + \"');}return p.join('');\");\n\n // Provide some basic currying to the user\n return data ? fn(data) : fn({});\n };\n })(),\n /* jshint ignore:end */\n\n device: device,\n\n time: {\n shareTimeToSeconds: function (time) {\n var hours, minutes, seconds, length;\n\n time = jwUnderscore.compact(time.split(/[msh]/));\n length = time.length; // last is empty\n\n seconds = parseInt(time[length - 1], 10);\n minutes = time[length - 2];\n hours = time[length - 3];\n\n return seconds + (minutes ? parseInt(minutes, 10) * 60 : 0) + (hours ? parseInt(hours, 10) * 3600 : 0);\n }\n },\n\n\n hasFlash: function () {\n return device.getFlashVersion() > 0;\n },\n\n number: {\n zeroPad: function (number) {\n number = parseInt(number, 10);\n return number < 10 ? '0' + number : number.toString();\n }\n },\n\n escape: function (str) {\n var escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n };\n\n return str.replace(/[&<>\"'`]/g, function replaceTag(tag) {\n return escapeMap[tag] || tag;\n });\n },\n\n string: {\n // timestamp [s]\n getTimeFormatted: function (timestamp) {\n var hours = Math.floor(timestamp / 3600),\n minutes = Math.floor((timestamp % 3600) / 60),\n seconds = timestamp % 60;\n\n return (hours > 0 ? hours + ':' : '') + utils.number.zeroPad(minutes) + ':' + utils.number.zeroPad(seconds);\n }\n },\n\n inherit: function (o) {\n function F() {\n } // Dummy constructor\n\n F.prototype = o;\n return new F();\n },\n\n model: {\n // Helper function to correctly set up the prototype chain, for subclasses.\n // Similar to `goog.inherits`, but uses a hash of prototype properties and\n // class properties to be extended.\n extend: function (protoProps, staticProps) {\n var parent = this;\n var child = function () {\n return parent.apply(this, arguments);\n };\n\n // Add static properties to the constructor function, if supplied.\n utils.extend(child, parent, staticProps);\n\n // Set the prototype chain to inherit from `parent`, without calling\n // `parent`'s constructor function.\n var Surrogate = function () {\n this.constructor = child;\n };\n Surrogate.prototype = parent.prototype;\n child.prototype = new Surrogate();\n\n // Add prototype properties (instance properties) to the subclass,\n // if supplied.\n if (protoProps) {\n utils.extend(child.prototype, protoProps);\n }\n\n // Set a convenience property in case the parent's prototype is needed\n // later.\n child.__super__ = parent.prototype;\n\n return child;\n }\n },\n\n scriptLoader: jwUtils.scriptloader,\n\n /**\n * Check snap points support\n * @returns {boolean}\n */\n getScrollSnapPrefix: function () {\n var scrollSnapSupport = false;\n\n if('webkitScrollSnapType' in document.documentElement.style) {\n scrollSnapSupport = '-webkit-';\n } else if('msScrollSnapType' in document.documentElement.style) {\n scrollSnapSupport = '-ms-';\n } else if('scrollSnapType' in document.documentElement.style) {\n scrollSnapSupport = '';\n }\n\n return scrollSnapSupport;\n },\n\n loadScript: function (path) {\n return new Promise(function (resolve, reject) {\n var script = document.createElement(\"script\"),\n done = false;\n\n script.type = \"text/javascript\";\n script.src = path;\n script.async = true;\n script.onreadystatechange = script.onload = function() {\n if ( !done && (!this.readyState ||\n this.readyState === \"loaded\" || this.readyState === \"complete\") ) {\n done = true;\n resolve();\n\n // Handle memory leak in IE\n script.onload = script.onreadystatechange = null;\n }\n };\n script.onerror = reject;\n\n document.body.appendChild(script);\n });\n },\n\n jsonToUrl: function (obj) {\n return Object.keys(obj).map(function(key) {\n return encodeURIComponent(key) + '=' + encodeURIComponent(obj[key]);\n }).join('&');\n\n }\n };\n\n /**\n * Polyfill for String.startsWith\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n */\n (function() {\n if (!String.prototype.startsWith) {\n String.prototype.startsWith = function(searchString, position) {\n position = position || 0;\n return this.indexOf(searchString, position) === position;\n };\n }\n })();\n\n export default utils;\n\n","/* globals console */\n\n var log, isEnabled;\n\n log = function() {\n var args = Array.prototype.slice.call(arguments);\n\n args[0] = args[0] + ': %c\"' + args[1] + '\"';\n args[1] = 'color: #ca2117;';\n\n console.log.apply(console, args);\n };\n\n isEnabled = function(block) {\n // check global first\n if(window['logSvpPlayer' + block] === true) {\n return true;\n }\n\n // fix Safari errors when cookies are disabled\n try {\n if(!window.localStorage) {\n return false;\n }\n\n return window.localStorage.getItem('logSvpPlayer' + block);\n } catch (error) {\n return false;\n }\n };\n\n export default function(block) {\n if(isEnabled(block)) {\n return {\n log: function() {\n var args = Array.prototype.slice.call(arguments);\n\n if(typeof args[0] === 'function') {\n args[0](log.bind(this, block));\n } else {\n args.unshift(block);\n log.apply(this, args);\n }\n }\n };\n }\n\n return {\n log: function() {}\n };\n };\n\n","import utils from './utils';\n /**\n * Server time helper required for syncing browser time with stream vendors servers (SMP Stream)\n * @type {{_time: null, _responseTime: null, fetch: Function, getTime: Function}}\n */\n var ServerTime = {\n _time: null,\n _responseTime: null,\n\n fetch: function(url) {\n var resolveRequest = function (time) {\n this._time = time;\n this._responseTime = new Date().getTime();\n }.bind(this);\n\n // TODO server url?\n utils.ajax(url, function(result) {\n // set current microtime if server will return value different than int\n if(isNaN(parseInt(result, 10))) {\n result = (new Date().getTime());\n } else {\n // adjust to miliseconds\n result = result * 1000;\n }\n resolveRequest(result);\n }.bind(this), function() {\n resolveRequest(new Date().getTime());\n }.bind(this), true);\n },\n\n getTime: function() {\n return this._time + (new Date().getTime() - this._responseTime);\n }\n };\n\n export default ServerTime;\n\n","import _ from './underscore';\nimport Events from './backbone.events';\n var SimpleModel = _.extend({\n 'get': function (attr) {\n this.attributes = this.attributes || {};\n return this.attributes[attr];\n },\n 'set': function (attr, val) {\n this.attributes = this.attributes || {};\n\n if (this.attributes[attr] === val) {\n return;\n }\n var oldVal = this.attributes[attr];\n this.attributes[attr] = val;\n this.trigger('change:' + attr, this, val, oldVal);\n },\n 'clone': function () {\n return _.clone(this.attributes);\n }\n }, Events);\n\n export default SimpleModel;\n\n","/* eslint-disable no-param-reassign */\nimport utils from 'utils/utils';\nimport Model from 'utils/model';\n\nconst Category = function (options) {\n this.attributes = {\n id: 0\n };\n\n this.initialize(options);\n};\n\nCategory.prototype = {\n initialize(data) {\n utils.extend(this.attributes, this.parse(data));\n },\n\n parse(data) {\n if (data.additional) {\n utils.each(data.additional, (value, key) => {\n if (typeof data[key] === 'undefined') {\n data[key] = value;\n }\n });\n\n data.images = utils.extend({}, data.images || {}, {\n background: data.background,\n main: data.image,\n logo: data.logo,\n playerLogo: data.playerLogoImage\n });\n\n data = utils.omit(data, ['additional', 'background', 'image', 'logo', 'playerLogoImage']);\n\n try {\n data.relatedExperiments = data.metadata.relatedExperiments.value.split(',');\n } catch (e) {\n data.relatedExperiments = [];\n }\n }\n\n return data;\n },\n\n getRelatedExperiments() {\n return this.get('relatedExperiments') || [];\n },\n\n isSeries() {\n return this.get('isSeries') === true;\n },\n\n getLastAsset() {\n return this.get('lastAsset') || {}; // cant be object because of circular dependency\n }\n};\n\nutils.extend(Category.prototype, Model);\n\nexport default Category;\n","/* eslint-disable no-param-reassign */\nimport utils from 'utils/utils';\nimport Model from 'utils/model';\nimport config from 'player/config';\nimport Category from './category';\n\nfunction handleErrors(response) {\n if (!response.ok) {\n return Promise.reject(response);\n }\n return response;\n}\n\nconst Asset = function (options) {\n this.attributes = {\n id: 0\n };\n\n this.initialize(options);\n};\n\nAsset.prototype = {\n initialize: function (data) {\n utils.extend(this.attributes, this.parse(data));\n },\n\n url: function() {\n const additional = [\n 'settings', 'chapters', 'cuePoints', 'externalId', 'barrels',\n 'externalCategoryId', 'nextAsset', 'sourceFiles', 'subtitles',\n 'metadata', 'access', 'tags', 'stories'\n ];\n\n return config.api.getUrl(this.getVendor(), `/assets/${this.get('id')}?additional=${additional.join('|')}`);\n },\n\n parse: function(data) {\n data = data || {};\n\n function unifyTimestamp(time) {\n if (!time) {\n return null;\n }\n\n if (time.toString().length === 10) {\n return time * 1000;\n }\n\n return time;\n }\n\n // rewrite additional fields\n if (data.additional) {\n utils.each(data.additional, (value, key) => {\n // featured chapters are fetched on the lists\n // merge them\n if (key === 'featuredChapters') {\n key = 'chapters';\n }\n\n if (key === 'subtitles') {\n key = 'captions';\n }\n\n if (typeof data[key] === 'undefined') {\n data[key] = value;\n }\n });\n\n if (data.additional.settings) {\n if (data.additional.settings.startIndexPoint) {\n data.startIndexPoint = data.additional.settings.startIndexPoint;\n }\n\n if (!utils.isUndefined(data.additional.settings.ageLimit)) {\n data.ageLimit = data.additional.settings.ageLimit;\n }\n }\n\n if (data.additional.sourceFiles) {\n data.sourceFiles = data.additional.sourceFiles;\n }\n }\n\n if (data.series) {\n data.season = parseInt(data.series.seasonNumber, 10);\n data.episode = parseInt(data.series.episodeNumber, 10);\n\n data = utils.omit(data, 'series');\n }\n\n // multiply timestamps by 1000 to use ms instead of s\n if (data.flightTimes) {\n data.flightTimes = {\n start: (data.flightTimes.start ? unifyTimestamp(data.flightTimes.start) : null),\n end: (data.flightTimes.end ? unifyTimestamp(data.flightTimes.end) : null)\n };\n }\n\n data.created = (data.created ? unifyTimestamp(data.created) : null);\n data.published = (data.published ? unifyTimestamp(data.published) : null);\n data.updated = (data.updated ? unifyTimestamp(data.updated) : null);\n\n if (data.category) {\n data.category = new Category(data.category);\n }\n\n if (data.chapters) {\n utils.each(data.chapters, (chapter, index) => {\n chapter.time = utils.string.getTimeFormatted(chapter.timeline);\n chapter.index = (index + 1);\n });\n }\n\n // next asset is optional, fill with basic object to avoid undefined errors\n if (!data.nextAsset) {\n data.nextAsset = {};\n }\n\n data.tags = data.tags || [];\n\n if(data._embedded && data._embedded.tags) {\n data.tags = data._embedded.tags;\n }\n\n return data;\n },\n\n fetch() {\n return fetch(this.url())\n .then(handleErrors)\n .then(response => response.json())\n .then(json => {\n Object.assign(this.attributes, this.parse(json));\n this.trigger('fetchSuccess');\n\n return this;\n })\n .catch((response) => {\n this.trigger('fetchError', response);\n });\n },\n\n getVendor: function() {\n return this.get('vendor');\n },\n\n destroy: function() {\n // in case of any cleanup\n },\n\n getAgeLimit: function() {\n return utils.isNumber(this.get('ageLimit')) ? this.get('ageLimit') : -1;\n },\n\n getNextAssetId() {\n return (this.get('nextAsset') && this.get('nextAsset').id) || null;\n },\n\n getNextAssetSource() {\n const metadataKey = 'relatedExperiments';\n const metadata = this.get('metadata');\n\n if(metadata && metadata[metadataKey]) {\n // byId manually set\n if(metadata[metadataKey] === 'byId') {\n return 'manual';\n }\n\n return metadata[metadataKey];\n }\n\n return null;\n },\n\n /**\n * Get chapter by its index (numbered from 1)\n *\n * @param chapterIndex\n * @returns {*} or undefined if not found\n */\n getChapter: function(chapterIndex) {\n return this.getChapters()[chapterIndex - 1];\n },\n\n /**\n * Get chapters for single stream\n *\n * @returns {*|Array}\n */\n getChapters: function () {\n return this.get('chapters') || [];\n },\n\n getThumbnail: function() {\n return this.get('images').main;\n },\n\n getTitle: function() {\n return this.get('title');\n },\n\n getCategory: function() {\n return this.get('category');\n }\n};\n\nutils.extend(Asset.prototype, Model);\n\nexport default Asset;\n","\n var requestNumber, currentServerId, image, config, getServer, getImageTransform, serversAmount;\n\n getServer = (function() {\n var MAX_REQUEST_PER_SERVER = 6;\n\n return function(imageId) {\n if(!imageId) {\n return '';\n }\n\n if(requestNumber === MAX_REQUEST_PER_SERVER) {\n if(currentServerId === serversAmount) {\n currentServerId = -1;\n }\n\n requestNumber = 0;\n currentServerId++;\n }\n\n requestNumber++;\n\n return imageId.replace(\"imbo\", config.servers[currentServerId]);\n };\n }());\n\n function getImageQuality(pixelRatio) {\n return (pixelRatio >= 2) ? 50 : 80;\n }\n\n function normalizeTransformSize(size, pixelRatio) {\n // return default value\n return [\n size,\n getImageQuality(pixelRatio)\n ];\n }\n\n function getClosestSize(transformSizes, maxDimension) {\n return transformSizes.reduce(function (prev, curr) {\n return (Math.abs(curr - maxDimension) < Math.abs(prev - maxDimension) ? curr : prev);\n });\n }\n\n function getPixelRatio() {\n // we do not support px lower than 1 and bigger than 2\n return Math.max(1, Math.min(2, config.getPixelRatio()));\n }\n\n /**\n * Returns transformation for given image key and width\n * Adjusts the best\n */\n getImageTransform = (function() {\n var cache = {};\n\n return function(key, width, height) {\n var pixelRatio = getPixelRatio(),\n cacheKey = key + width + height + pixelRatio;\n\n // first check if there is cached object\n if(cache[cacheKey]) {\n return cache[cacheKey];\n }\n\n var id = key.split('.'),\n i = 0,\n idLen = id.length,\n transformType = (height > width) ? 'autoWidth' : 'autoHeight',\n transformSizes = config.sizes, transform, maxDimension;\n\n while(i < idLen) {\n transformSizes = transformSizes[id[i]];\n\n if(!transformSizes) {\n throw new Error('Image transformation missing for key ' + key);\n }\n\n i++;\n }\n\n transformSizes = transformSizes[transformType];\n\n // transformation is adjusted to not 'auto' side\n maxDimension = (transformType === 'autoHeight') ? width : height;\n maxDimension = maxDimension * pixelRatio;\n\n var dimensions = normalizeTransformSize(getClosestSize(transformSizes, maxDimension), pixelRatio);\n\n // auto width transform starts with 'x'\n // http://svp.vg.no/svp/api/v1/docs/\n transform = (transformType === 'autoWidth') ? 'x' : '';\n transform = transform + dimensions[0] + 'q' + dimensions[1];\n\n cache[cacheKey] = transform;\n\n return transform;\n };\n }());\n\n image = {\n initialize: function(options) {\n config = options;\n serversAmount = options.servers.length - 1;\n requestNumber = 0;\n currentServerId = 0;\n },\n getImageSrc: function(imageId, key, width, height) {\n if(imageId) {\n var extension = (imageId.indexOf('.jpg') === -1 && imageId.indexOf('.png') === -1 ? '.jpg' : '');\n return getServer(imageId) + extension + '?t[]=' + getImageTransform(key, width, height);\n }\n return null;\n }\n };\n\n export default image;\n\n","import utils from 'utils/utils';\nimport image from 'utils/image';\nimport Model from 'utils/model';\nimport ServerTime from 'utils/server-time';\nimport config from 'player/config';\n\nconst Stream = function (options) {\n this.attributes = {\n id: 0\n };\n\n this.initialize(options);\n};\n\nStream.prototype = {\n initialize: function (data) {\n utils.extend(this.attributes, this.parse(data));\n },\n\n /**\n * Parse data from asset\n * Be aware, data went through Asset.parse method\n *\n * @param data\n */\n parse: function(data) {\n const result = {\n id: data.id,\n vendor: data.vendor,\n title: data.title,\n\n streams: {\n hls: data.streamUrls.hls,\n hds: data.streamUrls.hds,\n mp4: data.streamUrls.mp4 ? [data.streamUrls.mp4] : []\n },\n status: data.status,\n type: data.streamType,\n mediaType: data.assetType,\n streamConfiguration: data.streamConfiguration,\n\n images: {\n main: data.images.main,\n snapshots: data.images.snapshots || null\n },\n\n captions: data.captions || [],\n\n flightTimes: {\n start: null,\n end: null\n },\n\n playback: {\n begin: null,\n end: null\n },\n\n sourceFiles: data.sourceFiles || [],\n externalId: data.externalId || null,\n category: data.category\n };\n\n if (data.duration) {\n result.duration = data.duration / 1000;\n }\n\n if (data.metadata) {\n result.is360 = data.metadata.is360 === 'true';\n }\n\n // this array contains other mp4 streams but without main mp4\n if (data.streamUrls.pseudostreaming) {\n result.streams.mp4 = result.streams.mp4.concat(data.streamUrls.pseudostreaming);\n }\n\n if(data.additional && data.additional.metadata && data.additional.metadata.audioStream) {\n result.streams.audio = data.additional.metadata.audioStream;\n }\n\n // override start and end if set in api\n if (data.flightTimes) {\n result.flightTimes = {\n start: (data.flightTimes.start ? data.flightTimes.start : null),\n end: (data.flightTimes.end ? data.flightTimes.end : null)\n };\n }\n\n if (data.playback) {\n result.playback = {\n begin: data.playback.begin,\n end: data.playback.end\n };\n }\n\n // additional stream settings\n if (data.settings) {\n result.showAds = data.settings.showAds;\n }\n\n // cue points, empty array if nothing set\n result.cuePoints = data.cuePoints;\n\n // add midroll in 10s TODO remove after tests\n // result.cuePoints = [31];\n return result;\n },\n\n getId: function() {\n return this.get('id');\n },\n\n getVendor: function() {\n return this.get('vendor');\n },\n\n getCategory: function () {\n return this.get('category');\n },\n\n hasProperty: function(property) {\n return this.get('streamConfiguration').properties.indexOf(property) > -1;\n },\n\n /**\n * Get duration stored in API\n *\n * @returns {*}\n */\n getDuration: function () {\n return this.get('duration');\n },\n\n getCuePoints: function () {\n return this.get('cuePoints');\n },\n\n /**\n * Check if stream has Akamai Secure Token\n * @returns {*}\n */\n isSecure: function() {\n return this.hasProperty('tokenSecured');\n },\n\n /**\n * Check if stream is available only in certain areas\n * @returns {*}\n */\n isGeoblocked: function() {\n return this.hasProperty('geoblocked');\n },\n\n isLive: function() {\n return this.get('type') === 'live';\n },\n\n wasLive: function() {\n return this.get('type') === 'wasLive';\n },\n\n isActive: function () {\n return this.get('status') === 'active' && !this.isPast();\n },\n\n isFuture: function () {\n return (this.get('flightTimes') && this.get('flightTimes').start\n ? this.get('flightTimes').start > new Date().getTime() : false);\n },\n\n isPast: function () {\n return (this.get('flightTimes') && this.get('flightTimes').end\n ? (this.get('flightTimes').end < new Date().getTime()) : false);\n },\n\n hasHds: function() {\n return this.getUrl('HDS').indexOf('f4m') > -1;\n },\n\n /**\n * Streams might not be available while asset is created\n *\n * @returns {boolean}\n */\n hasPlayableSource: function () {\n if (this.getTimeToStart() > 0 || !this.isActive()) {\n return false;\n }\n\n return true;\n },\n\n getUrl: function(streamType) {\n const isOnHttp = window.location.protocol.toLowerCase().startsWith('http:');\n const type = streamType.toLowerCase();\n\n let streamUrl = this.get('streams')[type];\n\n if (utils.device.isIE() && isOnHttp) {\n streamUrl = streamUrl.replace('https', 'http');\n }\n\n return streamUrl;\n },\n\n getPoster: function() {\n return this.get('images').main;\n },\n\n /**\n * Get poster src adjusted to given width\n *\n * @param containerWidth\n * @returns {*}\n */\n getPosterSrc: function(containerWidth) {\n return image.getImageSrc(this.getPoster(), 'poster', containerWidth);\n },\n\n /**\n * Get snapshots url\n * @returns {*} - url string or null if snapshots not found\n */\n getSnapshots: function() {\n return `${config.api.thumbnailsUrl + this.getVendor()}/assets/${this.getId()}`;\n },\n\n /**\n * Not every asset has snapshot (lives, wasLives)\n */\n hasSnapshots: function() {\n return this.get('images').snapshots !== null;\n },\n\n /**\n * Get captions associated with stream\n *\n * @returns {boolean}\n */\n getCaptions: function() {\n return this.get('captions') || [];\n },\n\n /**\n * Check if mp4 streams are available\n *\n * @returns {boolean}\n */\n hasMp4Streams: function() {\n return this.get('streams').mp4.length > 0;\n },\n\n hasAudioOnlyStream() {\n return typeof this.get('streams').audio === \"string\";\n },\n\n getMp4Streams: function() {\n const streams = [];\n\n // mp4 streams are not available on live and secure hd\n if (this.hasMp4Streams()) {\n utils.each(this.get('streams').mp4, stream => {\n const streamData = stream.split('/').pop().replace('.mp4', '').split('_');\n\n streams.push({\n source: stream,\n width: streamData[0],\n height: streamData[1],\n bitrate: streamData[2]\n });\n });\n }\n\n return streams;\n },\n\n /**\n * Check if asset is published\n * Method relay on server time to avoid timezone differences\n *\n * @returns {number} seconds to live\n */\n getTimeToStart: function () {\n return (this.get('flightTimes').start - ServerTime.getTime()) / 1000;\n },\n\n\n /**\n * Asset can be virually sliced into small chunks\n * These are only indicators and do not slice stream\n *\n * @param position\n * @returns {*}\n */\n getPlaybackTime: function(position) {\n const playback = this.get('playback');\n\n if (position === 'begin') {\n if (this.get('playAhead') > 0) {\n return this.get('playAhead');\n }\n\n return (playback.begin > 0) ? playback.begin : null;\n }\n\n if (position === 'end' && playback.end > 0) {\n return playback.end;\n }\n\n return null;\n },\n\n /**\n * Check if ads are turned on\n *\n * @returns {boolean}\n */\n hasCreatives: function() {\n return this.get('na') !== true;\n },\n\n /**\n * External id\n * Used for JW Player statistics\n */\n getExternalId: function() {\n return this.get('externalId');\n },\n\n /**\n * Stream display mode\n *\n * @returns {*}\n */\n getDisplayType: function () {\n if (this.is360()) {\n return '360';\n }\n\n return '2d';\n },\n\n /**\n * Check if stream is 360 video\n */\n is360: function () {\n return this.get('is360') === true;\n },\n\n /**\n * Check wethever stream has ads disabled\n */\n hasAdsDisabled: function () {\n return this.get('showAds') === false;\n }\n};\n\nutils.extend(Stream.prototype, Model);\n\nexport default Stream;\n","import config from 'player/config';\n\nfunction handleErrors(response) {\n if (!response.ok) {\n return Promise.reject(response);\n }\n return response;\n}\n\nconst api = (vendor, endpoint) => {\n return fetch(config.api.getUrl(vendor, endpoint))\n .then(handleErrors)\n .then(response => response.json());\n};\n\n\nexport default api;","import api from '../api';\n\nconst getEndpoint = (categoryId, seasonNumber) => {\n return `/categories/${categoryId}/seasons/${seasonNumber}/assets`;\n};\n\nconst getNextFromEpisodeList = (assetId, assets) => {\n if (!assets) {\n return null;\n }\n\n return assets[assets.findIndex(item => item.id === assetId) - 1];\n};\n\nconst getNextEpisode = async ({ vendor, assetId, categoryId, season }) => {\n const response = await api(\n vendor,\n getEndpoint(categoryId, season)\n );\n\n const assets = (response && response.assets);\n\n // empty assetId, get first episode from series which is last in list\n if(assetId === null) {\n return assets[assets.length - 1] || null;\n }\n\n return getNextFromEpisodeList(assetId, assets);\n};\n\n\nexport default {\n getNextEpisode\n};","import api from '../api';\n\nconst getEndpoint = (assetId, limit = 20, engine) => {\n if(engine.indexOf('related-exprmnts') > -1) {\n return `/assets/${engine}/${assetId}`;\n }\n return `/assets/${assetId}/${engine}?limit=${limit}`;\n};\n\n/**\n * Fetch related list from related endpoint\n *\n * @param vendor\n * @param assetId\n * @param limit\n * @param engine - curently supported engines related (tags); related-ml (machine learning related);\n * related-exprmnts build on top of ML engine with additional adjustments\n *\n * @returns {Promise<*>}\n */\nconst getList = async ({ vendor, assetId, limit = 20, engine = 'related' }) => {\n const data = await api(\n vendor,\n getEndpoint(assetId, limit, engine)\n );\n\n return data && data._embedded && data._embedded.assets;\n};\n\n\nexport default {\n getList\n};\n","import api from '../api';\n\nconst getAssetEndpoint = (id) => {\n const additional = [\n 'settings', 'chapters', 'cuePoints', 'externalId', 'barrels',\n 'externalCategoryId', 'nextAsset', 'sourceFiles', 'subtitles',\n 'metadata', 'access', 'tags', 'stories'\n ];\n\n return `/assets/${id}?additional=${additional.join('|')}`;\n};\n\nconst getListEndpoint = ({ params = [], filters = [] }) => {\n const queryParams = [...params];\n\n if(filters.length > 0) {\n queryParams.push(`filters=${filters.join('|')}`);\n }\n\n return `/assets${queryParams.length > 0 ? `?${queryParams.join('&')}` : ''}`;\n};\n\nconst getById = async ({ vendor, assetId }) => {\n return await api(\n vendor,\n getAssetEndpoint(assetId)\n );\n};\n\nconst getByIds = async ({ vendor, ids }) => {\n const response = await api(\n vendor,\n getListEndpoint({\n params: [`limit=${ids.length}`],\n filters: [`assetId::${ids.join(',')}`]\n })\n );\n\n return response._embedded && response._embedded.assets || []\n};\n\nconst getClosestAsset = async ({ vendor, order, categoryId, assetId, publishedDate }) => {\n const endpoint = getListEndpoint({\n params: [\n 'limit=1',\n 'sort=-published',\n // depending on from which \"side\" we're asking\n (order === 'next' ? `after=${publishedDate + 1}` : `before=${publishedDate - 1}`)\n ],\n\n filters: [\n `categoryId::${categoryId}`\n ]\n });\n\n const response = await api(\n vendor,\n endpoint\n );\n\n // parse response\n if (response && response._embedded && response._embedded.assets) {\n const [nextAsset] = response._embedded.assets;\n\n if (nextAsset && nextAsset.id !== assetId) {\n return nextAsset;\n }\n }\n\n return null;\n};\n\nexport default {\n getById,\n getByIds,\n getClosestAsset\n}","const EXCLUDED_ASSETS_KEY = 'svp-excludedAssets';\n\n/**\n * Each vendor has own storage for excluded keys\n *\n * @param vendor\n * @returns {string}\n */\nconst getKey = function(vendor) {\n return `${EXCLUDED_ASSETS_KEY}-${vendor}`;\n};\n\nconst ExcludedAssets = {\n add: function(vendor, id) {\n let assets = this.getAll(vendor);\n\n if (id) {\n if (assets.indexOf(id) === -1) {\n // put at top as the older stream will be removed first\n assets.unshift(id);\n // limit only to 10 restricted streams\n assets = assets.splice(0, 10);\n }\n\n this.getStorage().setItem(getKey(vendor), JSON.stringify(assets));\n }\n },\n\n getAll: function(vendor) {\n return JSON.parse(this.getStorage().getItem(getKey(vendor))) || [];\n },\n\n getStorage: function() {\n return window.localStorage;\n }\n};\n\nexport default ExcludedAssets;\n","import ExcludedAssets from '../excluded-assets';\n\nconst omitRecurring = (vendor, assetId, assets) => {\n const excludedAssets = ExcludedAssets.getAll(vendor);\n\n // parse response\n if (!assets) {\n return null\n }\n\n let nextAsset = null;\n\n for (let i = 0; i < assets.length; i += 1) {\n nextAsset = assets[i] || {};\n\n if (nextAsset.id !== assetId && excludedAssets.indexOf(nextAsset.id) === -1) {\n // exclude asset from recommended list\n ExcludedAssets.add(vendor, nextAsset.id);\n return nextAsset;\n }\n }\n\n return null;\n};\n\nconst getFromArray = (array, randomIndex) => {\n return array[Math.floor(array.length * randomIndex)];\n};\n\nconst getSource = (useMlEngine, experimentsList, experimentVariant) => {\n if(useMlEngine === false) {\n return 'related';\n }\n\n if(experimentsList.length > 1) {\n return `related-exprmnts/${getFromArray(experimentsList, experimentVariant)}`;\n }\n\n // no experiments set\n // use default against related ml without enhancements\n return getFromArray(['related-ml', 'related-exprmnts/default'], experimentVariant);\n};\n\n\nexport default {\n omitRecurring,\n getSource\n}","/* eslint-disable no-underscore-dangle */\nimport Asset from './asset';\nimport Stream from './stream';\n\nimport seriesService from 'player/services/api/series';\nimport relatedService from 'player/services/api/related';\nimport assetService from 'player/services/api/asset';\n\nimport relatedHelpers from './recommended/related';\n\nconst createResponse = ({ nextAsset, source }) => ({\n nextAsset: nextAsset ? new Asset(nextAsset) : null,\n source\n});\n\nconst handlers = {\n /**\n * Check if given asset has next stream\n * Used for setting/disabling postrolls\n *\n * @param asset\n * @returns {boolean}\n */\n hasPlayNext(asset, includeCategory) {\n if (asset.get('streamType') === 'live') {\n return false;\n }\n\n if (asset.get('nextAsset').id) {\n return true;\n }\n\n if (includeCategory === true) {\n return this.hasNextInCategory(asset);\n }\n\n return false;\n },\n\n /**\n * Check if given asset has next stream\n *\n * @param asset\n * @returns {boolean}\n */\n hasNextInCategory(asset) {\n const category = asset.getCategory();\n\n if (category) {\n if (category.isSeries()) {\n return true;\n }\n\n if (category.get('autoPlayNextAsset')) {\n return true;\n }\n }\n\n return false;\n },\n\n\n /**\n * Fetch next asset from asset series\n * Rejected when next asset is not found\n *\n * @param asset\n */\n async fetchNextFromSeries({ vendor, assetId, season, categoryId }) {\n const nextAsset = await seriesService.getNextEpisode({\n vendor,\n assetId,\n categoryId,\n season\n });\n\n return createResponse({\n source: 'series',\n nextAsset\n });\n },\n\n /**\n * Fetch next asset from parent category\n * Rejected when next asset is not found\n *\n * @param asset object\n * @param settings\n */\n async fetchNextFromCategory ({ vendor, published, categoryId, order }) {\n const nextAsset = await assetService.getClosestAsset({\n vendor,\n published,\n order,\n categoryId\n });\n\n return createResponse({\n source: `category-${order}`,\n nextAsset,\n });\n },\n\n /**\n * Fetch next asset by providing it's id\n *\n * @param vendor\n * @param assetId\n * @param source\n * @returns {Promise<{nextAsset, source}>}\n */\n async fetchNextById({ vendor, assetId, source = null }) {\n const nextAsset = await assetService.getById({\n vendor,\n assetId\n });\n\n return createResponse({\n source: source === null ? 'byId' : `byId-${source}`,\n nextAsset\n });\n },\n\n async fetchNextFromRelatedEngine({ vendor, assetId, source = 'related' }) {\n const assets = await relatedService.getList({\n engine: source,\n vendor,\n assetId\n });\n\n const nextAsset = relatedHelpers.omitRecurring(vendor, assetId, assets);\n\n return createResponse({\n nextAsset,\n source\n })\n },\n\n /**\n * Fetch next for given asset\n * Cascade lookup from direct linkage (nextAsset.id) to retrieving from category\n * Rejected when nextAsset is not found\n *\n * @param asset\n * @returns {Promise}\n */\n async getNext(asset, { useMlEngine }) {\n const vendor = asset.getVendor();\n const assetId = asset.get('id');\n const category = asset.getCategory();\n const nextAssetId = asset.getNextAssetId();\n\n // top priority for assets set by humans\n if(nextAssetId) {\n return this.fetchNextById({\n assetId: nextAssetId,\n source: useMlEngine === true ? asset.getNextAssetSource() : null,\n vendor\n });\n }\n\n const categoryId = category.get('id');\n\n // fetch next from series as user expects next episode to be played\n // when there is no next episode then we just display recommended grid\n if(category.isSeries()) {\n const fetchNextParams = {\n season: parseInt(asset.get('season'), 10),\n categoryId,\n vendor,\n assetId\n };\n\n const result = await this.fetchNextFromSeries(fetchNextParams);\n\n // fetch next episode from following season\n if(!result.nextAsset) {\n return this.fetchNextFromSeries(Object.assign(fetchNextParams, {\n season: fetchNextParams.season + 1,\n assetId: null\n }));\n }\n return result;\n }\n\n // fetch next only for categories which allows it\n if(category.get('autoPlayNextAsset') !== false) {\n // with fallback to category related when there is no video from ml engine\n try {\n return await this.fetchNextFromRelatedEngine({\n source: relatedHelpers.getSource(\n useMlEngine,\n category.getRelatedExperiments(),\n Math.random()\n ),\n vendor,\n assetId\n });\n } catch(e) {\n return await this.fetchNextFromCategory({\n published: asset.get('published') / 1000,\n order: (category.getLastAsset().id === assetId ? 'before' : 'after'),\n vendor,\n categoryId\n });\n }\n }\n\n return createResponse({\n nextAsset: null,\n source: 'next-disabled'\n });\n },\n\n /**\n * Fetch next for given asset\n * Cascade lookup from direct linkage (nextAsset.id) to retrieving from category\n * Rejected when nextAsset is not found\n *\n * @param asset\n * @param options\n * @returns {Promise}\n */\n async fetchNext(asset, options) {\n const { nextAsset, source } = await this.getNext(asset, options);\n\n if(!nextAsset) {\n return Promise.reject({\n reason: 'nextAssetNotFound',\n source\n });\n }\n\n const stream = new Stream(nextAsset.attributes);\n\n if(!stream.isActive()) {\n return Promise.reject({\n reason: 'nextAssetNotActive',\n source\n });\n }\n\n return {\n nextAsset,\n source\n }\n }\n};\n\nexport default handlers;\n","\nconst Locale = function(translations) {\n this.translations = translations;\n};\n\nLocale.prototype = {\n /**\n * Translate string by key from translation dictionary\n * Return translated key or substitute (if provided) or key itself\n * @param key\n * @returns {*}\n */\n translate: function(key, substitute) {\n // typeof to check keys like \"0\"\n return this.translations[key] || (typeof substitute === 'undefined' ? key : substitute);\n },\n\n /**\n * Get localized month name\n * Returns month number if translation is not found\n *\n * @param date\n * @returns {*|number}\n */\n getMonthName: function(date) {\n const months = this.translations.months || [];\n\n return months[date.getMonth()] || date.getMonth();\n }\n};\n\nexport default Locale;\n","import config from 'player/config';\nimport utils from 'utils/utils';\n\nfunction isDomainInArray(origin, domains) {\n let domain;\n let pos;\n let domainBeginning;\n\n // check if domain has access for given provider\n // otherwise deny it\n // allow all dev builds set settings\n if (config.version === 'dev') {\n return true;\n }\n\n // list is not provided\n if (!utils.isArray(domains)) {\n return false;\n }\n\n const len = domains.length;\n\n for (let i = 0; i < len; i += 1) {\n domain = domains[i];\n\n // subdomain parsing, subdomain has to end with domain\n if (domain[0] === '*') {\n // remove asterisk\n domain = domain.slice(1);\n pos = origin.indexOf(domain);\n\n domainBeginning = origin[origin.length - domain.length - 1];\n\n // check if origin has exactly the same ending of domain\n if (pos > -1 && origin.length - pos === domain.length\n && (domainBeginning === undefined || domainBeginning === '.')) {\n return true;\n }\n\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (domain.indexOf(origin) > -1) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Inherit data from parent array to child\n * Prevents undefined to persist if one of given array is empty\n *\n * @param parent\n * @param child\n * @returns {Array.}\n */\nfunction inherit(parent, child) {\n return (parent || []).concat(child || []);\n}\n\nconst Domain = {\n domain: null,\n\n // default settings configuration\n settings: {\n // boolean Preview of not published videos\n preview: false,\n // completely turn off all ads\n na: false\n },\n\n vendors: {},\n\n initialize: function (domain) {\n this.domain = domain;\n },\n\n /**\n * Fetch permissions for extended settings\n *\n * @param vendor\n * @returns {*}\n */\n fetch: function (vendor) {\n if (!this.vendors[vendor]) {\n this.vendors[vendor] = Promise.resolve(config.domains);\n }\n\n return this.vendors[vendor];\n },\n\n /**\n * Check whatever custom settings may be used on current domain or not\n *\n * @param vendor - api key vendor\n * @returns {Promise}\n */\n getPermissions: function (vendor) {\n return this.fetch(vendor).then(data => {\n const result = {};\n\n utils.each(data, (item, key) => {\n result[key] = isDomainInArray(\n this.domain,\n inherit(item.global, item[vendor])\n );\n });\n\n return result;\n });\n },\n\n /**\n * Check if current domain is blacklisted\n *\n * @param vendor - api vendor key\n * @returns {*}\n */\n isBlacklisted: function (vendor) {\n const { blacklist } = config.domains;\n\n // check if domain has access for given provider\n // otherwise deny it\n // allow all dev builds set settings\n if (config.version === 'dev') {\n return false;\n }\n\n return isDomainInArray(this.domain, inherit(blacklist.global, blacklist[vendor]));\n }\n};\n\nexport default Domain;\n","import utils from 'utils/utils';\nimport config from 'player/config';\n\nimport { TOKEN_FETCH_ERROR } from '../playback/config/status-codes';\n\nconst fetchToken = function(params) {\n this.isFetching = true;\n\n return new Promise((resolve, reject) => {\n // fetch new token\n utils.ajax(this.url(params), response => {\n this.expire = +new Date() + 1000;\n this.value = response.responseText;\n this.isFetching = false;\n resolve(this.value);\n }, () => {\n this.isFetching = false;\n reject(TOKEN_FETCH_ERROR);\n }, true);\n });\n}\n\nclass Token {\n constructor(assetId, maxBitrate) {\n /**\n * Id of SVP related asset\n */\n this.assetId = assetId;\n\n /**\n * Akamai token value retrieved from SVP api\n * @type {null}\n */\n this.value = null;\n /**\n * Expiration time, timestamp\n * @type {null}\n */\n this.expire = null;\n\n /**\n * Maximum allowed bitrate for stream\n * @type {null}\n */\n this.maxBitrate = maxBitrate || null;\n\n this.request = null;\n this.isFetching = false;\n }\n\n fetch(configuration) {\n if (!this.isValid()) {\n if (this.request && this.isFetching) {\n return this.request;\n }\n\n if (typeof configuration === 'function') {\n this.request = configuration(this.assetId).then(fetchToken.bind(this));\n } else {\n this.request = fetchToken.call(this);\n }\n }\n\n return this.request;\n }\n\n url(params) {\n const query = [\n `vendor=${config.api.vendor}`\n ];\n\n if (params && params.expiry && params.value) {\n query.push(`assetId=${this.assetId}`);\n query.push(`expires=${params.expiry}`);\n query.push(`hmac=${params.value}`);\n } else {\n query.push('acl=/*');\n }\n\n if (this.maxBitrate) {\n query.push(`maxBitrate=${this.maxBitrate}`);\n }\n\n return `${config.api.tokenUrl}?${query.join('&')}`;\n }\n\n getValue() {\n return this.value;\n }\n\n isValid() {\n // on load expire is null therefore it will always return false\n return (+new Date() < this.expire);\n }\n}\n\n\nutils.extend(Token.prototype, utils.Events);\n\nexport default Token;\n","import config from 'player/config';\nimport utils from 'utils/utils';\n\nfunction getDeviceType() {\n return utils.device.getDeviceType();\n}\n\nfunction getCountryCode(vendor) {\n return (vendor === 'ab' || vendor === 'svd') ? 'se' : 'no';\n}\n\nexport default {\n getVmapTag: function(params) {\n const queryObject = utils.extend({\n cb: (Math.round(Math.random() * 100000000000))\n }, params);\n\n return `${config.ads.appnexus.vmap}?${utils.jsonToUrl(queryObject)}`;\n },\n\n getAstConfig: function (tagOptions, globalOptions) {\n return utils.extend({}, utils.merge(globalOptions, tagOptions));\n },\n\n getDefaultParams: function(stream) {\n const vendor = stream.getVendor();\n\n return {\n countryCode: getCountryCode(vendor),\n supplyType: `web_${getDeviceType()}`,\n publisherName: vendor,\n slotIds: {\n preroll: 1,\n midroll: 2,\n postroll: 3\n }\n };\n }\n};\n","import utils from 'utils/utils';\nimport appnexusTag from './appnexus-tag-builder';\n\nconst JwAdsConfig = function (stream) {\n this.stream = stream;\n this.config = {};\n this.params = [];\n};\n\nJwAdsConfig.prototype = {\n setParams: function (params) {\n this.params = params;\n },\n\n add: function (adSlotConfig, offset, adLabel) {\n // do not add tag when id is empty\n if (adSlotConfig) {\n this.config[adLabel + Math.floor(Math.random() * 100) + 1] = {\n offset: offset,\n tag: appnexusTag.getVmapTag(utils.merge(this.params, adSlotConfig))\n };\n }\n },\n\n getConfig: function () {\n return this.config;\n }\n};\n\nexport default JwAdsConfig;\n","import utils from 'utils/utils';\nimport appnexusTagBuilder from './appnexus-tag-builder';\nimport JwAdsConfig from './appnexus-jw-config';\n\n// move to appnexus jw\nfunction getAdsConfig(adConfig, stream, settings) {\n const adSlots = adConfig.adSlots || {};\n const params = adConfig.params || [];\n const adsConfig = new JwAdsConfig(stream);\n const { hasNext } = (settings || {});\n\n adsConfig.setParams(params);\n adsConfig.add(adSlots.preroll, 'pre', 'preroll');\n\n utils.each(stream.getCuePoints(), function (cuePoint) {\n if (cuePoint && cuePoint.timeline) {\n adsConfig.add(adSlots.midroll, cuePoint.timeline, 'midroll');\n }\n });\n\n // postroll is disabled when playnext is available\n if (hasNext === false || (hasNext !== true && stream.get('hasNext') === false)) {\n adsConfig.add(adSlots.postroll, 'post', 'postroll');\n }\n\n return adsConfig.getConfig();\n}\n\nfunction getParams(params, memberId) {\n if (memberId) {\n return utils.extend({}, {\n member: memberId\n }, params);\n }\n\n return params;\n}\n\nfunction parseAdPlacements(adPlacements, globalParams) {\n const placements = {};\n\n utils.each(adPlacements, function (values, placementId) {\n placements[placementId] = appnexusTagBuilder.getAstConfig(values, globalParams);\n });\n\n return placements;\n}\n\nfunction getJwAdSchedule(clientConfig, stream, settings) {\n const { adSlots } = clientConfig;\n\n if (adSlots) {\n return getAdsConfig({\n adSlots: adSlots.schedule,\n params: getParams(adSlots.params, clientConfig.member)\n }, stream, settings);\n }\n\n return {};\n}\n\nfunction getAdPlacements(clientConfig) {\n const { adPlacements } = clientConfig;\n\n if (clientConfig.member && adPlacements) {\n return parseAdPlacements(\n adPlacements.schedule,\n getParams(adPlacements.params, clientConfig.member)\n );\n }\n\n return {};\n}\n\nfunction getClientConfig(stream, settings) {\n // ads are disabled\n // check stream config also\n if (settings.na === true || !settings.adn || stream.hasAdsDisabled()) {\n return Promise.resolve(null);\n }\n\n return settings.adn(stream, appnexusTagBuilder.getDefaultParams(stream));\n}\n\nexport default {\n getConfig: function (stream, settings) {\n return getClientConfig(stream, settings).then(function (clientConfig) {\n // null equals to empty ads\n if (clientConfig === null) {\n return {};\n }\n\n return {\n adSchedule: getJwAdSchedule(clientConfig, stream, settings),\n adPlacements: getAdPlacements(clientConfig, stream, settings),\n adOptions: clientConfig.options || {}\n };\n });\n },\n\n getLiveMidrollTag: function (maxDuration, stream, settings) {\n // eslint-disable-next-line consistent-return\n return getClientConfig(stream, settings).then(function (clientConfig) {\n const adSlots = clientConfig && clientConfig.adSlots;\n const midroll = adSlots && adSlots.schedule && adSlots.schedule.midroll;\n const params = utils.extend({}, (adSlots || {}).params);\n\n params.vmaxduration = maxDuration;\n\n if (midroll) {\n return appnexusTagBuilder.getVmapTag(utils.merge(params, midroll));\n }\n });\n }\n};\n","import utils from 'utils/utils';\nimport appnexus from 'player/playback/ads/appnexus';\n\nfunction getPlaylist(hlsUrl, stream, options, settings) {\n const { locale, poster, title } = options;\n\n function addPlaylistMetadata(playlistItem) {\n const mediaId = stream.getExternalId();\n const startTime = stream.getPlaybackTime('begin');\n\n // set media id only if it exists\n if (mediaId) {\n playlistItem.mediaid = mediaId;\n }\n\n // add title\n if (title) {\n playlistItem.title = title;\n }\n\n // seek stream if play ahead time is set\n if (startTime) {\n playlistItem.starttime = startTime;\n }\n return playlistItem;\n }\n\n function addProgressiveMediaSources(playlistItem) {\n utils.each(stream.getMp4Streams(), function (mp4Stream) {\n playlistItem.sources.push({\n label: `${mp4Stream.height}p`,\n file: mp4Stream.source\n });\n });\n\n return playlistItem;\n }\n\n function addSnapshots(playlistItem) {\n if (stream.hasSnapshots()) {\n // add snapshots for each stream\n playlistItem.tracks.push({\n file: stream.getSnapshots(),\n kind: 'thumbnails'\n });\n }\n\n return playlistItem;\n }\n\n function addCaptions(playlistItem) {\n if (stream.getCaptions().length > 0) {\n utils.each(stream.getCaptions(), function(caption) {\n playlistItem.tracks.push({\n file: caption.url,\n label: locale.translate(caption.language),\n kind: 'captions',\n default: caption.default === true\n });\n });\n }\n\n return playlistItem;\n }\n\n function addAppnexusAds(adConfig, playlistItem) {\n const { adSchedule, adPlacements } = (adConfig || {});\n\n // check if there are ads\n if (adSchedule && Object.keys(adSchedule).length > 0) {\n utils.extend(playlistItem, {\n adschedule: adSchedule\n });\n }\n\n // check if there are ads\n if (adPlacements) {\n playlistItem.adPlacements = adPlacements;\n }\n\n return playlistItem;\n }\n\n function add3dSupport(playlistItem) {\n if (stream.getDisplayType() === '360') {\n playlistItem.stereomode = 'monoscopic';\n }\n\n return playlistItem;\n }\n\n return function (config) {\n return Promise.resolve({\n id: stream.getId(),\n image: poster,\n sources: [{\n file: hlsUrl,\n // force mp4 stream type for ads\n type: stream.getVendor() === 'appnexus' ? 'video/mp4' : 'hls',\n default: true\n }],\n mediaType: stream.get('mediaType'),\n tracks: []\n })\n .then(addPlaylistMetadata)\n .then(addProgressiveMediaSources)\n .then(addCaptions)\n .then(addSnapshots)\n .then(add3dSupport)\n .then(function (playlistItem) {\n return appnexus.getConfig(stream, settings).then(function (adConfig) {\n const adOptions = adConfig.adOptions || {};\n\n config.advertising = utils.extend({\n client: 'vast'\n }, locale.translate('ads', true));\n\n if (typeof adOptions.autoplayMuted !== 'undefined') {\n config.advertising.autoplayadsmuted = adOptions.autoplayMuted;\n }\n\n if (adOptions.vpaidcontrols === true) {\n config.advertising.vpaidcontrols = true;\n }\n\n return addAppnexusAds(adConfig, playlistItem);\n });\n })\n .then(function (playlistItem) {\n config.playlist = [playlistItem];\n\n playlistItem.svp = {\n stream: stream,\n settings: settings\n };\n\n return config;\n });\n };\n}\n\nexport default getPlaylist;\n","import utils from 'utils/utils';\n/**\n * Check if preroll is scheduled in configuration\n *\n * @param config\n * @returns {boolean}\n */\nfunction hasPreroll(config) {\n var playlistItem = config && config.playlist[0];\n var result = false;\n\n if (playlistItem.adschedule) {\n utils.each(playlistItem.adschedule, function (slot) {\n if (slot && slot.offset === 'pre') {\n result = true;\n }\n });\n }\n\n return result;\n}\n\nexport default function (stream, options) {\n // additional config options required for playback\n return function (config) {\n let canAutostart = options.autoplay;\n\n // firefox requires this flag to be set when playing SecureHD stream\n if (stream && stream.isSecure()) {\n config.withCredentials = true;\n }\n\n // stream is not available yet, display countdown\n if (!stream.hasPlayableSource()) {\n // disable autoplay if stream is not available\n config.preload = 'none';\n config.autostart = false;\n }\n\n // force sound mute when configuration is set\n if (options.mute === true) {\n config.mute = true;\n }\n\n // load skin if available\n if (options.skin) {\n config.skin = options.skin;\n }\n\n // fix jw bug\n // by default you can't play muted ads\n if (hasPreroll(config) && config.advertising.autoplayadsmuted !== true) {\n try {\n if (config.mute === true || localStorage.getItem('jwplayer.mute') === 'true') {\n canAutostart = false;\n }\n } catch (error) {\n // for private browsing\n }\n }\n\n // disable autostart for future streams\n if (stream.isFuture()) {\n canAutostart = false;\n }\n\n if (typeof canAutostart !== 'undefined') {\n config.autostart = canAutostart;\n }\n\n\n return config;\n };\n}\n","import scriptLoader from 'utils/script-loader';\n\nimport config from 'player/config';\n\nlet request = null;\n\nconst youbora = {\n isLoaded: false,\n options: {},\n\n load(options = {}) {\n this.options = options;\n\n if(request === null) {\n request = scriptLoader(config.cdn.youbora);\n request.then(() => {\n this.isLoaded = true;\n });\n }\n\n return request;\n },\n\n initialize(player, options = {}) {\n // skip when library is not loaded\n if(!this.isLoaded) {\n return;\n }\n\n const youbora = window.youbora;\n\n try {\n const plugin = new youbora.Plugin(Object.assign(\n options, this.options\n ));\n\n plugin.setAdapter(new youbora.adapters.JWPlayer(player))\n } catch (e) {\n console.error('Could not load youbora plugin', e);\n }\n }\n};\n\nexport default youbora;","/* global console */\nimport utils from 'utils/utils';\nimport Model from 'utils/model';\nimport image from 'utils/image';\n\nimport config from 'player/config';\nimport Domain from 'player/model/domain';\nimport Token from 'player/model/token';\n\nimport appnexus from './ads/appnexus';\nimport addPlaylist from './config/playlist';\nimport addSharing from './config/sharing';\nimport setPlaybackOptions from './config/playback';\nimport addYoubora from './config/jw-youbora';\nimport setKey from './config/keys';\nimport setCaptions from './config/captions';\n\nimport * as STATUS_CODES from './config/status-codes';\nimport youbora from \"./youbora\";\n\n/**\n * Config instance for player\n * Contains SVP Player options\n * Parses config\n *\n * @param options\n * @constructor\n */\nconst Config = function () {\n this.attributes = {\n // DOM node\n node: null,\n // API vendor\n vendor: null,\n // player environment\n env: 'production',\n // stream object (extracted from asset)\n stream: null,\n // if not provided width will be read from node element\n width: '100%',\n // if not provided height will be read from node element\n height: '100%',\n // start playing from chapter time\n chapter: null,\n // start stream automatically on capable devices (does not work on iPhone and iPad, Android)\n autoplay: false,\n // player poster (image), mixed string (http src)|true|false\n poster: true,\n // display title on poster or change to provided string (default false)\n title: null,\n // play ahead time, format XXhYYmZZs, for example: 02h09m10s\n time: null,\n // url to css file with skin\n skin: config.skins.default,\n // right click defualt text and link\n about: {\n text: 'SMP Stream',\n link: ''\n },\n // token function for secured streams\n token: null\n };\n\n /**\n * JW Player Config\n */\n this.jwDefaults = {\n primary: null,\n hlshtml: true,\n flashplayer: `${config.cdn.player}/jwplayer.flash.swf`,\n wmode: 'transparent',\n key: config.player.keys.default\n };\n\n this.token = null;\n};\n\nConfig.prototype = {\n /**\n * Locales is required for translations in config\n *\n * @param locale\n */\n setLocale: function(locale) {\n this.locale = locale;\n },\n\n /**\n * Calculates bitrate value based on given limit\n *\n * maxBitrate is increased by 15% due to VBR encoding\n * @returns {number}\n */\n getMaxBitrate() {\n return this.get('maxBitrate') * 1.15;\n },\n\n setStream: function (stream) {\n this.stream = stream;\n this.token = new Token(stream.get('id'), this.getMaxBitrate());\n },\n\n /**\n * TODO add tests\n *\n * @param stream\n * @param container\n * @returns {*}\n */\n getPoster: function (stream, container) {\n const width = this.get('width');\n const height = this.get('height');\n\n container = container || document.getElementById(this.get('node'));\n\n if (utils.isString(this.get('poster'))) {\n return this.get('poster');\n }\n\n if (container && stream) {\n return image.getImageSrc(\n stream.getPoster(),\n 'poster',\n // use width and height if it's set as a number\n utils.isNumber(width) ? width : container.clientWidth,\n utils.isNumber(height) ? height : container.clientHeight\n );\n }\n\n return null;\n },\n\n /**\n * Retrieve token required for secure streams\n * Token expiry has to match API\n */\n getToken: function() {\n if (this.stream.isSecure()) {\n return this.token.fetch(this.get('token'));\n }\n\n return Promise.resolve(null);\n },\n\n /**\n * Token is required only for secure streams so for all other types it's valid\n *\n * @returns {boolean}\n */\n hasValidToken: function () {\n return !this.stream.isSecure() || this.token.isValid();\n },\n\n getStreamUrl: function (type) {\n // stream not set yet\n if (!this.stream) {\n // eslint-disable-next-line no-console\n console.error('SVP SDK: getStreamUrl() called before stream set');\n return null;\n }\n\n return this.getToken().then(token => {\n const streamUrl = this.stream.getUrl(type);\n const maxBitrate = this.getMaxBitrate();\n const params = [];\n\n if (type === 'hls' && token) {\n params.push(`hdnea=${encodeURIComponent(token)}`);\n }\n\n if (maxBitrate) {\n params.push(`b=0-${maxBitrate}`);\n }\n\n // only live streams require custom metadata\n // it's used to trigger ads\n if (this.stream.isLive()) {\n params.push(`custom-mdt=on`);\n }\n\n return streamUrl + ((params.length > 0) ? `?${params.join('&')}` : '');\n });\n },\n\n /**\n * Check if user is eligible to play stream in his geolocation\n *\n * @param stream\n * @returns {Promise}\n */\n isStreamPlayable() {\n const { stream } = this;\n const settings = this.getSettings();\n\n return new Promise((resolve, reject) => {\n if (settings.preview === true) {\n resolve(STATUS_CODES.ACTIVE_PREVIEW);\n } else if (stream.isActive()) {\n if (stream.isGeoblocked() && !stream.isFuture()) {\n this.getStreamUrl('hls').then(streamUrl => {\n // fetch manifest to check user access\n utils.ajax(streamUrl, resolve, function (...args) {\n const response = args[2] || {};\n\n if(response.status === 403) {\n return reject(STATUS_CODES.NOT_ACTIVE_GEOBLOCKED);\n }\n\n return reject(STATUS_CODES.NETWORK_ERROR);\n }, true);\n }).catch(reject);\n } else {\n resolve(STATUS_CODES.ACTIVE);\n }\n } else if (stream.isPast()) {\n reject(STATUS_CODES.NOT_ACTIVE_PAST);\n } else {\n reject(STATUS_CODES.NOT_ACTIVE);\n }\n });\n },\n\n getJwConfig: function (stream) {\n const settings = this.getSettings();\n\n return Promise.resolve({\n width: this.get('width'),\n height: this.get('height'),\n abouttext: this.get('about').text,\n aboutlink: this.get('about').link,\n sharing: utils.extend({}, config.sharing.global),\n primary: this.get('primary') || 'html5',\n localization: this.locale.translate('player', true),\n plugins: {},\n cast: {}\n }).then(config => this.getStreamUrl('hls').then(hlsUrl => addPlaylist(\n hlsUrl,\n stream,\n {\n poster: this.getPoster(stream),\n title: this.get('title'),\n locale: this.locale\n },\n this.getPlaylistSettings()\n )(config)))\n .then(addSharing(\n this.get('sharing'),\n this.get('vendor'),\n this.locale.translate('Sharing'),\n config.sharing\n ))\n .then(setCaptions(this.get('captions')))\n .then(setPlaybackOptions(stream, {\n mute: this.get('mute'),\n skin: this.get('skin'),\n autoplay: this.get('autoplay')\n }))\n // enable only five percent of traffic for youbora\n .then(addYoubora(\n stream,\n youbora.isLoaded\n ))\n .then(setKey(this.get('vendor')))\n .then(config => utils.merge(utils.extend({}, this.jwDefaults, config), settings.jw || {}));\n },\n\n /**\n * Check if recommended is available\n */\n hasRecommended: function() {\n // recommended is turned off\n return this.get('recommended') !== false;\n },\n\n getRecommended: function() {\n return this.get('recommended');\n },\n\n hasNext: function() {\n if (!this.hasRecommended()) {\n return false;\n }\n\n if (this.getRecommended() && (this.getRecommended().next === false\n || typeof this.getRecommended().next === 'undefined')) {\n return false;\n }\n\n return true;\n },\n\n getPlaylistSettings: function () {\n return utils.extend({\n adn: this.get('adn'),\n hasNext: this.hasNext()\n }, this.getSettings());\n },\n\n getLiveMidrollTag: function(time) {\n return appnexus.getLiveMidrollTag(\n time,\n this.stream,\n this.getPlaylistSettings()\n );\n },\n\n parse: function(options) {\n const asset = (options.asset || options.id);\n const about = config.about[options.vendor];\n const skin = utils.extend({}, (config.skins[options.vendor] || config.skins.default));\n\n // set default skin for player if nothing is provided\n if (typeof options.skin === 'object') {\n if (options.skin.name) {\n skin.name += ` ${options.skin.name}`;\n }\n\n if (options.skin.url) {\n skin.url = options.skin.url;\n }\n } else {\n // remove if not valid\n delete options.skin;\n }\n\n\n options.skin = skin;\n\n // override about link/text\n if (!options.about && about) {\n options.about = about;\n }\n\n // delete asset\n if (asset) {\n delete options.asset;\n }\n\n // check if user passed chapter or time\n if (utils.isString(options.chapter) && options.chapter.match(/^\\d+$/)) {\n options.chapter = parseInt(options.chapter, 10);\n }\n\n // legacy support\n if (options.time) {\n options.time = utils.time.shareTimeToSeconds(options.time);\n }\n\n if (options.settings) {\n delete options.settings;\n }\n\n if (options.locale) {\n delete options.locale;\n }\n\n return options;\n }\n};\n\n// Immutable method for restricted settings like preview or na\nObject.defineProperty(Config.prototype, 'initialize', {\n value: function(options) {\n const { vendor } = options;\n const rawOptions = utils.extend({}, options);\n\n Domain.getPermissions(vendor).then(permissions => {\n const settings = {};\n\n if (permissions.whitelist === true && options.settings) {\n utils.extend(settings, options.settings);\n }\n\n if (permissions.preview === false) {\n delete settings.preview;\n }\n\n // turn off ads for certain provider\n if (config.ads[vendor] === false) {\n settings.na = true;\n }\n\n Object.defineProperty(this, 'settings', {\n value: Object.freeze(settings),\n writable: false\n });\n\n utils.extend(this.attributes, this.parse(options));\n this.trigger('ready', rawOptions, settings);\n });\n },\n writable: false\n});\n\n// Immutable method for restricted settings like preview or na\nObject.defineProperty(Config.prototype, 'getSettings', {\n value: function() {\n return this.settings;\n },\n writable: false\n});\n\nutils.extend(Config.prototype, Model);\n\nexport default Config;\n","import utils from 'utils/utils';\n\nexport default function (options, vendor, heading, sharingDefaults) {\n return function (config) {\n const sharing = {};\n\n if (options === false) {\n delete config.sharing;\n } else {\n utils.extend(sharing, sharingDefaults.global);\n\n // use provider specific sharing info\n if (sharingDefaults[vendor]) {\n utils.extend(sharing, sharingDefaults[vendor]);\n }\n\n // extend sharing options when object is provided as param for it\n if (typeof options === 'object') {\n utils.extend(sharing, options);\n }\n\n // add uri encoding to prevent sharing problems\n if (sharing.code) {\n sharing.code = encodeURIComponent(sharing.code);\n }\n\n if (!sharing.heading) {\n sharing.heading = heading;\n }\n\n config.sharing = sharing;\n }\n\n return config;\n };\n}\n","export default function (options = {}) {\n // additional config options required for playback\n return function (jwConfig) {\n if(options.native === true) {\n jwConfig.renderCaptionsNatively = true;\n delete options.native;\n }\n\n if(Object.keys(options).length > 0) {\n jwConfig.captions = options;\n }\n\n return jwConfig;\n };\n}","export default function (stream, isEnabled) {\n // additional config options required for playback\n return function (config) {\n // allow only when account config is available\n if (isEnabled) {\n /* jshint ignore:start */\n if (config.playlist && config.playlist[0]) {\n config.playlist[0].youbora = {\n media: {\n title: stream.get('title'),\n duration: stream.getDuration(),\n isLive: stream.isLive(),\n cdn: 'AKAMAI',\n resource: stream.getUrl('hls')\n },\n\n properties: {\n content_id: stream.getId(),\n content_metadata: {\n owner: stream.getVendor()\n }\n }\n };\n }\n /* jshint ignore:end */\n }\n\n return config;\n };\n}\n","import config from 'player/config';\n\nexport default function (vendor) {\n // additional config options required for playback\n return function (jwConfig) {\n const { keys } = config.player;\n\n jwConfig.key = keys[vendor] || keys.default;\n\n return jwConfig;\n };\n}\n","/* jshint bitwise: false */\nimport utils from 'utils/utils';\nimport Events from 'utils/backbone.events';\n\nfunction binarySearch(arr, compare) {\n // binary search, with custom compare function\n let l = 0;\n\n let r = arr.length - 1;\n let m;\n let comp;\n\n while (l <= r) {\n // eslint-disable-next-line no-bitwise\n m = l + ((r - l) >> 1);\n comp = compare(arr[m]);\n\n if (comp < 0) {\n // arr[m] comes before the element\n l = m + 1;\n } else if (comp > 0) {\n // arr[m] comes after the element\n r = m - 1;\n } else {\n return m;\n }\n }\n\n return l - 1; // return the index of the next left item\n // usually you would just return -1 in case nothing is found\n}\n\nconst Viewport = function() {\n this.current = null;\n};\n\nViewport.prototype = {\n labels: [\n 'tiny', 'tiny-small', 'tiny-small-medium',\n 'tiny-small-medium-big', 'tiny-small-medium-big-web', 'tiny-small-medium-big-web-wide'\n ],\n sizes: [0, 480, 640, 768, 1024, 1200],\n\n /**\n * Update player viewport which is not equal to browser wiewport\n *\n * @param width\n */\n update: function(width) {\n const newIndex = binarySearch(this.sizes, x => x - width);\n\n if (this.current !== newIndex) {\n const newBreakpoint = this.getViewportByIndex(newIndex);\n const currentBreakpoint = this.getViewportByIndex(this.current);\n\n this.trigger('change', newBreakpoint, currentBreakpoint);\n\n this.current = newIndex;\n }\n },\n\n getViewportByIndex: function(index) {\n return {\n width: this.sizes[index],\n label: this.labels[index]\n };\n }\n};\n\nutils.extend(Viewport.prototype, Events);\n\nexport default Viewport;\n","/* eslint-disable max-len */\n\nimport utils from 'utils/utils';\nimport playIcon from 'icons/play.svg';\nimport pauseIcon from 'icons/pause.svg';\nimport audioIcon from 'icons/audio.svg';\nimport audioMuted from 'icons/audio-muted.svg';\nimport homad from './homad-lib';\n\nfunction getAdPotTag(offset, adschedule) {\n const keys = Object.keys(adschedule);\n let tag = null;\n\n utils.each(keys, function (key) {\n if (key.indexOf(offset) > -1) {\n // eslint-disable-next-line prefer-destructuring\n tag = adschedule[key].tag;\n }\n });\n\n return tag;\n}\n\nfunction getTagUrl(potOffset) {\n return function (player) {\n const playlistItem = player.getPlaylist()[0];\n let tag = false;\n\n if (playlistItem.adschedule) {\n tag = getAdPotTag(potOffset, playlistItem.adschedule);\n }\n\n if (tag) {\n tag = tag.replace('vmap', 'ssvmap');\n } else {\n tag = false;\n }\n\n return tag;\n };\n}\n\n\nconst conf = {\n globalConfig: 'https://s3.amazonaws.com/homad-global-configs.schneevonmorgen.com/global_config.json',\n clientConfig: '/homad-config.json',\n admessage: function (data) {\n const player = data && data.player;\n let message = 'The ad will end in [time] seconds';\n\n // eslint-disable-next-line no-underscore-dangle\n if (player.__svp__locale) {\n // eslint-disable-next-line no-underscore-dangle\n message = player.__svp__locale.translate('adblock').admessage;\n }\n\n return message;\n },\n skipable: true,\n skipAdOnContextChange: true,\n runInsideContainer: true,\n adjustAdVolumeToContentPlayer: true,\n postrollUseCompleteEvent: false,\n onReady: function () {\n },\n muteButton: (function () {\n return `
${audioIcon}
`;\n }()),\n unmuteButton: (function () {\n return `
${audioMuted}
`;\n }()),\n playButton: (function () {\n return `
${playIcon}
`;\n }()),\n pauseButton: (function () {\n return `
${pauseIcon}
`;\n }()),\n skipableButton: (function () {\n return `
\n Skip ad in [time]\n \n \n \n
`;\n }()),\n skipButton: (function () {\n return `
\n Skip\n \n
`;\n }()),\n 'innerWarpper.style': '',\n prerollAdTag: getTagUrl('pre'),\n midrollAdTag: getTagUrl('mid'),\n postrollAdTag: getTagUrl('post')\n};\n\n /**\n * Homad AAB ads have single event bus for all players\n *\n * @param event\n */\nfunction parseHomadEvent(event) {\n // homad event details are under detils property\n const details = event && event.detail;\n\n // skip parsing when there is missing data or player is not registered\n if (!details || !this.events[details.containerId]) {\n return;\n }\n\n this.events[details.containerId].trigger(details.name, details);\n}\n\nexport default utils.extend({\n // events hashmap playerId -> eventBus\n // each player has its own events bus\n events: {},\n initialize: function () {\n const SvpPlayer = window.SVP.Player;\n\n if (!SvpPlayer.isHomadLoaded) {\n SvpPlayer.isHomadLoaded = true;\n\n // override aab config url\n if (SvpPlayer.defaults.aabConfig) {\n conf.clientConfig = SvpPlayer.defaults.aabConfig;\n }\n\n homad(conf);\n\n window.addEventListener('hdEvent', parseHomadEvent.bind(this));\n }\n },\n\n /**\n * Get events for specific player\n * Events are matched by player id\n *\n * @param playerId\n * @returns {*}\n */\n getEvents: function (playerId) {\n // create event bus for specific player if this doesn't exist\n if (!this.events[playerId]) {\n this.events[playerId] = utils.extend({}, utils.Events);\n }\n\n return this.events[playerId];\n },\n\n /**\n * Remove player events from messaging bus\n * Prevents memory leaks\n *\n * @param playerId\n */\n removeEvents: function (playerId) {\n if (this.events[playerId]) {\n this.events[playerId].off();\n this.events[playerId].stopListening();\n\n this.events[playerId] = null;\n delete this.events[playerId];\n }\n }\n}, utils.Events);\n","/* global SVP */\nimport utils from 'utils/utils';\nimport logger from 'utils/logger';\nimport HomadAds from './homad';\n/**\n * Get Ad Player from player container\n *\n * @param parent\n * @param cb\n */\nfunction getAdPlayer(parent, cb) {\n const observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(mutation) {\n if (mutation.type === 'childList') {\n const nodes = mutation.addedNodes;\n\n if (nodes && nodes[0]) {\n const video = nodes[0].querySelector('video');\n\n if (video) {\n cb(video, nodes[0]);\n }\n }\n }\n });\n });\n\n // pass in the target node, as well as the observer options\n observer.observe(parent, {\n attributes: false,\n childList: true,\n characterData: false\n });\n}\n\n/**\n * Initialize ad player\n *\n * @param player\n * @returns {Function}\n */\nfunction initializeAdPlayer(player) {\n /**\n * Called every time ad video player is shown\n */\n return function (adPlayer, adPlayerContainer) {\n adPlayerContainer.classList.add('svp-homad-player');\n player.getContainer().classList.remove('jw-state-buffering');\n };\n}\n\nfunction onAdError() {\n const jw = this.player;\n const container = this.getContainer();\n\n // just to be sure\n this.once('adStarted', function () {\n this.adPlayerLoading = false;\n }, this);\n\n this.once('adSlotComplete', function () {\n container.classList.remove('svp-homad-loading');\n }, this);\n\n this.listenToOnce(jw, 'play', function () {\n this.adPlayerLoading = true;\n }, this);\n\n this.listenToOnce(jw, 'pause', function (options) {\n // first external pause is triggered by homad\n // this equals to ad tag loaded and parsed\n if (options && options.pauseReason === 'external') {\n this.adPlayerLoading = false;\n }\n }, this);\n}\n\nfunction onAdBreakStart(data) {\n const duration = this.getDuration();\n const currentTime = this.getCurrentTime();\n const container = this.getContainer();\n\n // homad has strange constraints for midroll\n if ((data && data.adposition !== 'mid') || (currentTime > 30 && duration - currentTime > 30)) {\n container.classList.add('svp-homad-loading');\n\n // clean loading in case of any error\n setTimeout(function () {\n container.classList.remove('svp-homad-loading');\n }, 5000);\n }\n}\n\n/**\n * Forward events which are the same\n * @param eventName\n */\nfunction forwardEvent(eventName) {\n this.listenTo(this.events, eventName, function () {\n // trigger ad events only while ads are playing\n if (this.adPlaying === true) {\n // clear event data\n this.trigger(eventName);\n }\n }, this);\n}\n\nfunction onReady() {\n if (!this.getAdBlock() || SVP.Player.defaults.aab !== true) {\n return;\n }\n\n // events are matched by player id\n const playerId = this.config.get('node');\n\n this.events = HomadAds.getEvents(playerId);\n\n this.listenTo(this.events, 'contentPlayerPlay', function () {\n this.getContainer().classList.remove('svp-homad-loading');\n }, this);\n\n this.listenTo(this.events, 'all', function (event, data) {\n logger('AAB').log(event, data);\n }, this);\n\n this.listenTo(this.events, 'adStart', function (data) {\n this.adPosition = data.state;\n\n if (this.adPlaying === false) {\n // just to make sure that preloading state has ended\n this.getContainer().classList.remove('svp-homad-loading');\n\n this.trigger('adSlotStart', {\n position: this.adPosition\n });\n\n this.adPlaying = true;\n\n this.trigger('adStarted');\n }\n }, this);\n\n this.listenTo(this.events, 'continueContent', function () {\n if (this.adPlaying === true) {\n this.trigger('adSlotComplete', {\n position: this.adPosition\n });\n\n this.adPlaying = false;\n }\n });\n\n this.listenTo(this.events, 'adTime', function (data) {\n if (data.currentTime && this.adPlaying) {\n this.trigger('adProgress', data.currentTime, data.duration);\n }\n }, this);\n\n this.listenTo(this.events, 'adMeta', function (data) {\n if (data) {\n this.trigger('adData', {\n adId: data.adId || null,\n impression: data.impressionURL || null\n });\n }\n }, this);\n\n utils.each(['adComplete', 'adSkipped', 'adPause', 'adPlay'], forwardEvent.bind(this));\n\n // cleanup events\n this.once('remove', HomadAds.removeEvents.bind(HomadAds, playerId));\n\n this.listenTo(this.player, 'adError', onAdError.bind(this));\n this.listenTo(this.player, 'adBreakStart', onAdBreakStart.bind(this));\n\n getAdPlayer(this.getContainer(), initializeAdPlayer(this));\n}\n\nexport default function (Player) {\n const { setup } = Player.prototype;\n\n // anti adblock works only for desktops\n if (!utils.device.isDesktop()) {\n return Player;\n }\n\n /**\n * Proxy player method\n * Call source when adblock is not present\n *\n * @param name\n * @param cb\n */\n function proxyMethod(name, cb) {\n const sourceMethod = Player.prototype[name];\n\n Player.prototype[name] = function () {\n const args = Array.prototype.slice.call(arguments);\n\n if (this.getAdBlock() === false || SVP.Player.defaults.aab !== true) {\n return sourceMethod.apply(this, args);\n }\n\n return cb.call(this, sourceMethod, args);\n };\n }\n\n Player.prototype.setup = function () {\n this.once('ready', onReady);\n return setup.call(this);\n };\n\n\n proxyMethod('onFirstFrameLoad', function (onFirstFrameLoad) {\n this.player.once('play', function () {\n this.player.once('providerFirstFrame', onFirstFrameLoad, this);\n }, this);\n });\n\n proxyMethod('onTime', function (onTime, args) {\n if (!this.adPlaying && this.adPlayerLoading === false) {\n onTime.apply(this, args);\n }\n });\n\n // eslint-disable-next-line consistent-return\n proxyMethod('onPlay', function (onPlay, args) {\n if (this.adPlayerLoading === false) {\n return onPlay.apply(this, args);\n }\n });\n\n //\n proxyMethod('onPause', function (onPause, args) {\n if (this.adPlaying === false && this.adPlayerLoading === false) {\n onPause.apply(this, args);\n }\n });\n\n proxyMethod('onComplete', function (onComplete, args) {\n if (this.adPlaying === false && (this.adPlayerLoading === false || this.adPlayerLoading === undefined)) {\n onComplete.apply(this, args);\n } else {\n this.listenToOnce(this.events, 'continueContent', function () {\n onComplete.apply(this, args);\n }, this);\n }\n });\n\n return Player;\n}\n","import utils from 'utils/utils';\n/**\n * Check if preroll is scheduled in configuration\n *\n * @param config\n * @returns {boolean}\n */\nfunction hasPreroll(config) {\n const playlistItem = config && config.playlist[0];\n let result = false;\n\n if (playlistItem.adschedule) {\n utils.each(playlistItem.adschedule, function (slot) {\n if (slot && slot.offset === 'pre') {\n result = true;\n }\n });\n }\n\n return result;\n}\n\n/**\n * Check if given stream can be autoplayed\n * Rules for autoplay depends on device but also on flags given to playback\n *\n * @deprecated new autoplay policies require starting of video to detect if autoplay will work\n * @param config - JW Configuration\n * @returns {boolean}\n */\nfunction canAutoplay(config) {\n var canDeviceAutoplay = utils.device.canAutoplay();\n\n // enable autoplay for devices with disabled ads and at least muted autoplay ability ios10\n var result = (canDeviceAutoplay === 'always');\n\n if (canDeviceAutoplay === 'muted' && !hasPreroll(config)) {\n result = true;\n }\n\n return result;\n}\n\nexport default {\n canAutoplay: canAutoplay\n};\n","const handle = () => {\n let supposedCurrentTime = 0;\n let video = null;\n\n const onSeeking = () => {\n // guard against infinite recursion:\n // user seeks, seeking is fired, currentTime is modified, seeking is fired, current time is modified, ....\n if (Math.abs(video.currentTime - supposedCurrentTime) > 0.01) {\n video.currentTime = supposedCurrentTime;\n }\n };\n\n const onTimeUpdate = () => {\n if (!video.seeking) {\n supposedCurrentTime = video.currentTime;\n }\n };\n\n const init = (videoElement) => {\n video = videoElement;\n\n if(video) {\n // prevent user from seeking\n video.addEventListener('seeking', onSeeking);\n video.addEventListener('timeupdate', onTimeUpdate);\n }\n };\n\n const remove = () => {\n if(video) {\n video.removeEventListener('seeking', onSeeking);\n video.removeEventListener('timeupdate', onTimeUpdate);\n }\n };\n\n return {\n init, remove\n };\n};\n\nconst load = (svpPlayer) => {\n const handler = handle();\n\n /**\n * Get video tag from SVP Player\n *\n * @param player\n * @returns {Element | any}\n */\n const getVideo = (player) => {\n return player.getContainer().querySelector('video');\n };\n\n /**\n * Add prevent seeking handler for every adslot\n */\n const onAdSlotStart = () => {\n handler.init(getVideo(svpPlayer));\n };\n\n /**\n * Remove it when ad completes\n */\n const onAdSlotComplete = () => {\n handler.remove();\n };\n\n svpPlayer.on('adSlotStart', onAdSlotStart);\n svpPlayer.on('adError adSlotComplete', onAdSlotComplete);\n};\n\nexport { handle };\nexport default load;","/* eslint-disable */\nimport utils from 'utils/utils';\n\nimport audio from 'icons/audio.svg';\nimport audioMuted from 'icons/audio-muted.svg';\nimport audioHalf from 'icons/audio-half.svg';\nimport captions from 'icons/captions.svg';\nimport chevronRight from 'icons/chevron-right.svg';\nimport fullscreenOff from 'icons/fullscreen-off.svg';\nimport fullscreenOn from 'icons/fullscreen-on.svg';\nimport pause from 'icons/pause.svg';\nimport play from 'icons/play.svg';\nimport playlist from 'icons/playlist.svg';\nimport settings from 'icons/settings.svg';\nimport share from 'icons/share.svg';\n\nimport avButton from 'icons/av-button.svg';\nimport defs from 'icons/defs.svg';\n\nconst iconsMap = {\n '.jw-svg-icon-play': play,\n '.jw-svg-icon-pause': pause,\n '.jw-skip-icon .jw-svg-icon-next': chevronRight,\n '.jw-svg-icon-settings': settings,\n '.jw-svg-icon-sharing': share,\n\n '.jw-svg-icon-cc-on': captions,\n '.jw-svg-icon-cc-off': captions,\n\n '.jw-svg-icon-volume-0': audioMuted,\n '.jw-svg-icon-volume-50': audioHalf,\n '.jw-svg-icon-volume-100': audio,\n\n '.jw-svg-icon-fullscreen-on': fullscreenOn,\n '.jw-svg-icon-fullscreen-off': fullscreenOff,\n\n 'avButton': avButton\n};\n\nlet defsLoaded = false;\n\nconst loadIcons = function(container) {\n utils.each(iconsMap, (customIcon, selector) => {\n const icons = Array.prototype.slice.call(container.querySelectorAll(selector));\n\n if (icons.length > 0) {\n utils.each(icons, icon => {\n if (icon) {\n const svpIcon = utils.createNode(customIcon);\n svpIcon.setAttribute('class', icon.getAttribute('class'));\n icon.parentNode.replaceChild(svpIcon, icon);\n }\n });\n }\n });\n};\n\nconst loadDefs = function (svpPlayer) {\n if(defsLoaded === false) {\n defsLoaded = true;\n\n svpPlayer.once('ready', () => {\n const container = svpPlayer.getContainer();\n\n if(container) {\n container.appendChild(utils.createNode(defs));\n }\n });\n }\n};\n\nconst getIcon = function (name) {\n return iconsMap[name];\n};\n\nexport { getIcon, loadDefs }\n\nexport default (svpPlayer) => {\n const jwPlayer = svpPlayer.player;\n\n jwPlayer.once('playlist', () => loadIcons(svpPlayer.getContainer()));\n}","const submenuHandler = (container) => {\n container.querySelector('.jw-controlbar .jw-button-container').addEventListener('click', event => {\n const { target } = event;\n\n // eslint-disable-next-line no-console\n if (target.classList.contains('jw-settings-submenu-button') || target.classList.contains('jw-settings-sharing')) {\n const submenu = container.querySelector('.jw-settings-menu');\n\n // eslint-disable-next-line max-len\n const right = Math.round((container.offsetWidth - (target.offsetLeft + target.offsetWidth / 2)) - submenu.offsetWidth / 2);\n\n submenu.style.right = `${right}px`;\n }\n });\n};\n\nexport default (svpPlayer) => {\n svpPlayer.on('ready', () => submenuHandler(svpPlayer.getContainer()));\n};","import loadIcons, { loadDefs } from './skin/icons-loader';\nimport settingsMenu from './skin/settings-menu';\n\n/**\n * Load SVP Skin\n *\n * @param svpPlayer\n * @param options\n */\nexport default (svpPlayer) => {\n loadDefs(svpPlayer);\n\n settingsMenu(svpPlayer);\n loadIcons(svpPlayer);\n};","/* globals jwplayer,console */\nimport utils from 'utils/utils';\nimport device from 'utils/device';\nimport logger from 'utils/logger';\nimport Viewport from './viewport';\nimport HomadAdsJw from './ads/homad-jw';\nimport autoplay from './config/autoplay';\nimport preventAdSeeking from './ads/prevent-seeking';\n\nimport youbora from './youbora';\nimport svpSkin from './skin';\n\nconst PlayerModel = function (config) {\n /**\n * JW Player instance\n * @type {null}\n */\n this.player = null;\n this.stream = null;\n this.locale = null;\n\n this.config = config;\n\n this.isInitalized = false;\n\n /**\n * Current playlist item\n *\n * @type {null}\n */\n this.playlistItem = null;\n\n /**\n * Current time holder for seek and seeked events\n * Fix for JW getPosition bug\n * @type {null}\n */\n this.currentTime = null;\n\n /**\n * Breakpoints for visuals\n * @type {{xsmall: number, small: number, medium: number, big: number, web: number, webWide: number}}\n */\n this.viewport = new Viewport();\n this.listenTo(this.viewport, 'change', this.onViewportChange, this);\n\n\n /**\n * Indicates if ads are currently playing\n * @type {boolean}\n */\n this.adPlaying = false;\n\n /**\n * Adposition\n *\n * @type {null} preroll|midroll|postroll\n */\n this.adPosition = null;\n};\n\n /**\n * Forward JW Events without any change of them as they fits our needs\n *\n * List of proxied events\n * 'play', 'pause'\n *\n * @param event\n */\nfunction forwardEvent(event) {\n this.listenTo(this.player, event, this.trigger.bind(this, event));\n}\n\n/**\n * Simple proxy for JW Methods\n *\n * @param method\n * @returns {Function}\n */\nfunction bindJwMethod(method) {\n return function () {\n const args = Array.prototype.slice.call(arguments);\n\n if (!this.player) {\n // eslint-disable-next-line no-console\n console.warn(`Method ${method} called before player has been initialised`);\n return null;\n }\n\n return this.player[method].apply(this, args);\n };\n}\n\n/**\n * Proxy methods from JW\n */\nfunction forwardMethods(methods) {\n const forwardedMethods = {};\n\n utils.each(methods, function (method) {\n forwardedMethods[method] = bindJwMethod.call(this, method);\n }, this);\n\n return forwardedMethods;\n}\n\nfunction getAdPosition(slotId) {\n const slotKeys = { pre: 'preroll', mid: 'midroll', post: 'postroll' };\n\n return slotKeys[slotId];\n}\n\n/**\n * Parse adresponse for each adslot\n *\n * @param xml\n */\nfunction parseAdData(data) {\n const { sequence } = data;\n const xml = data && data.response;\n\n let source = 'WRAPPER';\n let adSelector = 'Ad';\n let adData = null;\n\n if (xml) {\n // only when additional data is given we set source to appnexus\n if (xml.URL === data.tag) {\n source = 'INLINE';\n adSelector = `Ad[sequence=\"${sequence}\"]`;\n }\n\n adData = Array.prototype.slice.call(xml.querySelectorAll(adSelector));\n // get first element if available\n adData = adData && adData[0] ? adData[0] : null;\n }\n\n return {\n sequence: sequence,\n count: data.podcount,\n raw: adData,\n source: source\n };\n}\n\n/**\n * Initialize playback end method\n * Clear after each completion of stream or playbackEnd reached\n *\n * @param playbackEnd\n */\nfunction onPlaybackEndAvailable(playbackEnd) {\n const onTime = position => {\n if (position > playbackEnd) { //\n this.trigger('playbackEnd', Math.round(position));\n }\n };\n\n this.on('time', onTime);\n\n this.once('playbackEnd complete', function() {\n this.off('time', onTime);\n });\n}\n\n/**\n * Extended ready event with info about device autoplay ability\n * @param data\n */\nfunction onReady(options, eventData) {\n this.trigger('ready', utils.extend(options, eventData));\n}\n\nPlayerModel.prototype = {\n initialize() {\n this.player = jwplayer(this.config.get('node'));\n\n // eslint-disable-next-line no-underscore-dangle\n this.player.__svp__locale = this.locale;\n\n this.trigger('initialize');\n },\n\n setup: function() {\n this.initialize();\n\n // player could not be setup\n if (!this.player.setup) {\n // eslint-disable-next-line no-console\n console.error(`SVP Player initialization error. DOM ${this.config.get('node')} not found`);\n return;\n }\n\n this.getConfig().then(config => {\n // speedup lookup\n const { player } = this;\n\n player.setup(config);\n\n svpSkin(this);\n preventAdSeeking(this);\n\n youbora.initialize(player, {\n accountCode: 'schibsted',\n enableAnalytics: true\n });\n\n logger('JW').log('config', config);\n\n // forward native JW events without changing their behaviour\n utils.each(['seek', 'displayClick', 'captionsChanged', 'adPause',\n 'adPlay', 'autostartNotAllowed'], forwardEvent, this);\n\n this.listenTo(player, 'error setupError', this.onError, this);\n this.listenTo(player, 'playlistItem', this.onPlaylistItemLoad, this);\n\n this.listenTo(player, 'play', this.onPlay, this);\n this.listenTo(player, 'pause', this.onPause, this);\n this.listenTo(player, 'complete', this.onComplete, this);\n this.listenTo(player, 'ready', onReady.bind(this, {\n canAutoplay: autoplay.canAutoplay(config)\n }));\n\n this.listenTo(player, 'time', this.onTime, this);\n this.listenTo(player, 'resize', this.onPlayerResize, this);\n\n this.listenTo(player, 'meta', this.onMeta, this);\n\n this.listenTo(player, 'seek', function(data) {\n this.currentTime = data.offset;\n }, this);\n this.listenTo(player, 'seeked', function() {\n this.trigger('seeked', this.currentTime);\n // clearing has to occur after seekend event as getCurrentTime needs it\n this.currentTime = null;\n }, this);\n\n // 'restart' stream only when flash has been blocked\n this.once('flashBlocked', function() {\n this.listenTo(player, 'providerChanged', this.play, this);\n }, this);\n\n this.once('initialPlay', function () {\n this.listenToOnce(player, 'captionsList', function () {\n this.trigger('captionsList', this.getCaptionsList());\n }, this);\n }, this);\n\n\n this.listenTo(player, 'adImpression', function (data) {\n if (data && data.adposition) {\n this.adPosition = getAdPosition(data.adposition);\n }\n\n if (this.adPlaying === false) {\n this.trigger('adSlotStart', {\n position: this.adPosition,\n response: data && data.response\n });\n\n this.adPlaying = true;\n }\n\n this.trigger('adStarted');\n\n if (data && data.response) {\n this.trigger('adData', parseAdData(data));\n }\n }, this);\n\n this.listenTo(player, 'adError', function (data) {\n if (data && data.adposition) {\n this.adPosition = getAdPosition(data.adposition);\n }\n }, this);\n\n this.listenTo(player, 'adTime', function (data) {\n if (data.position && data.duration) {\n this.trigger('adProgress', data.position, data.duration);\n }\n }, this);\n\n this.on('adSlotStart', function () {\n this.listenToOnce(player, 'adBreakEnd', function () {\n if (this.adPlaying === true) {\n this.trigger('adSlotComplete', {\n position: this.adPosition\n });\n\n this.adPlaying = false;\n }\n }, this);\n }, this);\n\n this.listenTo(player, 'adSkipped', function () {\n this.trigger('adSkipped');\n }, this);\n\n this.listenTo(player, 'adComplete', function () {\n this.trigger('adFinished');\n }, this);\n\n this.isInitalized = true;\n\n logger('JW').log(log => {\n this.listenTo(player, 'all', function (event) {\n if (['bufferChange'].indexOf(event) < 0) {\n log(event, Array.prototype.slice.call(arguments, 1));\n }\n });\n });\n\n this.trigger('setup');\n });\n },\n\n playNext: function(stream) {\n // clear time\n this.stream = stream;\n\n this.complete('playNext');\n\n if (!this.isInitalized) {\n this.setup();\n } else {\n this.getConfig(stream).then(config => {\n this.player.load(config.playlist);\n\n // stream is not available yet, display countdown\n if (stream.getTimeToStart() < 0) {\n // enable autoplay if stream is not available\n this.player.play(true);\n } else {\n this.player.stop();\n }\n });\n }\n },\n\n async togglePlayback(type) {\n const streamType = type === 'audio' ? 'audio' : 'hls';\n const streamUrl = await this.config.getStreamUrl(streamType);\n const streamPoster = this.config.getPoster(this.stream);\n\n this.player.load([{\n id: this.stream.getId(),\n image: streamPoster,\n // image: '',\n sources: [{\n file: streamUrl,\n // force mp4 stream type for ads\n type: 'hls',\n default: true\n }],\n starttime: this.getCurrentTime(),\n playbackType: type,\n tracks: []\n }]);\n\n this.player.play(true);\n },\n\n /**\n * Immediately completes currently playing stream\n */\n complete: function() {\n this.adPlaying = false;\n\n // trigger complete event only when stream is not finished to prevent double 'complete' event triggering\n if (this.getCurrentTime() > 0 && this.getCurrentTime() !== this.getDuration()) {\n this.trigger('complete');\n }\n },\n\n /**\n * Get DOM Node where player is inserted\n * @returns {*}\n */\n getContainer: function() {\n return this.player.getContainer();\n },\n\n /**\n * Get playback volume\n * @returns {*}\n */\n getVolume: function() {\n return this.player.getVolume();\n },\n\n /**\n * Set playback volume\n * @param volume\n */\n setVolume: function(volume) {\n this.player.setVolume(volume);\n },\n\n /**\n * Seek\n * TODO ADD tests\n */\n seek: function(time) {\n // flash bug - player is not seeking when stream hasn't started playing\n if (this.getCurrentTime() === 0) {\n // start stream only it's not playing\n // move this to play method?\n if (this.player.getState() !== 'playing') {\n this.play();\n }\n\n this.once('assetPlay', this.player.seek.bind(this.player, time));\n } else {\n this.player.seek(time);\n }\n },\n\n /**\n * Get player config. Method is asynchronous due to loading info from api\n *\n * @param stream\n */\n getConfig: function(stream) {\n stream = stream || this.getStream();\n\n return this.config\n .getJwConfig(stream)\n .catch(reason => {\n this.trigger('error', reason);\n });\n },\n\n /**\n * Set stream data\n *\n * @param stream\n */\n setStream: function(stream) {\n this.stream = stream;\n },\n\n /**\n * Get current stream loaded with player\n *\n * @returns {null|Stream|*}\n */\n getStream: function() {\n return this.stream;\n },\n\n setLocale: function (locale) {\n this.locale = locale;\n },\n\n /**\n * Check is ad is playing or not\n */\n isAdPlaying: function () {\n return this.adPlaying;\n },\n\n /**\n * Load given stream\n * Perform all required checks before stream playback\n *\n * @returns {Promise}\n */\n loadStream: function () {\n return new Promise(resolve => {\n // for lazy loaded player\n if (!this.isInitalized) {\n this.setup();\n this.player.on('ready', resolve);\n } else {\n resolve();\n }\n });\n },\n\n /**\n * Play stream\n */\n play: function() {\n // ensure stream is loaded properly\n this.loadStream()\n .then(this.player.play.bind(this.player));\n },\n\n /**\n * Pause stream\n * @param force state\n */\n pause: function(force) {\n this.player.pause(force);\n },\n\n /**\n * Destroy the player instance, reset DOM, clean up listeners\n */\n remove: function() {\n // cleanup any bind listener\n this.off();\n\n if (this.player) {\n this.pause(true);\n\n this.player.off();\n\n // TODO remove antiadblock on remove?\n this.player.remove();\n\n this.trigger('remove');\n }\n },\n\n /**\n * Get stream duration\n *\n * @returns {*}\n */\n getDuration: function() {\n const duration = this.player.getDuration();\n\n if (duration < 0) {\n return -duration;\n }\n\n return duration;\n },\n\n /**\n * Get current playback time\n *\n * @returns {*}\n */\n getCurrentTime: function() {\n let { currentTime } = this;\n\n if (currentTime) {\n return currentTime;\n }\n\n // player not initialized (error/geoblock)\n // return 0\n if(!this.player) {\n return 0;\n }\n\n currentTime = this.player.getPosition();\n\n if (currentTime < 0) {\n return (this.getDuration() + currentTime);\n }\n\n return this.player.getPosition();\n },\n\n getState: function() {\n if (this.isAdPlaying()) {\n return 'adPlaying';\n }\n\n return this.player.getState();\n },\n\n // eslint-disable-next-line consistent-return\n getAdBlock: function () {\n if (this.player) {\n return this.player.getAdBlock();\n }\n },\n\n /**\n * Get poster for current stream\n * Poster may be changed in config\n *\n * @returns {*}\n */\n getPoster: function(stream, container) {\n return this.config.getPoster(stream, container);\n },\n\n /**\n *\n * Get playback mode\n *\n * @returns {*}\n */\n getProvider: function() {\n const provider = this.player.getProvider();\n\n if (provider && provider.name === 'flash') {\n return 'flash';\n }\n\n return 'html5';\n },\n\n /**\n * Get list of captions extended by data from api\n *\n * @returns {*}\n */\n getCaptionsList: function () {\n const playerCaptions = this.player.getCaptionsList();\n const captions = this.getStream().getCaptions();\n\n // merge player captions data with result from api\n utils.each(playerCaptions, caption => {\n utils.each(captions, item => {\n if (caption.id === item.url) {\n caption.language = item.language;\n caption.default = item.default;\n }\n });\n });\n\n return playerCaptions;\n },\n\n /**\n * Set current captions\n * @param index (number|string) - string is language key, number is index in array\n */\n setCurrentCaptions: function (index) {\n if (!utils.isNumber(index)) {\n utils.each(this.getCaptionsList(), (caption, captionsIndex) => {\n if (caption && caption.language === index) {\n index = captionsIndex;\n }\n });\n\n // fallback to off in case index is not found in captions array\n if (!utils.isNumber(index)) {\n index = 0;\n }\n }\n\n // set captions in player\n this.player.setCurrentCaptions(index);\n },\n\n /**\n * Handle all errors from player\n */\n onError: function (data) {\n const code = data.code;\n const message = data.message ? data.message.toString() : '';\n\n /**\n * Some errors do not prevent playback to play\n * thus they should be omitted\n */\n const skipErrors = [\n 'Captions failed to load', // could not load\n 'Casting failed to load' // chrome disabled\n ];\n\n // skip errors\n if (skipErrors.indexOf(message) > -1) {\n return;\n }\n\n if (code === 210002) {\n // Flash plugin failed to load\n // click to play\n this.pause();\n this.trigger('flashBlocked');\n return;\n }\n\n this.trigger('error', {\n message,\n code\n });\n },\n\n /**\n * Event triggered before first stream play\n * Useful for statistics\n */\n onPlaylistItemLoad: function (playlistItem) {\n const container = this.getContainer();\n let playbackEndTime = null;\n\n if (!this.playlistItem || this.playlistItem.file !== playlistItem.item.file) {\n playbackEndTime = this.stream.getPlaybackTime('end');\n\n // cleanup any previous beforePlay event (playnext after countdown or error)\n this.stopListening(this.player, 'beforePlay');\n\n if (!this.playlistItem || this.playlistItem.id !== playlistItem.item.id) {\n // trigger this event every time new playlist item is loaded\n this.listenToOnce(this.player, 'beforePlay', function() {\n if (this.stream.getTimeToStart() < 0) {\n this.trigger('initialPlay');\n }\n }, this);\n\n // ads should not if stream has future start time\n // attach event only for secure streams\n if (this.stream.isSecure()) {\n // reload playlist only if token expired\n // play method do this out of the box\n this.listenToOnce(this.player, 'displayClick', function() {\n if (!this.config.hasValidToken() && this.player.getState() !== 'playing') {\n this.play();\n }\n }, this);\n }\n\n this.trigger('playlistItem', playlistItem.item);\n\n // handle ads only playback\n // class name is scrambled to avoid adblockers\n if (this.stream.getVendor() === 'appnexus') {\n utils.addClass(container, 'svp-appnxs');\n } else {\n utils.removeClass(container, 'svp-appnxs');\n }\n\n // clear ad playing flag for current content\n // important when changing stream while adslot is playing\n this.adPlaying = false;\n\n this.listenToOnce(this.player, 'firstFrame', () => this.onFirstFrameLoad(playlistItem.item.id));\n\n this.listenToOnce(this.player, 'levels', data => {\n const icon = container.querySelector('.jw-icon-settings');\n\n if (icon) {\n icon.style.display = '';\n\n // hide settings icon when there is only one level available\n // usually this is a case for iOS or when hls has limited bitrate\n if (data && data.levels && data.levels.length === 1) {\n icon.style.display = 'none';\n }\n }\n }, this);\n }\n\n this.playlistItem = playlistItem.item;\n\n // attach playback listener\n if (playbackEndTime > 0) {\n onPlaybackEndAvailable.call(this, playbackEndTime);\n }\n }\n },\n\n /**\n * Time\n *\n * @param data.position - current playback time\n * @param data.duration - current stream duration\n */\n onTime: function(data) {\n if (data.position < 0) {\n this.trigger('time', -(data.duration - data.position), -(data.duration));\n } else {\n this.trigger('time', data.position, data.duration);\n }\n },\n\n /**\n * Triggered on first frame of content playback - after ads\n */\n onFirstFrameLoad(playlistItemId) {\n // first play of stream\n const mediaType = this.stream.get('mediaType');\n const startTime = this.stream.getPlaybackTime('begin') || 0;\n\n if(device.isSamsungInternet() && mediaType === 'video') {\n utils.removeClass(this.getContainer(), 'jw-flag-media-audio');\n }\n\n this.once('time', () => {\n // check if currently set video id is the same as played one\n // it can happen when playnext is called before assetPlay\n if(playlistItemId === this.stream.getId()) {\n this.trigger('assetPlay', startTime);\n }\n });\n },\n\n /**\n * Handler for checking player size\n */\n onPlayerResize: function(data) {\n this.viewport.update(data.width);\n },\n\n onViewportChange: function(currentViewport, previousViewport) {\n // remove current class from container if it exist\n if (previousViewport.label) {\n utils.removeClass(this.getContainer(), `svp-viewport-${previousViewport.label}`);\n }\n\n utils.addClass(this.getContainer(), `svp-viewport-${currentViewport.label}`);\n\n this.trigger('viewport', currentViewport, previousViewport);\n },\n\n onMeta: function (data) {\n const params = data.metadata && data.metadata.TXXX && data.metadata.TXXX.name;\n\n if (params) {\n // place_categoryId_slotDuration_slotFetchTime\n if (params.indexOf('fetch') > -1) {\n const slotDuration = parseInt(params.split('_')[2], 10);\n\n if (slotDuration) {\n this.config.getLiveMidrollTag(slotDuration).then(adTag => {\n // adjust position on lives to be always negative\n const position = -(Math.abs(this.player.getPosition()));\n\n if (adTag) {\n this.once('adSlotComplete', function () {\n this.listenToOnce(this.player, 'providerFirstFrame', function () {\n this.player.seek(position);\n }, this);\n }, this);\n\n this.player.playAd(adTag);\n }\n });\n }\n } else if (params.indexOf('cancel') > -1) {\n this.player.skipAd();\n }\n }\n },\n\n onPlay: function(data) {\n this.trigger('play', {\n playReason: data.playReason\n });\n },\n onPause: function(data) {\n utils.removeClass(this.getContainer(), 'jw-state-buffering');\n\n this.trigger('pause', data);\n },\n\n /**\n * Correct event flow for end of streaming\n */\n onComplete: function() {\n // wait until postroll will finish\n this.trigger('complete');\n }\n};\n\n/**\n * Extend player with events\n * Add methods from JW which are used without any rewriting\n */\nutils.extend(PlayerModel.prototype, utils.Events, forwardMethods.call(PlayerModel.prototype, [\n 'getCurrentCaptions', 'setCaptionsStyles'\n]));\n\n/* jshint newcap: false */\nexport default HomadAdsJw(PlayerModel);\n","/**\n * @type {Blob}\n */\n// eslint-disable-next-line max-len\nvar VIDEO = new Blob([new Uint8Array([0, 0, 0, 28, 102, 116, 121, 112, 105, 115, 111, 109, 0, 0, 2, 0, 105, 115, 111, 109, 105, 115, 111, 50, 109, 112, 52, 49, 0, 0, 0, 8, 102, 114, 101, 101, 0, 0, 2, 239, 109, 100, 97, 116, 33, 16, 5, 32, 164, 27, 255, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 33, 16, 5, 32, 164, 27, 255, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 167, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 2, 194, 109, 111, 111, 118, 0, 0, 0, 108, 109, 118, 104, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 232, 0, 0, 0, 47, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 236, 116, 114, 97, 107, 0, 0, 0, 92, 116, 107, 104, 100, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 101, 100, 116, 115, 0, 0, 0, 28, 101, 108, 115, 116, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 47, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 100, 109, 100, 105, 97, 0, 0, 0, 32, 109, 100, 104, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 68, 0, 0, 8, 0, 85, 196, 0, 0, 0, 0, 0, 45, 104, 100, 108, 114, 0, 0, 0, 0, 0, 0, 0, 0, 115, 111, 117, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 111, 117, 110, 100, 72, 97, 110, 100, 108, 101, 114, 0, 0, 0, 1, 15, 109, 105, 110, 102, 0, 0, 0, 16, 115, 109, 104, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 100, 105, 110, 102, 0, 0, 0, 28, 100, 114, 101, 102, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 117, 114, 108, 32, 0, 0, 0, 1, 0, 0, 0, 211, 115, 116, 98, 108, 0, 0, 0, 103, 115, 116, 115, 100, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 87, 109, 112, 52, 97, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 16, 0, 0, 0, 0, 172, 68, 0, 0, 0, 0, 0, 51, 101, 115, 100, 115, 0, 0, 0, 0, 3, 128, 128, 128, 34, 0, 2, 0, 4, 128, 128, 128, 20, 64, 21, 0, 0, 0, 0, 1, 244, 0, 0, 1, 243, 249, 5, 128, 128, 128, 2, 18, 16, 6, 128, 128, 128, 1, 2, 0, 0, 0, 24, 115, 116, 116, 115, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 4, 0, 0, 0, 0, 28, 115, 116, 115, 99, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 28, 115, 116, 115, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 115, 0, 0, 1, 116, 0, 0, 0, 20, 115, 116, 99, 111, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 44, 0, 0, 0, 98, 117, 100, 116, 97, 0, 0, 0, 90, 109, 101, 116, 97, 0, 0, 0, 0, 0, 0, 0, 33, 104, 100, 108, 114, 0, 0, 0, 0, 0, 0, 0, 0, 109, 100, 105, 114, 97, 112, 112, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 105, 108, 115, 116, 0, 0, 0, 37, 169, 116, 111, 111, 0, 0, 0, 29, 100, 97, 116, 97, 0, 0, 0, 1, 0, 0, 0, 0, 76, 97, 118, 102, 53, 54, 46, 52, 48, 46, 49, 48, 49])], { type: 'video/mp4' });\n\nexport default function () {\n return {\n id: 1,\n status: 'active',\n streamUrls: {\n hls: URL.createObjectURL(VIDEO)\n },\n\n images: {\n main: null\n },\n\n streamConfiguration: {\n properties: []\n }\n };\n}\n","import utils from 'utils/utils';\n\nconst PluginModel = function() {\n this.player = null;\n this.el = null;\n};\n\nPluginModel.prototype = {\n getName: function() {\n throw new Error('getName() method has to be implemented');\n },\n\n setup: function() {},\n destroy: function() {},\n\n setPlayer: function(player) {\n this.player = player;\n this.setup(player);\n }\n};\n\nPluginModel.extend = utils.model.extend;\n\nutils.extend(PluginModel.prototype, utils.Events);\n\nexport default PluginModel;\n","/* global console */\nimport utils from 'utils/utils';\nimport PluginModel from 'player/plugins/model';\n\nconst Plugins = (function() {\n const plugins = {};\n const pluginsRepo = 'http://localhost:3000/plugins/';\n\n const PluginsLoader = function(options) {\n // no plugins provided, complete immediately\n if (!options) {\n // timeout for proper event listener fire\n setTimeout(this.trigger.bind(this, 'complete'), 300);\n return;\n }\n const scripts = Object.keys(options);\n let queueLen = scripts.length;\n\n function onResponse(plugin, status) {\n queueLen -= 1;\n\n if (status === 'error') {\n // eslint-disable-next-line no-console\n console.error(`An error occur while loading ${plugin}`);\n }\n // plugins are loaded when all requests from batch have been finished\n if (queueLen === 0) {\n this.trigger('complete');\n }\n }\n\n function getPluginSrc(plugin) {\n if (plugin.indexOf('http') > -1) {\n return plugin;\n }\n\n return pluginsRepo + plugin;\n }\n\n utils.each(scripts, function(plugin) {\n const pluginSrc = getPluginSrc(plugin);\n\n // eslint-disable-next-line new-cap\n const request = new utils.scriptLoader(pluginSrc);\n\n request.on('complete', onResponse.bind(this, plugin));\n request.on('error', onResponse.bind(this, pluginSrc, 'error'));\n\n request.load();\n }.bind(this));\n };\n\n utils.extend(PluginsLoader.prototype, utils.Events);\n\n return utils.extend({\n register: function(plugin) {\n const name = plugin.getName();\n\n // register the same plugin only once\n if (!plugins[name]) {\n plugins[name] = PluginModel.extend(plugin);\n }\n },\n\n load: function(options) {\n return new Promise(function(resolve) {\n const loader = new PluginsLoader(options);\n loader.on('complete', resolve);\n });\n },\n\n get: function(name) {\n return plugins[name];\n }\n }, utils.Events);\n}());\n\nexport default Plugins;\n","/* global apntag */\nimport config from 'player/config';\nimport utils from 'utils/utils';\nimport logger from 'utils/logger';\n\nexport default utils.extend({\n isLoaded: null,\n\n load() {\n if (window.apntag) {\n this.isLoaded = true;\n return Promise.resolve();\n } else if(this.isLoaded === false) {\n // after loading fail we do not retry\n return Promise.reject({\n firstLoad: false\n });\n }\n\n // load this only once\n return utils.loadScript(config.ads.appnexus.ast).then(() => {\n // check if object really exist\n this.isLoaded = typeof window.apntag === 'object';\n }).catch((error) => {\n // appnexus can be blocked by adblock\n this.isLoaded = false;\n\n return Promise.reject({\n firstLoad: true,\n error\n });\n });\n },\n\n defineTag(tagId, tagOptions) {\n return this.load().then(() => {\n const tagConfig = utils.merge({\n targetId: tagId\n }, tagOptions);\n\n apntag.debug = config.ads.appnexus.debug;\n // apntag tag overriden by reference\n apntag.defineTag(utils.extend({}, tagConfig));\n\n apntag.loadTags(tagId);\n apntag.onEvent('adLoaded', tagId, this.trigger.bind(this, 'adLoaded', tagId));\n }).catch((error) => {\n if(error.firstLoad) {\n logger('SVP').log('Could not load AST tag');\n }\n });\n },\n\n showTag(tagId) {\n if(this.isLoaded) {\n apntag.showTag(tagId);\n }\n },\n\n refreshTag(tagId) {\n if(this.isLoaded) {\n apntag.refresh([tagId]);\n }\n },\n\n resizeTag(tagId, dimmensions) {\n const size = [\n parseInt(dimmensions[0], 10),\n parseInt(dimmensions[1], 10)\n ];\n\n if (this.isLoaded) {\n apntag.resizeAd(tagId, size);\n }\n },\n\n off(targetId) {\n if(this.isLoaded) {\n apntag.offEvent('adLoaded', targetId);\n }\n }\n}, utils.Events);\n","import utils from 'utils/utils';\nimport closeIcon from 'icons/close.svg';\nimport appnexus from 'player/playback/ads/appnexus-ast';\nimport pauseTemplate from './pause.html';\nimport PluginModel from './model';\n\nconst PausePlugin = function (options) {\n PluginModel.call(this, options);\n this.maxDisplays = -1;\n this.displayCounter = 0;\n};\n\nPausePlugin.prototype = utils.inherit(PluginModel.prototype); // Here's where the inheritance occurs\nPausePlugin.prototype.constructor = PausePlugin;\n\n/**\n * Check if ad is loaded\n *\n * @param sourceMethod\n * @returns {Function}\n */\nfunction withAdTag(sourceMethod) {\n // eslint-disable-next-line consistent-return\n return function () {\n if (this.adPlacement) {\n return sourceMethod.apply(this, Array.prototype.slice.call(arguments));\n }\n };\n}\n\nfunction withCounter(sourceMethod) {\n // eslint-disable-next-line consistent-return\n return function () {\n if (this.maxDisplays === -1 || this.displayCounter < this.maxDisplays) {\n return sourceMethod.apply(this, Array.prototype.slice.call(arguments));\n }\n };\n}\n\nutils.extend(PausePlugin.prototype, {\n counter: 0,\n getName: function () {\n return 'PausePlugin';\n },\n\n resizeAd: withAdTag(function (width, height) {\n let size = (width && height) ? [width, height] : null;\n\n if (!size) {\n size = this.player.getContainer().getBoundingClientRect();\n size = [size.width, size.height];\n }\n\n appnexus.resizeTag(this.containerId, size);\n }),\n\n load: withAdTag(function (appnexusAdId) {\n this.listenTo(appnexus, 'adLoaded', function (adId, adData) {\n // different adId\n if (appnexusAdId !== adId) {\n return;\n }\n\n this.resizeAd();\n utils.addClass(this.el, 'svp-pause-view--visible');\n\n this.trigger('adVisible', {\n adId,\n creativeId: adData.creativeId\n });\n\n this.isAdTagLoaded = true;\n }, this);\n\n appnexus.defineTag(\n appnexusAdId,\n this.adPlacement\n ).then(() => {\n appnexus.showTag(appnexusAdId);\n });\n }),\n\n show: withCounter(withAdTag(function (data) {\n const pauseReason = data && data.pauseReason;\n\n // undefined is returned on ie11 win7\n // settingsInteraction is triggered on mobile phones while using quality or share button\n if (pauseReason !== undefined && pauseReason !== 'external' && pauseReason !== 'settingsInteraction') {\n this.displayCounter += 1;\n\n if (this.isAdTagLoaded === true) {\n appnexus.refreshTag(this.containerId);\n } else {\n this.load(this.containerId);\n }\n }\n })),\n\n hide: withAdTag(function () {\n utils.removeClass(this.el, 'svp-pause-view--visible');\n }),\n\n /**\n * Fixing pause event triggered while interacting with scrub bar\n * @param data\n */\n onPause: withCounter(function (data) {\n let timerId = null;\n\n function onSeek() {\n if (timerId) {\n clearTimeout(timerId);\n timerId = null;\n }\n }\n\n timerId = setTimeout(() => {\n // cleanup seek listener when seek wasn't performed\n // eg regular pause button click\n this.stopListening(this.player.model, 'seek', onSeek);\n // display pause ad\n this.show(data);\n }, 50);\n\n // prevent to display pause ad when user seeked stream\n this.listenToOnce(this.player.model, 'seek', onSeek);\n }),\n\n onResumeClick: function() {\n this.player.play();\n utils.removeClass(this.el, 'svp-pause-view--visible');\n },\n\n setup: function () {\n PausePlugin.prototype.counter += 1;\n this.containerId = `svpPauseContainer${PausePlugin.prototype.counter}`;\n\n this.listenTo(this.player.model, 'playlistItem', function (item) {\n const { adPlacements } = item;\n\n if (adPlacements && adPlacements.pause) {\n // eslint-disable-next-line max-len\n this.maxDisplays = (typeof adPlacements.pause.maxDisplays === 'undefined') ? -1 : parseInt(adPlacements.pause.maxDisplays, 10);\n\n this.displayCounter = 0;\n this.render(adPlacements.pause);\n }\n }, this);\n\n this.listenTo(this.player.model, 'pause', this.onPause, this);\n this.listenTo(this.player, 'play', this.hide, this);\n },\n\n render: function (adTagOptions) {\n const appnexusAdContainerId = this.containerId;\n\n this.adPlacement = adTagOptions;\n this.el = utils.createNode(utils.template(pauseTemplate, {\n appnexusAdContainerId: appnexusAdContainerId,\n closeIcon: closeIcon\n }));\n\n const playButton = this.el.querySelector('.jw-icon-playback');\n const closeButton = this.el.querySelector('.svp-pause-close');\n\n if (playButton) {\n playButton.addEventListener('click', this.onResumeClick.bind(this), true);\n }\n\n if (closeButton) {\n closeButton.addEventListener('click', event => {\n event.stopPropagation();\n this.hide();\n }, true);\n }\n this.player.getContainer().appendChild(this.el);\n\n this.listenTo(this.player.model.player, 'resize', function (width, height) {\n if (this.player.getState() === 'paused') {\n this.resizeAd(width, height);\n }\n }, this);\n\n this.trigger('render');\n },\n\n destroy: function () {\n appnexus.off(this.containerId);\n\n this.stopListening(this.player);\n this.stopListening(this.player.model);\n this.stopListening(appnexus);\n\n this.adPlacement = null;\n this.isAdTagLoaded = false;\n\n if (this.el) {\n this.player.getContainer().removeChild(this.el);\n this.el = null;\n }\n }\n\n});\n\nexport default PausePlugin;\n","import utils from 'utils/utils';\nimport PluginModel from './model';\n/**\n * Displays Age Limit labels in player\n *\n * @param options\n * @constructor\n */\nconst AgeLimitPlugin = function (options) {\n PluginModel.call(this, options);\n\n this.ageLimit = options.ageLimit;\n};\n\nAgeLimitPlugin.prototype = utils.inherit(PluginModel.prototype); // Here's where the inheritance occurs\nAgeLimitPlugin.prototype.constructor = AgeLimitPlugin;\n\nutils.extend(AgeLimitPlugin.prototype, {\n getName: function() {\n return 'AgeLimitPlugin';\n },\n\n setup: function() {\n this.listenToOnce(this.player, 'assetPlay', this.render, this);\n\n this.once('render', this.show, this);\n },\n\n render: function() {\n // return number when there is no translation available\n const ageLimit = this.player.locale.translate(`ageLimit-${this.ageLimit}`, this.ageLimit);\n\n this.el = utils.createNode(`
${ageLimit}
`);\n this.player.getContainer().appendChild(this.el);\n\n this.trigger('render');\n },\n\n destroy: function() {\n this.stopListening(this.player);\n\n if (this.el) {\n this.player.getContainer().removeChild(this.el);\n this.el = null;\n }\n },\n\n\n show: function () {\n if (this.ageLimit !== null) {\n utils.addClass(this.player.getContainer(), 'svp-display-age-limit');\n\n // hide label after 3 seconds\n this.listenToOnce(this.player, 'time', setTimeout.bind(null, this.hide.bind(this), 3000));\n }\n },\n\n hide: function () {\n utils.removeClass(this.player.getContainer(), 'svp-display-age-limit');\n }\n});\n\nexport default AgeLimitPlugin;\n","import utils from 'utils/utils';\nimport countdownTemplate from './countdown.html';\nimport PluginModel from './model';\n/**\n * Renders countdown clock for streams which are not published yet\n *\n * @param options\n * @constructor\n */\nconst CountdownPlugin = function (options) {\n PluginModel.call(this, options);\n\n /**\n * Start date for stream (flightTime.start)\n * Javascript Date object\n */\n this.start = options.start;\n\n this.liveDOM = null;\n this.countdownDOM = null;\n};\n\nCountdownPlugin.prototype = utils.inherit(PluginModel.prototype); // Here's where the inheritance occurs\nCountdownPlugin.prototype.constructor = CountdownPlugin;\n\nutils.extend(CountdownPlugin.prototype, {\n labels: {\n date: 'Video will start at',\n timer: 'Video will start in'\n },\n\n getName: function() {\n return 'countdown';\n },\n\n setup: function() {\n this.listenTo(this.player, 'playlistItem', this.render, this);\n },\n\n /**\n * Cleanup old node\n */\n destroy: function() {\n this.stopListening(this.player);\n\n if (this.el) {\n this.player.getContainer().removeChild(this.el);\n this.el = null;\n }\n },\n\n render: function() {\n try {\n this.player.getContainer();\n } catch (error) {\n return;\n }\n\n this.el = utils.createNode(utils.template(countdownTemplate));\n this.player.getContainer().appendChild(this.el);\n\n utils.addClass(this.player.getContainer(), 'svp-countdown-loaded');\n\n // cached live label dom element\n // eslint-disable-next-line prefer-destructuring\n this.liveDOM = this.el.getElementsByClassName('svp-live-label')[0];\n // eslint-disable-next-line prefer-destructuring\n this.countdownDOM = this.el.getElementsByClassName('svp-countdown-live-timer')[0];\n\n // countdown is ready\n this.trigger('ready');\n // start event runs on first change of countdown\n this.once('change', this.trigger.bind(this, 'start'));\n\n // interval has to be initialized on\n this.intervalId = setInterval(this.refresh.bind(this), 1000);\n this.refresh();\n },\n\n refresh: function() {\n const start = this.getDateData(this.start);\n\n // trigger only if date has changed\n if (this.repaint(start)) {\n this.trigger('change', start);\n }\n },\n\n repaint: function(date) {\n const string = [];\n const liveDate = this.start;\n\n if (this.isCountdownActive()) {\n string.push(`${this.leadingZeros(date.min)}:`);\n string.push(`${this.leadingZeros(date.sec)}s`);\n\n if (this.currentState !== 'timer') {\n this.currentState = 'timer';\n this.liveDOM.innerHTML = this.player.locale.translate(this.labels[this.currentState]);\n\n utils.addClass(this.player.getContainer(), 'svp-countdown-active');\n }\n } else if (this.currentState !== 'date') {\n this.currentState = 'date';\n\n string.push(`${liveDate.getDate()} ${this.getMonthName(liveDate)} `);\n string.push(`${this.leadingZeros(liveDate.getHours())}:`);\n string.push((this.leadingZeros(liveDate.getMinutes())));\n\n this.liveDOM.innerHTML = this.player.locale.translate(this.labels[this.currentState]);\n }\n\n if (string.length > 0) {\n this.countdownDOM.innerHTML = (string.join(''));\n return true;\n }\n\n return false;\n },\n\n /**\n * End of countdown\n */\n stop: function() {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n }\n\n this.intervalId = null;\n this.el.parentNode.removeChild(this.el);\n this.el = null;\n\n utils.removeClass(this.player.getContainer(), ['svp-countdown-active', 'svp-countdown-loaded']);\n\n this.trigger('end');\n },\n\n\n /**\n * Format number by adding leading zeros eg 7 -> 07\n *\n * @param num\n * @param length\n * @returns {string|*}\n */\n leadingZeros: function (numValue, numLen) {\n const length = numLen || 2;\n let num = String(numValue);\n\n while (num.length < length) {\n num = `0${num}`;\n }\n\n return num;\n },\n\n getDateData: function (endDate) {\n let diff = (endDate - Date.parse(new Date())) / 1000;\n\n // end of counting\n if (diff <= 0) {\n diff = 0;\n\n if (this.intervalId) {\n this.stop();\n }\n }\n\n const dateData = {\n years: 0,\n days: 0,\n hours: 0,\n min: 0,\n sec: 0\n };\n\n if (diff >= (365.25 * 86400)) {\n dateData.years = Math.floor(diff / (365.25 * 86400));\n diff -= dateData.years * 365.25 * 86400;\n }\n\n if (diff >= 86400) {\n dateData.days = Math.floor(diff / 86400);\n diff -= dateData.days * 86400;\n }\n\n if (diff >= 3600) {\n dateData.hours = Math.floor(diff / 3600);\n diff -= dateData.hours * 3600;\n }\n\n if (diff >= 60) {\n dateData.min = Math.floor(diff / 60);\n diff -= dateData.min * 60;\n }\n\n dateData.sec = Math.floor(diff);\n\n return dateData;\n },\n\n /**\n * Get translated month name\n *\n * @param date\n * @returns {*}\n */\n getMonthName: function(date) {\n return this.player.locale.getMonthName(date);\n },\n\n /**\n * Check whatever countdown or date should be displayed\n * Countdown is active when less than 1 hour reminded to start\n * @returns {boolean}\n */\n isCountdownActive: function() {\n const now = new Date();\n\n // less than 1 hour\n return (Math.abs(this.start.getTime() - now.getTime())) < 3599999;\n }\n});\n\nexport default CountdownPlugin;\n","import Asset from './../asset';\n\nimport assetService from 'player/services/api/asset';\nimport relatedService from 'player/services/api/related';\n\nconst mapResponse = (vendor, assets) => assets.map(asset => {\n // add vendor to assets\n return new Asset(Object.assign({\n vendor\n }, asset));\n});\n\n/**\n * Get related engine\n *\n * @param useMlEngine\n * @returns {string}\n */\nconst getEngine = (useMlEngine) => useMlEngine === true ? 'related-ml' : 'related';\n\nconst fetchByIds = async ({ vendor, ids }) => {\n const assets = await assetService.getByIds({\n vendor,\n ids\n });\n\n return mapResponse(vendor, assets);\n};\n\nconst fetchFromRelatedEngine = async({ vendor, assetId, useMlEngine }) => {\n let assets = await relatedService.getList({\n engine: getEngine(useMlEngine),\n vendor,\n assetId\n });\n\n // fetch from old recommended\n if(useMlEngine === true && assets.length === 0) {\n assets = await relatedService.getList({\n engine: getEngine(false),\n vendor,\n assetId,\n });\n }\n\n return mapResponse(vendor, assets);\n};\n\n\nexport default {\n fetchByIds,\n fetchFromRelatedEngine\n}","/* eslint-disable no-underscore-dangle */\nimport utils from 'utils/utils';\nimport nextAsset from './next-asset';\nimport recommendedList from './recommended/list';\n\nclass Recommended {\n constructor({ asset, ml }) {\n this.asset = asset;\n this.useMlEngine = (['vgtv'].indexOf(asset.getVendor()) > -1 && ml !== false);\n }\n\n /**\n * Fetch next asset\n *\n * @returns {Promise}\n */\n getNextAsset(options = {}) {\n const { asset, useMlEngine } = this;\n\n // next asset can be provided in player configuration\n if (options.asset) {\n return nextAsset.fetchNextById({\n // set vendor is specified or use main asset as default\n vendor: options.asset.vendor || asset.getVendor(),\n // asset can be object or number with asset id\n assetId: options.asset.id || options.asset,\n source: 'config'\n });\n }\n\n return nextAsset.fetchNext(this.asset, {\n useMlEngine\n });\n }\n\n\n /**\n * Fetch recommended asset list\n * Fetch assets by ids when items provided as a param\n *\n * @param items optional array of ids\n * @returns {*}\n */\n async getItems(items) {\n const { useMlEngine } = this;\n\n const vendor = this.asset.getVendor();\n const assetId = this.asset.get('id');\n\n if (!utils.isArray(items) || items.length === 0) {\n return recommendedList.fetchFromRelatedEngine({\n vendor,\n assetId,\n useMlEngine\n });\n }\n\n return recommendedList.fetchByIds({\n ids: items,\n vendor\n });\n }\n}\n\nexport default Recommended;\n","import utils from 'utils/utils';\nimport image from 'utils/image';\nimport Recommended from 'player/model/recommended';\nimport closeIcon from 'icons/close.svg';\nimport nextIcon from 'icons/chevron-right.svg';\nimport recommendedTemplate from './recommended/recommended.html';\nimport nextAssetTemplate from './recommended/next-asset.html';\nimport gridTemplate from './recommended/grid.html';\nimport PluginModel from './model';\n/**\n * Renders countdown clock for streams which are not published yet\n *\n * @param options\n * @constructor\n */\nconst RecommendedPlugin = function (options) {\n PluginModel.call(this, options);\n\n // time in seconds from end of stream\n this.countdownTime = (options.settings && options.settings.next && options.settings.next.countdown) || 10;\n this.nextAsset = null;\n this.settings = utils.extend({\n grid: {\n items: []\n },\n next: {}\n }, options.settings);\n\n // check if grid items are available\n this.gridItemsReady = false;\n};\n\nRecommendedPlugin.prototype = utils.inherit(PluginModel.prototype); // Here's where the inheritance occurs\nRecommendedPlugin.prototype.constructor = RecommendedPlugin;\n\n/**\n * Play next asset from the list\n *\n * @param assetId - SVP Asset id\n * @param source - source of playnext (auto - when autoplay next, single, grid)\n */\nfunction playNext(assetId, source) {\n const clear = () => {\n utils.removeClass(this.el, ['is-grid-visible', 'is-next-visible', 'is-counting', 'is-next-closing']);\n };\n\n this.stopListening(this.player, 'complete');\n\n // autoplay of asset can be turned off from config\n if (this.settings.autoplay !== false) {\n this.player.playNext(assetId);\n }\n\n // nextAsset case, triggered by autoplay or user\n if (source === 'single' || source === 'auto') {\n this.trigger('nextAssetPlay', this.nextAsset, (source === 'auto') ? 'auto' : 'click', {\n source: this.nextAssetSource\n });\n\n utils.addClass(this.el, 'is-next-closing');\n setTimeout(clear, 700);\n } else {\n // grid click\n this.trigger('playRecommended', assetId);\n clear();\n }\n}\n\n/**\n * Turn off autoplay of recommended next asset\n */\nfunction disableNext() {\n this.trigger('nextAssetClose', this.nextAsset);\n this.nextAsset = null;\n utils.removeClass(this.el, 'is-next-visible is-counting is-next-visible');\n}\n\n/**\n * Retrieve full url for play next and grid assets thumbnails\n *\n * @param key\n * @returns {*}\n */\nfunction getThumbnailUrl(key) {\n return image.getImageSrc(key, 'poster', 200);\n}\n\n/**\n * Add snap scroll for mobile grid\n */\nfunction initSnapScroll() {\n const scrollSnapPrefix = utils.getScrollSnapPrefix();\n const gridItem = this.getByClass('svp-player-recommended-item')[0];\n\n // check if snap points are supported\n if (scrollSnapPrefix !== false) {\n this.el.style[`${scrollSnapPrefix}scroll-snap-type`] = 'mandatory';\n this.el.style[`${scrollSnapPrefix}scroll-snap-points-x`] = `repeat(${gridItem.clientWidth}px)`;\n }\n}\n/**\n * Click handler for recommended grid\n *\n * @param node\n */\nfunction onGridItemClicked(node) {\n utils.addClass(node, 'svp-to-active');\n\n this.listenToOnce(this.player, 'assetPlay', function() {\n utils.removeClass(this.player.getContainer(), 'is-recommended-grid-visible');\n }, this);\n\n setTimeout(() => {\n playNext.call(this, parseInt(node.dataset.id, 10), 'grid');\n utils.removeClass(this.el, 'is-grid-visible');\n }, 500);\n}\n\n/**\n * Fetch recommended assets when player is ready\n */\nfunction onPlaybackStart() {\n const recommended = new Recommended({\n asset: this.player.getAsset(),\n ml: this.settings.ml\n });\n\n // restore default state for each new asset\n this.gridItemsReady = false;\n\n // turn off option for grid\n if (this.settings.grid !== false) {\n recommended.getItems(this.settings.grid.items).then(items => {\n if (utils.isArray(items) && items.length > 0) {\n this.gridItemsReady = true;\n this.trigger('gridItemsReady', items);\n } else {\n utils.removeClass(this.player.getContainer(), 'is-recommended-grid-visible');\n }\n }).catch(() => {\n try {\n utils.removeClass(this.player.getContainer(), 'is-recommended-grid-visible');\n } catch (e) { }\n });\n }\n\n // next asset is available by default but can be turned off\n if (this.settings.next !== false) {\n recommended.getNextAsset(this.settings.next).then(({ nextAsset, source }) => {\n this.nextAsset = nextAsset;\n this.nextAssetSource = source;\n\n this.trigger('nextAssetReady', this.nextAsset, {\n source\n });\n }).catch(() => {\n if(this.el) {\n utils.removeClass(this.el, ['is-next-visible', 'is-counting', 'is-next-closing']);\n }\n });\n }\n}\n\n/**\n * Initialize lazy fetching\n */\nfunction onInitialize() {\n // fetch recommended 15s before playback end\n let fetchDuration = this.player.getDuration() - 15;\n\n // for streams shorter than 15s load next in 2s\n if (fetchDuration < 0) {\n fetchDuration = 2;\n }\n\n // do not enable recommended for live streams\n if (!this.player.model.getStream().isLive()) {\n this.listenTo(this.player, 'time', function (time) {\n if (fetchDuration > 0 && time > fetchDuration) {\n fetchDuration = -1;\n onPlaybackStart.call(this);\n }\n }, this);\n }\n}\n\n/**\n * Handler for stream end (countdown end) event\n * Stream complete can't be used due to circular events triggering\n */\nfunction onPlaybackComplete(reason) {\n // do not take any action if complete is triggered by playNext\n if (reason === 'playNext') {\n return;\n }\n\n if (this.nextAsset) {\n this.trigger('nextAssetComplete', this.nextAsset);\n playNext.call(this, this.nextAsset.get('id'), 'auto');\n } else if (this.gridItemsReady) {\n // display grid only when items are available\n utils.addClass(this.el, 'is-grid-visible');\n utils.addClass(this.player.getContainer(), 'is-recommended-grid-visible');\n\n initSnapScroll.call(this);\n this.trigger('gridVisible');\n }\n}\n\n/**\n * Handler for checking time in which playNext should be available\n * @param time\n * @param duration\n */\nfunction onTimeNextVisible(time, duration) {\n if (duration - time < this.countdownTime) {\n this.trigger('playNextVisible', Math.floor(duration - time));\n }\n}\n\n/**\n * Display play next in given time\n *\n * @param timeout - duration of countdown\n */\nfunction onPlayNextVisible(timeout) {\n utils.addClass(this.el, 'is-next-visible is-counting');\n\n this.stopListening(this.player, 'time', onTimeNextVisible);\n // update transition duration as it may be smaller than default due to seek\n this.getByClass('svp-player-recommended-countdown')[0].style.transitionDuration = `${timeout}s`;\n}\n\n/**\n * Handler triggered when nextAsset is available for current stream\n */\nfunction onNextAssetReady() {\n const img = new Image();\n // prefetch image\n img.src = getThumbnailUrl(this.nextAsset.getThumbnail());\n\n this.listenTo(this.player, 'time', onTimeNextVisible, this);\n\n this.getByClass('svp-player-recommended-next')[0].innerHTML = utils.template(nextAssetTemplate, {\n next: this.nextAsset,\n countdown: this.countdownTime, // default countdown\n getThumbnail: getThumbnailUrl,\n closeIcon: closeIcon,\n nextIcon: nextIcon\n });\n\n this.getByClass('svp-player-recommended-image')[0]\n .addEventListener('click', playNext.bind(this, this.nextAsset.get('id'), 'single'));\n\n this.getByClass('svp-player-recommended-close')[0]\n .addEventListener('click', disableNext.bind(this));\n}\n\n/**\n * Triggered when grid items are available\n */\nfunction onGridItemsReady(recommended) {\n this.getByClass('svp-player-recommended-grid')[0].innerHTML = utils.template(gridTemplate, {\n recommended: recommended,\n getThumbnail: getThumbnailUrl,\n utils: utils\n });\n\n utils.each(this.getByClass('svp-player-recommended-item'), item => {\n item.addEventListener('click', onGridItemClicked.bind(this, item));\n });\n}\n\n/**\n * Triggered when recommended grid is displayed\n */\nfunction onGridVisible() {\n // replay asset triggers play\n // clicking on grid not intersects with this\n this.listenToOnce(this.player, 'play', this.trigger.bind(this, 'assetReplay'));\n}\n\n/**\n * Event fired when user decided to restart video\n */\nfunction onAssetReplay() {\n // attach events to allow again display of grid\n this.setup();\n // cleanup state\n utils.removeClass(this.player.getContainer(), 'is-recommended-grid-visible');\n utils.removeClass(this.el, ['is-grid-visible', 'is-next-visible', 'is-counting', 'is-next-closing']);\n}\n\nutils.extend(RecommendedPlugin.prototype, {\n getName() {\n return 'RecommendedPlugin';\n },\n\n setup() {\n // assetPlay\n this.stopListening(this.player);\n this.listenToOnce(this.player, 'assetPlay', this.render, this);\n this.listenToOnce(this.player, 'assetPlay', onInitialize, this);\n this.listenToOnce(this.player, 'complete', onPlaybackComplete, this);\n\n\n this.once('playNextVisible', onPlayNextVisible, this);\n this.once('nextAssetReady', onNextAssetReady, this);\n this.once('gridItemsReady', onGridItemsReady, this);\n this.once('gridVisible', onGridVisible, this);\n this.once('assetReplay', onAssetReplay, this);\n },\n\n /**\n * Get current element child node by class name\n *\n * @param className\n * @returns {NodeList|*}\n */\n getByClass(className) {\n return this.el.getElementsByClassName(className);\n },\n\n /**\n * Render default view holder for play next and recommended\n *\n */\n render() {\n const container = this.player.getContainer();\n const previousEl = container.getElementsByClassName('svp-player-recommended-box');\n\n // clean if previously grid was displayed\n utils.removeClass(this.player.getContainer(), 'is-recommended-grid-visible');\n\n // cleanup old element\n // recommended is \"async\" so it can't be destroyed like normal plugin\n if (previousEl.length > 0) {\n container.removeChild(previousEl[0]);\n }\n\n this.el = utils.createNode(utils.template(recommendedTemplate));\n\n container.appendChild(this.el);\n }\n});\n\nexport default RecommendedPlugin;\n","/* global console */\nimport utils from 'utils/utils';\n\nconst ClickTracker = {\n vendor: null,\n\n mode: 'TRACK',\n url: '//click.vgnett.no/svp.gif?s=',\n\n /**\n * Track media event\n *\n * @param data\n */\n trackMediaEvent: function (data) {\n const query = [];\n\n query.push(`d=${this.getDeviceType()}`);\n query.push(`v=${data.assetId}`);\n\n this.sendRequest('media', query.join('&'));\n },\n\n /**\n * Track playback events in certain time\n *\n * @param data\n */\n trackStreamEvent: function (data) {\n const query = [];\n\n query.push(`d=${this.getDeviceType()}`);\n query.push(`v=${data.assetId}`);\n query.push(`p=${data.time}`);\n\n // randomize request time for avoiding api peaks\n setTimeout(this.sendRequest.bind(this, 'stream', query.join('&')), Math.floor((Math.random() * 100) + 1));\n },\n\n /**\n * Send API request using 1x1px image\n *\n * @param type\n * @param queryString\n */\n sendRequest: function (type, queryString) {\n const image = new Image();\n const apiUrl = this.getApiUrl(type);\n const hypen = apiUrl.indexOf('?') > -1 ? '&' : '?';\n\n // track only if tracker is initialized\n if (this.vendor) {\n if (this.mode === 'LOG') {\n // eslint-disable-next-line no-console\n console.log('SVP STATS: ', [\n queryString,\n `${apiUrl + hypen + queryString}&cb=${Math.random() * 10000}`\n ]);\n }\n\n image.src = `${apiUrl + hypen + queryString}&cb=${Math.random() * 10000}`;\n }\n\n return image;\n },\n\n /**\n * Return full API endpoint url\n *\n * @returns {string}\n */\n getApiUrl: function (type) {\n if (this.vendor === 'vgtv' && type === 'media') {\n return '//click.vgnett.no/vgtv.gif';\n }\n\n return this.url + this.vendor;\n },\n\n /**\n * Tracking is divided by device type\n *\n * @returns {*}\n */\n getDeviceType: function () {\n if (utils.device.isTablet()) {\n return 'tablet';\n }\n\n if (utils.device.isMobile()) {\n return 'mobile';\n }\n\n return 'desktop';\n }\n};\n\nexport default ClickTracker;\n","import utils from 'utils/utils';\nimport ClickTracker from './svp-stats/tracker';\nimport PluginModel from './model';\n/**\n * Basic SVP statistics tool\n *\n * @param options\n * @constructor\n */\nconst SvpStatsPlugin = function (options) {\n PluginModel.call(this, options);\n\n this.env = options.env;\n this.vendor = options.vendor;\n this.mode = options.mode;\n};\n\nSvpStatsPlugin.prototype = utils.inherit(PluginModel.prototype); // Here's where the inheritance occurs\nSvpStatsPlugin.prototype.constructor = SvpStatsPlugin;\n\n/**\n * Seconds intervals for tracking\n * @returns {number}\n */\nfunction getTrackingInterval(duration) {\n // if duration is not set then do not track it\n if (duration > 0) {\n // for streams shorter than 250s tracking interval is 5seconds\n if (duration < 250) {\n return 5;\n }\n\n // otherwise it's every 2% of stream\n return Math.floor(duration * 0.02);\n }\n\n return -1;\n}\n\nutils.extend(SvpStatsPlugin.prototype, {\n getName: function () {\n return 'SvpStatsPlugin';\n },\n\n setup: function () {\n // stats can be turned off only on non production env\n if (this.mode === 'OFF' && this.env !== 'production') {\n return;\n }\n\n ClickTracker.mode = this.mode;\n ClickTracker.vendor = this.vendor;\n\n this.listenTo(this.player, 'assetPlay', function (startTime) {\n const asset = this.player.getAsset();\n const assetId = asset.get('id');\n const duration = this.player.getDuration();\n const trackingInterval = getTrackingInterval(duration);\n\n let initialStartTime = startTime || -1;\n let currentTime = -1;\n\n ClickTracker.trackMediaEvent({\n assetId: assetId\n });\n\n // tracking interval maybe invalid when stream is live or do not have proper duration\n if (trackingInterval > 0 && asset.get('streamType') !== 'live') {\n // assetPlay prevents from sending events when it has start time\n this.listenTo(this.player, 'time', playerTime => {\n const time = Math.floor(playerTime);\n\n // engagement tracking\n if (time !== currentTime && time % trackingInterval === 0 && time > initialStartTime) {\n currentTime = time;\n // reset start time counter for tracking seek before start point in indexed stream\n initialStartTime = -1;\n\n // prevent requests outside stream size\n if (time > -1 && time <= duration) {\n ClickTracker.trackStreamEvent({\n assetId: assetId,\n time: time\n });\n }\n }\n });\n }\n });\n\n this.listenTo(this.player, 'adSlotStart', function (adSlot) {\n if (adSlot.position === 'preroll') {\n ClickTracker.trackStreamEvent({\n assetId: this.player.getAsset().get('id'),\n time: -1\n });\n }\n });\n\n this.listenTo(this.player, 'adSlotComplete', function (adSlot) {\n if (adSlot.position === 'preroll') {\n ClickTracker.trackStreamEvent({\n assetId: this.player.getAsset().get('id'),\n time: -2\n });\n }\n });\n },\n\n destroy: function () {\n ClickTracker.vendor = null;\n this.stopListening(this.player);\n }\n});\n\nexport default SvpStatsPlugin;\n","import scriptLoader from 'utils/script-loader';\n\nconst TRACKER_ID = 'svp-tracker';\n\nconst PulseTrackerLoader = {\n request: null,\n\n providers: [],\n\n /**\n * Load pulse library only once per page\n *\n * @returns {null}\n */\n load() {\n if(!this.request) {\n if(!window.pulse) {\n // a global pulse object has to be present to avoid autoloader errors\n window.pulse = window.pulse || function() {\n window.pulse.q = window.pulse.q || [];\n window.pulse.q.push(arguments);\n };\n\n this.request = scriptLoader('//sdk.pulse.schibsted.com/pulse.min.js');\n } else {\n // pulse is already available\n this.request = Promise.resolve();\n }\n }\n\n return this.request;\n },\n\n init(provider) {\n return this.load().then(() => {\n const PROVIDER_TRACKER_ID = `${TRACKER_ID}-${provider}`;\n\n // initialize pulse only once per page per provider\n if(PulseTrackerLoader.providers.indexOf(provider) === -1) {\n PulseTrackerLoader.providers.push(provider);\n\n // we need to name the tracker to avoid tracking conflicts when embedding the player\n window.pulse('init', provider, null, null, PROVIDER_TRACKER_ID);\n }\n\n return new Promise(resolve => {\n window.pulse(PROVIDER_TRACKER_ID, (tracker) => resolve(tracker));\n });\n });\n }\n};\n\nexport default PulseTrackerLoader;\n","import BackboneEvents from './backbone.events';\n\n/**\n * Simple syntactic sugar for easier extending objects with events\n */\nclass Eventable {}\nObject.assign(Eventable.prototype, BackboneEvents);\n\nexport default Eventable;","import Eventable from 'utils/eventable';\n\n/**\n * Parse SVP Player events and tailor data to pulse requirements\n *\n * Available events: Play, Pause, Stop, Watch\n */\nclass AdEvents extends Eventable {\n constructor(player) {\n super();\n this.player = player;\n this.adData = {};\n this.beforeUnload = ['beforeunload', this.onAdSlotComplete.bind(this), true];\n\n this.listenTo(this.player, 'adSlotStart', this.onAdSlotStart, this);\n this.listenTo(this.player, 'adStarted', this.onAdStarted, this);\n this.listenTo(this.player, 'adProgress', this.onAdProgress, this);\n this.listenTo(this.player, 'adSlotComplete', this.onAdSlotComplete, this);\n\n this.listenTo(this.player, 'adPause', this.onAdPause, this);\n this.listenTo(this.player, 'adPlay', this.onAdPlay, this);\n\n this.listenTo(this.player, 'PausePlugin:adVisible', this.onPauseAdVisible, this);\n\n this.listenTo(this.player, 'ready', this.onReady, this);\n }\n\n onReady() {\n this.listenTo(this.player.model.player, 'adImpression', (adData) => {\n Object.assign(this.adData, {\n duration: Math.round(adData.duration)\n });\n });\n }\n\n onAdSlotStart(slotData) {\n window.addEventListener(...this.beforeUnload);\n\n Object.assign(this.adData, {\n type: slotData.position\n });\n }\n\n onAdStarted() {\n Object.assign(this.adData, {\n start: true\n });\n\n this.listenToOnce(this.player.model.player, 'adMeta', (adData) => {\n let adId = null;\n\n try {\n const adXml = adData.response.querySelectorAll('Ad')[adData.sequence - 1];\n adId = adXml.id;\n } catch (e) {}\n\n Object.assign(this.adData, {\n id: adId,\n sequence: adData.sequence,\n count: adData.podcount,\n position: 0\n });\n });\n }\n\n onAdProgress(time) {\n const position = Math.floor(time);\n const previousPosition = this.adData.position;\n\n Object.assign(this.adData, {\n position\n });\n\n if(previousPosition !== position) {\n this.trigger('Watch', this.adData);\n }\n }\n\n onAdSlotComplete() {\n window.removeEventListener(...this.beforeUnload);\n\n // prevent cleaning object by reference\n this.trigger('Stop', Object.assign({}, this.adData));\n this.adData = {};\n }\n\n onAdPlay() {\n this.trigger('Play', this.adData);\n\n // start indicates first play of ad\n this.adData.start = false;\n }\n\n onAdPause() {\n this.trigger('Pause', this.adData);\n }\n\n onPauseAdVisible(data) {\n this.trigger('View', {\n id: data.creativeId,\n type: 'Pausead'\n });\n }\n\n destroy() {\n window.removeEventListener(...this.beforeUnload);\n this.stopListening();\n }\n}\n\nexport default AdEvents;","export default {};","import Eventable from 'utils/eventable';\nimport session from './session';\n\n/**\n * Parse SVP Player events and tailor data to pulse requirements\n *\n * Available events: Play, Pause, Stop, Watch\n */\nclass PlaybackEvents extends Eventable {\n constructor(player) {\n super();\n this.player = player;\n this.watchData = {\n time: 0\n };\n\n this.session = this.createSession();\n this.beforePlaybackStarted = true;\n this.beforeUnload = ['beforeunload', this.onBeforeUnload.bind(this), true];\n\n this.listenTo(this.player, 'playlistItem', this.onPlaylistItem, this);\n this.listenTo(this.player, 'initialPlay', this.onInitialPlay, this);\n this.listenTo(this.player, 'assetPlay', this.onAssetPlay, this);\n this.listenTo(this.player, 'pause', this.onPause, this);\n this.listenTo(this.player, 'play', this.onPlay, this);\n this.listenTo(this.player, 'complete', this.onComplete, this);\n\n if(this.stream.isLive()) {\n this.listenTo(this.player, 'time', this.onLiveTime, this);\n } else {\n this.listenTo(this.player, 'time', this.onTime, this);\n }\n\n this.listenTo(\n this.player,\n 'RecommendedPlugin:nextAssetPlay',\n (asset, mode, options) => this.onRecommendedPlay(`recommendedNext-${options.source}`)\n );\n\n this.listenTo(\n this.player,\n 'RecommendedPlugin:playRecommended',\n this.onRecommendedPlay.bind(this, 'recommendedGrid')\n );\n\n window.addEventListener(...this.beforeUnload);\n }\n\n get eventData() {\n const data = {};\n const previousAssetId = this.session.previousAssetId;\n\n if(previousAssetId) {\n data.previousAssetId = previousAssetId;\n data.playbackSource = this.session.playbackSource;\n }\n\n try {\n data.position = Math.floor(this.player.getCurrentTime());\n } catch (e) {}\n\n return data;\n }\n\n get stream() {\n try {\n return this.player.config.stream || {};\n } catch (e) {\n return {};\n }\n }\n\n get jw() {\n try {\n return this.player.model.player || {};\n } catch (e) {\n return {};\n }\n }\n\n getPosition() {\n try {\n return Math.floor(this.player.getCurrentTime());\n } catch (e) {\n return 0;\n }\n }\n\n createSession() {\n // node is unique player identifier\n const node = this.player.config.get('node');\n const id = node.id || node;\n\n /**\n * Initialize session object to keep reference\n */\n if(!session[id]) {\n session[id] = {};\n }\n\n return session[id];\n }\n\n trackTimeEvent(time, eventInterval = 1) {\n if(time % eventInterval === 0 && this.watchData.time !== time) {\n this.watchData.time = time;\n\n this.trigger('Watch', Object.assign(this.eventData, {\n position: time\n }));\n }\n }\n\n onBeforeUnload() {\n if(this.beforeStreamStart === false) {\n this.onComplete();\n }\n }\n\n onInitialPlay() {\n this.beforePlaybackStarted = false;\n }\n\n onPlaylistItem() {\n const track = this.trigger.bind(this, 'Load', Object.assign({\n position: this.stream.getPlaybackTime('begin') || 0\n }, this.eventData));\n\n /**\n * Only first playback has to wait for viewable event\n * Playnext/grid will work without it\n */\n if(this.session.wasViewed === true) {\n track();\n } else {\n // wait for player to be viewable\n this.listenTo(this.player.model.player, 'viewable', (data) => {\n if(data.viewable) {\n track();\n this.stopListening(this.player.model.player, 'viewable');\n this.session.wasViewed = true;\n }\n });\n }\n\n this.previousAssetId = null;\n }\n\n onAssetPlay() {\n this.beforeStreamStart = false;\n\n this.trigger('Play', Object.assign({\n start: true\n }, this.eventData));\n }\n\n onPause() {\n this.trigger('Pause', this.eventData);\n }\n\n onPlay() {\n // play can't be triggered before assetPlay\n if(this.beforeStreamStart === false) {\n this.trigger('Play', this.eventData);\n }\n }\n\n /**\n * Intervals for VOD are defined as follow\n *\n * every 1s - during the first 10 seconds of content playback (no matter of where playback has started\n * every 5s - for rest of content playback, after seeking intervals should be triggered in same time\n * seek 42, then first trigger should be in 45\n */\n onTime(eventTime) {\n const time = Math.floor(eventTime);\n const eventInterval = time >= 10 ? 5 : 1;\n\n this.trackTimeEvent(time, eventInterval);\n }\n\n /**\n * Track live events by checking time from flight time to current date\n * DVR seek is also included in calculations\n */\n onLiveTime() {\n // after playback stars time to start will be negative\n // add DVR shift from playback\n const eventTime = Math.floor((this.stream.getTimeToStart() * -1) + this.jw.getPosition());\n // constant tracking interval\n this.trackTimeEvent(eventTime, 5);\n }\n\n onComplete(reason) {\n this.beforeStreamStart = true;\n\n if(reason === 'playNext') {\n this.onRecommendedPlay('playNext');\n }\n\n /**\n * Track stop event only when playback has started\n */\n if(this.beforePlaybackStarted === false) {\n this.trigger('Stop', this.eventData);\n }\n }\n\n onRecommendedPlay(playbackSource) {\n // store asset id in memory to attach it to play next video\n this.session.previousAssetId = this.player.getAsset().get('id');\n this.session.playbackSource = playbackSource;\n }\n\n destroy() {\n window.removeEventListener(...this.beforeUnload);\n this.stopListening();\n }\n}\n\nexport default PlaybackEvents;","import Eventable from 'utils/eventable';\n\n/**\n * Parse SVP Player events and tailor data to pulse requirements\n *\n * Available events: Play, Pause, Stop, Watch\n */\nclass AdEvents extends Eventable {\n constructor(player) {\n super();\n this.player = player;\n this.listenTo(this.player, 'ready', this.onReady, this);\n\n\n this.listenTo(\n this.player,\n 'RecommendedPlugin:playNextVisible',\n this.onRecommendedVisible,\n this\n );\n }\n\n onRecommendedVisible() {\n this.trigger('UiElement', {\n \"id\": this.player.getAsset().get('id'),\n \"name\": 'nextAssetCountdown'\n });\n }\n\n destroy() {\n this.stopListening();\n }\n}\n\nexport default AdEvents;","import config from 'player/config';\n\nclass CategoryTree {\n constructor(vendor) {\n this.vendor = vendor;\n }\n\n fetch() {\n if(!this.request) {\n this.request = fetch(config.api.getUrl(this.vendor, `/categories`))\n .then(response => response.json())\n .then(response => {\n if(response && response._embedded.categories) {\n return response._embedded.categories;\n }\n\n return [];\n })\n .then(categories => {\n this.categories = new Map(categories.map(category => [category.id, category]));\n })\n }\n return this.request;\n }\n\n getPath(categoryId) {\n const path = [];\n let category = this.categories.get(categoryId);\n\n if(category) {\n path.push(category);\n\n while(category.parentId !== 0) {\n category = this.categories.get(category.parentId);\n path.unshift(category);\n }\n }\n\n return path;\n }\n};\n\n\nconst instances = {};\n\nexport default (vendor) => {\n if(!instances[vendor]) {\n instances[vendor] = new CategoryTree(vendor);\n }\n\n return instances[vendor];\n};","import { capitalizeFirstLetter } from 'utils/string';\n\nimport logger from 'utils/logger';\n\nimport PluginModel from './model';\nimport PulseTracker from './pulse-stats/tracker';\nimport AdEvents from \"./pulse-stats/ad-events\";\nimport PlaybackEvents from \"./pulse-stats/playback-events\";\nimport UiEvents from \"./pulse-stats/ui-events\";\nimport CategoryTree from \"../model/category-tree\";\n\n/**\n * Retrieve tags from asset\n * @param asset\n */\nconst getTags = (asset) => {\n return (asset.get('tags') || []).map(tag => tag.tag);\n};\n\n/**\n * Get array of plan3 stories ids\n *\n * @param asset\n * @returns {*|Array}\n */\nconst getStories = (asset) => {\n return (asset.get('stories') || []);\n};\n\n/**\n * Integration with Pulse Tracker\n * https://github.schibsted.io/spt-dataanalytics/pulse-autotracker\n *\n * @param options\n * @constructor\n */\nclass PulseStatsPlugin extends PluginModel {\n constructor(options) {\n super(options);\n this.provider = options.provider;\n this.decorator = options.decorator || ((data) => data);\n this.embed = options.embed === true;\n this.previousAssetId = options.previousAssetId;\n\n this.tracker = null;\n }\n\n getName() {\n return 'PulseStats';\n }\n\n get asset() {\n const asset = this.playerAsset;\n const additional = asset.get('additional') || {};\n const accessControl = Object.keys(additional.access || {});\n const tags = getTags(asset);\n const stories = getStories(asset);\n\n const data = {\n type: asset.get('assetType') === 'video' ? 'Video' : 'Audio',\n title: asset.get('title'),\n // duration should be in seconds\n duration: Math.round(asset.get('duration') / 1000)\n };\n\n if(accessControl.length > 0) {\n data.accessControl = accessControl.join(',');\n }\n\n if(tags.length > 0) {\n data.tags = tags;\n }\n\n if(stories.length > 0) {\n // disable stories until there is not id->title translation\n // data.stories = stories;\n }\n\n // check if stream has category\n if(asset.getCategory()) {\n data.category = asset.getCategory().get('id');\n }\n\n // delete duration from live assets\n if(asset.get('streamType') === 'live') {\n delete data.duration;\n }\n\n if(additional.originAssetId) {\n data.originAssetId = additional.originAssetId;\n }\n\n return data;\n }\n\n getCategoryPath(categoryId) {\n if(typeof categoryId !== 'number') {\n return null;\n }\n\n // check if id exist and create category path\n if(!this.categoryPath) {\n this.categoryPath = this.categoryTree.getPath(categoryId)\n .map(category => (category.title.toLowerCase()))\n .join(' > ');\n }\n\n return this.categoryPath;\n }\n\n /**\n * Track Pulse event\n * Defer tracking when Pulse library is not loaded yet\n */\n async track(eventName, eventData) {\n const tracker = await this.getTracker();\n logger('Pulse').log(JSON.stringify(eventData, null, 4));\n tracker.track(eventName, eventData);\n }\n\n async trackMediaEvent(data) {\n try {\n await this.categoryTree.fetch();\n\n // category data is available on ready event\n const categoryPath = this.getCategoryPath(data.object.category);\n\n if(categoryPath) {\n data.object.category = categoryPath;\n }\n\n await this.track('engagementEvent', this.decorator(data, this.playerAsset));\n } catch (e) {\n // nothing to do\n logger('Pulse').log('Could not track event');\n }\n }\n\n getTracker() {\n return new Promise(resolve => {\n const resolveTracker = () => resolve(this.tracker);\n\n if(this.tracker === null) {\n this.once('ready', resolveTracker);\n } else {\n resolveTracker();\n }\n });\n }\n\n setup() {\n // prevent asset to be changed with playnext before stream completes\n this.playerAsset = this.player.getAsset();\n\n this.categoryTree = CategoryTree(this.playerAsset.getVendor());\n\n // initialize only once\n Promise.all([\n PulseTracker.init(this.provider),\n this.categoryTree.fetch()\n ]).then((data) => this.onReady(data));\n\n this.adEvents = new AdEvents(this.player);\n this.playbackEvents = new PlaybackEvents(this.player);\n this.uiEvents = new UiEvents(this.player);\n\n this.listenTo(this.adEvents, 'all', this.onAdEvent, this);\n this.listenTo(this.playbackEvents, 'all', this.onPlaybackEvent, this);\n this.listenTo(this.uiEvents, 'all', this.onUiEvent, this);\n }\n\n onReady(data) {\n const [tracker] = data;\n\n this.tracker = tracker;\n this.trigger('ready');\n }\n\n onPlaybackEvent(intent, data = {}) {\n const asset = this.playerAsset;\n\n const trackingData = {\n intent,\n \"@type\": \"Engagement\",\n position: data.position,\n \"object\": Object.assign({\n \"@id\": `sdrn:${this.provider}:mediaasset:${asset.get('id')}`,\n \"@type\": \"MediaAsset\",\n autoplay: this.player.config.get('autoplay') === true,\n muted: this.player.config.get('mute') === true,\n embed: this.embed,\n }, this.asset)\n };\n\n if(data.start === true) {\n trackingData.start = true;\n }\n\n if(data.previousAssetId) {\n trackingData.object.previousAssetId = data.previousAssetId;\n trackingData.object.playbackSource = data.playbackSource;\n } else if(this.previousAssetId) {\n trackingData.object.previousAssetId = this.previousAssetId;\n trackingData.object.playbackSource = 'config';\n }\n\n this.trackMediaEvent(trackingData);\n }\n\n onAdEvent(intent, data) {\n const asset = this.playerAsset;\n\n const trackingData = {\n intent,\n \"@type\": \"Engagement\",\n position: data.position,\n \"object\": {\n \"@id\": `sdrn:${this.provider}:mediaad:${data.id}`,\n \"@type\": \"MediaAd\",\n \"type\": capitalizeFirstLetter(data.type),\n \"mediaAssetId\": `sdrn:${this.provider}:mediaasset:${asset.get('id')}`\n }\n };\n\n if(data.count > 1) {\n trackingData.object.slotNumber = data.sequence;\n }\n\n if(data.duration) {\n trackingData.object.duration = data.duration;\n }\n\n if(data.start === true) {\n trackingData.start = true;\n }\n\n this.trackMediaEvent(trackingData);\n }\n\n async onUiEvent(eventName, data) {\n const trackingData = {\n \"@type\": \"View\",\n \"object\": Object.assign(data, {\n \"@id\": `sdrn:${this.provider}:player:${data.id}`,\n \"@type\": \"UIElement\"\n })\n };\n\n this.track('viewEvent', trackingData);\n }\n\n destroy() {\n this.stopListening();\n\n this.adEvents.destroy();\n this.playbackEvents.destroy();\n }\n}\n\nexport default PulseStatsPlugin;\n","export function capitalizeFirstLetter(string) {\n try {\n return string.charAt(0).toUpperCase() + string.slice(1);\n } catch (e) {\n // return what was sent\n return string;\n }\n}","/* jshint latedef:false */\n/* globals console */\nimport utils from 'utils/utils';\nimport logger from 'utils/logger';\nimport ServerTime from 'utils/server-time';\nimport config from 'player/config';\nimport Asset from './model/asset';\nimport NextAsset from './model/next-asset';\nimport Stream from './model/stream';\nimport Locale from './model/locale';\nimport Config from './playback/config';\nimport Provider from './playback/provider';\nimport adAsset from './playback/ads/appnexus-ad-asset';\nimport Domain from './model/domain';\nimport SvpPlugins from './plugins';\nimport PausePlugin from './plugins/pause';\nimport AgeLimitPlugin from './plugins/age-limit';\nimport CountdownPlugin from './plugins/countdown';\nimport RecommendedPlugin from './plugins/recommended';\nimport SvpStatsPlugin from './plugins/svp-stats';\nimport PulseTracker from './plugins/pulse-stats/tracker';\nimport PulseStatsPlugin from './plugins/pulse-stats';\n\nimport statusCode, { NOT_FOUND, GENERAL_ERROR } from \"./playback/config/status-codes\";\n\nimport errorIcon from 'icons/error.svg';\n\nconst Player = function(options) {\n // Little bit of monkey patching\n config.api.vendor = options.vendor || 'vgtv';\n config.env = (config.env === 'production') ? 'production' : (options.env || config.env || 'production');\n\n // Restrict player on blacklisted domains\n if (Domain.isBlacklisted(options.vendor)) {\n return;\n }\n\n logger('SVP').log('config', utils.extend({}, options));\n\n if (options.vendor === 'appnexus') {\n options.asset = adAsset();\n delete options.id;\n }\n\n // load locales for player\n // norwegian by default\n this.locale = new Locale(config.translations(options.locale || 'no'));\n\n // create configuration for SVP player\n this.config = new Config();\n this.listenToOnce(this.config, 'ready', onceConfigReady, this);\n\n this.config.setLocale(this.locale);\n this.config.initialize(options);\n\n // set dynamic api url\n if (options.api) {\n config.api.url = options.api;\n }\n\n // allow to override token api url\n if (options.tokenUrl) {\n config.api.tokenUrl = options.tokenUrl;\n }\n\n // allow to override thumbnails api url\n if (options.thumbnailsUrl) {\n config.api.thumbnailsUrl = options.thumbnailsUrl;\n }\n\n /**\n * Available plugins\n * PausePlugin, EndposterPlugin, ChaptersPlugin, ContinuePlayingPlugin\n *\n * Plugins registered by default (can not be removed)\n * CountdownPlugin, AgeLimitPlugin\n * @type {Object}\n */\n this.plugins = {};\n\n /**\n * Check if stream has completed playback\n * @type {boolean}\n */\n this.isCompleted = false;\n\n this.isPlayNextAvailable = true;\n\n // sync browser time with server\n if (!options.serverTime) {\n ServerTime.fetch(config.time);\n }\n\n // fetch config for privileged settings to speedup setup\n if (options.settings) {\n Domain.fetch(options.vendor);\n }\n\n /**\n * Prefetch Pulse tracking library\n */\n if(options.pulse && options.pulse.provider) {\n PulseTracker.load();\n }\n\n logger('SVP').log(function(message) {\n this.on('all', function(event) {\n message(event, Array.prototype.slice.call(arguments, 1));\n });\n }.bind(this));\n};\n\n/**\n * Remove single plugin instance\n * Clear all listeners\n * Remove from plugins hashmap\n *\n * @param plugin\n */\nfunction destroyPlugin(plugin) {\n if (plugin.off) {\n plugin.off();\n }\n plugin.destroy();\n\n this.stopListening(plugin);\n delete this.plugins[plugin.getName()];\n}\n\n\n/**\n * Clear error message\n * @param node\n */\nfunction clearError(node) {\n const previousErrorNode = node.getElementsByClassName('svp-player-error-wrapper');\n\n // clear old node\n if (previousErrorNode.length > 0) {\n utils.removeClass(node, ['svp-player-error', 'svp-player-error-hasImage']);\n\n if(previousErrorNode[0].parentNode) {\n previousErrorNode[0].parentNode.removeChild(previousErrorNode[0]);\n }\n }\n}\n\n/**\n * Display error message in given node\n * @param node\n * @param message\n * @param code\n */\nfunction displayError(node, message, code = null) {\n let template = `
${errorIcon}${message}`;\n\n if(code) {\n template += `
${this.locale.translate('Error code')}: ${code}
`;\n }\n\n template += '
';\n\n const posterSrc = this.model && this.model.getStream() && this.model.getPoster(this.model.getStream(), node);\n\n clearError(node);\n utils.addClass(node, 'svp-player-error');\n\n // add image\n if (posterSrc) {\n utils.addClass(node, 'svp-player-error-hasImage');\n template += `
`;\n }\n\n const errorNode = utils.createNode(`
${template}
`);\n\n node.appendChild(errorNode);\n\n this.once('complete', function() {\n utils.removeClass(node, ['svp-player-error', 'svp-player-error-hasImage']);\n\n if(errorNode.parentNode) {\n errorNode.parentNode.removeChild(errorNode);\n }\n }, this);\n}\n\n/**\n *\n *\n * @param options Caution, param is bound in constructor\n */\nfunction onceConfigReady(options, settings) {\n this.model = new Provider(this.config);\n\n // todo move locale to single instance\n this.model.setLocale(this.locale);\n\n // important listeners has to be attached before setup\n this.listenTo(this.model, 'all', onPlayerEvent, this);\n\n this.listenTo(this.model, 'play', function() {\n this.isCompleted = false;\n }, this);\n\n // turn on cachebreaker for preview mode\n if (settings && settings.preview === true) {\n config.api.cb = true;\n }\n\n // once per player instance error append stylesheet\n this.once('error', function() {\n utils.addStyleSheet(this.config.get('skin').url);\n }, this);\n\n Promise.all([\n new Promise((resolve) => {\n this.once('assetReady', resolve);\n }),\n SvpPlugins.load(options.plugins)\n ]).then(() => {\n utils.each(options.plugins, (config, plugin) => {\n const Plugin = SvpPlugins.get(plugin);\n\n if (Plugin) {\n this.addPlugin(new Plugin(config));\n }\n });\n\n this.model.setup();\n });\n\n // asset can be passed as id or an object\n this.setAsset((options.asset || options.id));\n}\n\n/**\n * this always points to Player object\n */\nfunction onAssetReady() {\n const { config } = this;\n\n const stream = new Stream(this.asset.attributes);\n const settings = config.getSettings();\n\n // set playahead time\n if (config.get('time')) {\n stream.set('playAhead', config.get('time'));\n }\n\n const node = document.getElementById(this.config.get('node'));\n\n if(node) {\n clearError(node);\n }\n\n\n // add hasNext checking\n stream.set('hasNext', NextAsset.hasPlayNext(this.asset));\n\n config.setStream(stream);\n\n // cleanup plugins as they maybe not required for new stream\n utils.each(this.plugins, destroyPlugin, this);\n\n // set start time if chapter is provided\n if (config.get('chapter')) {\n const chapter = this.asset.getChapter(config.get('chapter'));\n\n if (chapter) {\n this.config.set('time', chapter.timeline);\n }\n }\n\n if (config.hasRecommended()) {\n this.addPlugin(new RecommendedPlugin({\n settings: config.getRecommended()\n }));\n }\n\n // stream is not available yet, display countdown\n if (stream.getTimeToStart() > 0) {\n // countdown is disable in preview mode on non live streams\n if (settings.preview !== true || stream.isLive()) {\n this.addPlugin(new CountdownPlugin({\n start: new Date((new Date().getTime()) + stream.getTimeToStart() * 1000)\n }));\n\n // play stream after countdown ends\n this.on('countdown:end', this.play, this);\n }\n }\n\n if (this.asset.getAgeLimit() > -1) {\n this.addPlugin(new AgeLimitPlugin({\n ageLimit: this.asset.getAgeLimit()\n }));\n }\n\n const pulseConfig = config.get('pulse');\n\n if(pulseConfig && pulseConfig.provider) {\n this.addPlugin(new PulseStatsPlugin(pulseConfig));\n }\n\n this.addPlugin(new SvpStatsPlugin({\n vendor: config.get('vendor'),\n mode: config.get('stats'),\n env: config.get('env')\n }));\n\n this.addPlugin(new PausePlugin());\n\n // set stream to display error\n this.model.setStream(stream);\n\n this.config.isStreamPlayable().then(() => {\n this.trigger('assetReady');\n }).catch((code) => {\n this.trigger('assetError', {\n message: statusCode(code),\n code\n });\n\n onError.call(this, 'error', {\n type: 'assetError',\n // message is translated in next functions\n message: statusCode(code),\n code\n });\n });\n}\n\n/**\n * Asset fetch failed. Usually happens when network issue occurred\n */\nfunction onAssetError() {\n const code = NOT_FOUND;\n\n this.trigger('assetError', {\n message: this.locale.translate(code),\n code\n });\n\n // load stylesheet as player is not attached\n onError.call(this, 'error', {\n type: 'assetFetchError',\n message: statusCode(code),\n code\n });\n}\n\n/**\n * Player initialized and single playlistItem is laoded\n */\nfunction onPlaylistItem() {\n const container = this.getContainer();\n // add class for live streams\n\n utils.removeClass(container, 'svp-player-live');\n\n if (this.model.getStream().isLive()) {\n utils.addClass(container, 'svp-player-live');\n // add translation for live button via data-label\n container.getElementsByClassName('jw-icon-display')[0]\n .setAttribute('data-label', this.locale.translate('Live button'));\n }\n\n this.trigger('playlistItem');\n}\n\n/**\n * Stream completed, fired for every item in playlist\n * Clear settings which are only for one stream\n */\nfunction onComplete(reason) {\n if (!this.isCompleted) {\n this.isCompleted = true;\n\n this.config.set('time', null);\n this.config.set('chapter', null);\n\n this.trigger('complete', reason);\n }\n}\n\n/**\n * Display error message\n *\n * @param event\n * @param details\n */\nfunction onError(event, details = {}) {\n const node = document.getElementById(this.config.get('node'));\n\n const code = details.code;\n const message = details.message;\n\n let translatedMessage = this.locale.translate(message);\n\n // translation not found\n if(translatedMessage === message) {\n translatedMessage = this.locale.translate(statusCode(GENERAL_ERROR));\n }\n\n // details - message in english\n // message - localized, displayed message\n const errorDetails = {\n code,\n details: message,\n message: translatedMessage\n };\n\n if(details.type) {\n errorDetails.type = details.type;\n }\n\n displayError.call(this, node, translatedMessage, code);\n\n if (this.model.player) {\n this.model.player.stop();\n }\n\n this.trigger(event, errorDetails);\n}\n\n/**\n * Proxy player events\n */\nfunction onPlayerEvent(event) {\n let callFunction;\n\n switch (event) {\n case 'playlistItem':\n callFunction = onPlaylistItem;\n break;\n case 'complete':\n callFunction = onComplete;\n break;\n case 'error':\n callFunction = onError;\n break;\n default:\n callFunction = this.trigger;\n }\n\n callFunction.apply(this, arguments);\n}\n\n/**\n * Player public API\n */\nPlayer.prototype = {\n /**\n * Play\n * @param position - seconds (int)\n */\n play: function(position) {\n // stream will play only if publication date is valid\n if (this.model.getStream().getTimeToStart() < 0) {\n if (position) {\n this.once('play', this.seek.bind(this, position));\n }\n\n this.model.play();\n }\n },\n\n /**\n * Pause playback\n * @param force - toggle playback when param is omitted\n */\n pause: function(force) {\n // pause with force can start stream which is wrong\n if (this.model.getStream().getTimeToStart() < 0) {\n this.model.pause(!force);\n }\n },\n\n /**\n * Seek in seconds\n * @param time\n */\n seek: function(time) {\n this.model.seek(time);\n },\n\n /**\n * Destroy the player instance, reset DOM, clean up listeners\n */\n remove: function() {\n this.stopListening();\n\n if (this.model) {\n this.model.remove();\n }\n },\n\n /**\n * Play next asset by given id\n *\n * @param id\n */\n playNext: function(id, options = {}) {\n const onNextAssetReady = function () {\n const stream = this.model.getStream();\n\n if(options && options.time) {\n stream.set('playAhead', options.time);\n }\n\n // trick to avoid create of new stream as it's set in assetReady\n this.model.playNext(stream);\n this.isPlayNextAvailable = true;\n }.bind(this);\n\n if (this.isPlayNextAvailable) {\n // complete current stream\n onComplete.call(this, 'playNext');\n\n // block multiple occurences\n this.isPlayNextAvailable = false;\n\n this.once('assetReady', onNextAssetReady, this);\n\n this.once('assetError', function() {\n if(this.model && this.model.player) {\n this.pause();\n }\n\n this.isPlayNextAvailable = true;\n this.off('assetReady', onNextAssetReady);\n }, this);\n this.setAsset(id);\n }\n },\n\n /**\n * Set playback volume\n *\n * @param volume - number between 0 and 100\n */\n setVolume: function(volume) {\n this.model.setVolume(volume);\n },\n\n /**\n * Get playback volume\n * @returns {*}\n */\n getVolume: function() {\n return this.model.getVolume();\n },\n\n /**\n * Get player state\n */\n getState: function() {\n return this.model.getState();\n },\n\n /**\n * Get stream duration\n *\n * @returns {*}\n */\n getDuration: function() {\n return this.model.getDuration();\n },\n\n /**\n * Get current playback time\n */\n getCurrentTime: function() {\n return this.model.getCurrentTime();\n },\n\n /**\n * Get quarter of stream.\n * Can be used for tracking\n *\n * @returns {number}\n */\n getCurrentQuartile: function() {\n return Math.ceil((this.getCurrentTime() / this.getDuration()) / 0.25);\n },\n\n /**\n * Get device type\n *\n * @returns {*}\n */\n getDeviceType: function () {\n if (utils.device.isIPhone()) {\n return 'iPhone';\n }\n\n if (utils.device.isIPad()) {\n return 'iPad';\n }\n\n if (utils.device.isAndroid()) {\n return 'android';\n }\n\n return 'desktop';\n },\n\n /**\n * Get current playback provider\n */\n getProvider: function() {\n return this.model.getProvider();\n },\n\n /**\n * Get current captions list\n */\n getCaptionsList: function () {\n return this.model.getCaptionsList();\n },\n\n /**\n * Get currently playing captions\n */\n getCurrentCaptions: function () {\n return this.model.getCurrentCaptions();\n },\n\n /**\n * Set current captions by passing its index\n * Setting 0 will hide all captions\n */\n setCurrentCaptions: function (index) {\n return this.model.setCurrentCaptions(index);\n },\n\n /**\n * Override captions styles\n * @param styles\n */\n setCaptionsStyles: function (styles) {\n return this.model.setCaptionsStyles(styles);\n },\n\n /**\n * Get Player DOM Node\n *\n * @returns {*}\n */\n getContainer: function() {\n return this.model.getContainer();\n },\n\n /**\n * Set asset resource\n * @param asset - Asset model or stream id\n */\n setAsset: function(asset) {\n // cleanup old asset\n if (this.asset) {\n this.stopListening(this.asset);\n this.asset.destroy();\n this.asset = null;\n }\n\n // change asset to object if it is a number\n if (utils.isNumber(asset)) {\n // eslint-disable-next-line no-param-reassign\n asset = {\n id: asset\n };\n }\n\n this.asset = (asset instanceof Asset) ? asset : new Asset(asset);\n\n // set vendor for player's default if nothing has been passed\n if (!this.asset.get('vendor')) {\n this.asset.set('vendor', this.config.get('vendor'));\n }\n\n // asset is ready if status field is in response\n if (this.asset.get('status')) {\n onAssetReady.call(this);\n } else {\n this.listenTo(this.asset, 'fetchSuccess', onAssetReady, this);\n this.listenTo(this.asset, 'fetchError', onAssetError, this);\n\n this.asset.fetch();\n }\n },\n\n /**\n * Get current loaded asset\n * @returns {null}\n */\n getAsset: function() {\n return this.asset;\n },\n\n /**\n * Add plugin to the player\n *\n * @param plugin\n */\n addPlugin: function(plugin) {\n const proxyPluginEvent = function() {\n const args = Array.prototype.slice.call(arguments);\n args[0] = `${plugin.getName()}:${args[0]}`;\n\n this.trigger(...args);\n };\n\n plugin.setPlayer(this);\n this.listenTo(plugin, 'all', proxyPluginEvent, this);\n\n this.plugins[plugin.getName()] = plugin;\n },\n\n /**\n * Get plugin by name\n *\n * @param plugin - name of the plugin\n * @returns {*}\n */\n getPlugin: function(plugin) {\n return this.plugins[plugin];\n }\n};\n\n\n/**\n * Checks if device can autoplay stream\n *\n * @returns {*}\n */\nPlayer.canDeviceAutoplay = function () {\n // eslint-disable-next-line no-console\n if (console && console.warn) {\n // eslint-disable-next-line no-console\n console.warn('SVP Player SKD deprecation warning. ' +\n 'Due to changes in browser policies, player will detect itself if it can autoplay.');\n }\n\n return utils.device.canAutoplay();\n};\n\nPlayer.Plugins = SvpPlugins;\nutils.extend(Player.prototype, utils.Events);\n\nexport default Player;\n","const hasAdblock = () => {\n let detected = false;\n\n // create the bait\n try {\n const bait = document.createElement('div');\n bait.setAttribute('class', 'pub_300x250 pub_300x250m pub_728x90 text-ad textAd text_ad text_ads text-ads text-ad-links');\n bait.setAttribute('style', 'width: 1px ! important; height: 1px !important; position: absolute !important; left: -10000px !important; top: -1000px !important;');\n window.document.body.appendChild(bait);\n\n // check if the bait has been affected by an adblocker\n if(window.document.body.getAttribute('abp') !== null\n || bait.offsetParent === null\n || bait.offsetHeight == 0\n || bait.offsetLeft == 0\n || bait.offsetTop == 0\n || bait.offsetWidth == 0\n || bait.clientHeight == 0\n || bait.clientWidth == 0) {\n detected = true;\n } else if(window.getComputedStyle !== undefined) {\n const baitTemp = window.getComputedStyle(bait, null);\n\n if(baitTemp && (baitTemp.getPropertyValue('display') === 'none' || baitTemp.getPropertyValue('visibility') === 'hidden')) {\n detected = true;\n }\n }\n\n // destroy the bait\n window.document.body.removeChild(bait);\n } catch (e) {\n detected = false;\n }\n\n return detected;\n};\n\n\n\nexport default hasAdblock;","import config from \"./player/config\";\nimport Player from 'player/player';\nimport image from 'utils/image';\nimport utils from 'utils/utils';\nimport hasAdblock from 'utils/adblock-detect';\nimport Domain from 'player/model/domain';\nimport HomadAds from 'player/playback/ads/homad';\n\nimport youbora from 'player/playback/youbora';\n\nconst SVP = {};\nSVP.Player = Player;\nSVP.Player.version = config.version;\n\n// by default antiadblock is turned off\nObject.defineProperty(SVP.Player, 'defaults', {\n get: function() {\n return this.__defaults || {};\n },\n set: function(value) {\n // if params are not object then\n // override and force to object\n if(value !== Object(value)) {\n value = {};\n }\n\n Object.defineProperty(SVP.Player, '__defaults', {\n value: value,\n enumerable: false,\n configurable: false,\n writable: false\n });\n }\n});\n\n/**\n * Determine if user is in 5% range of available traffic\n * We set half of 5% because autoplay gives around 2x traffic\n * @type {boolean}\n */\nconst loadYoubora = (options) => {\n // youbora plugin can be disabled completely\n try {\n if(localStorage.svpYoubora === 'true' || options !== false && Math.random() < 0.025) {\n youbora.load(options);\n }\n } catch(e) {}\n};\n\nconst initialize = () => {\n image.initialize(utils.extend(config.images, {\n getPixelRatio: utils.device.getPixelRatio\n }));\n\n Domain.initialize(location.hostname);\n\n // load homad only for desktop and for browsers with adblock enabled\n if (hasAdblock() === true && utils.device.getDeviceType() === 'desktop' && SVP.Player.defaults.aab === true) {\n HomadAds.initialize();\n }\n\n loadYoubora(SVP.Player.defaults.youbora);\n};\n\nexport default SVP;\nexport { initialize };"],"sourceRoot":""}