bitmovin-player
Version:
The Bitmovin HTML5 Adaptive Streaming Player for MPEG-DASH and HLS
12 lines • 62.5 kB
JavaScript
/****************************************************************************
* Copyright (C) 2019, Bitmovin, Inc., All Rights Reserved
*
* This source code and its use and distribution, is subject to the terms
* and conditions of the applicable license agreement.
*
* Bitmovin Player Version 8.16.2
*
****************************************************************************/
(function() {
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["engine-native"]=t():(e.bitmovin=e.bitmovin||{},e.bitmovin.player=e.bitmovin.player||{},e.bitmovin.player["engine-native"]=t())}(this,function(){return webpackJsonpbitmovin_player__name_([9],{129:function(e,t,i){"use strict";function n(e,t){switch(e){case r.CueTag:return{metadataType:s.MetadataType.CUETAG,metadata:t[r.CueTag],start:t.playbackTime};case r.Scte35:return{metadataType:s.MetadataType.SCTE,metadata:t[r.Scte35],start:t.playbackTime};case r.DateRange:return{metadataType:s.MetadataType.DATERANGE,metadata:t[r.DateRange],start:Date.parse(t.dateRange.startDate)/1e3,end:Date.parse(t.dateRange.endDate)/1e3};case r.CustomTags:return{metadataType:s.MetadataType.CUSTOM,metadata:t[r.CustomTags],start:t.playbackTime,end:t.playbackTime+t.duration}}return null}Object.defineProperty(t,"__esModule",{value:!0});var r,a=i(2),o=i(0),s=i(1),l=i(5),d=i(118),u=i(68),h=i(9);!function(e){e.CueTag="cueTag",e.Scte35="scte35",e.DateRange="dateRange",e.CustomTags="customTags"}(r||(r={}));var c,p="#EXTM3U\n#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=100000\n$VARIANT$\n",g=function(){function e(e){var t,i=this;this.onManifestMetadata=function(e){if(e.hasOwnProperty("metadata")){var t={metadataType:e.metadataType.toUpperCase(),metadata:e.metadata};(e.start||0===e.start)&&(t.start=e.start),e.end&&(t.end=e.end),i.context.eventHandler.dispatchEvent(s.PlayerEvent.Metadata,t)}},this.onTimeChangedHandler=function(e){var t=i.segmentTimelineController.getPlayingSegment(e.time);t&&!t.consumed&&(t.consumed=!0,i.triggerMetadata(t),i.triggerSegmentPlayback(t))},this.onTimeShiftedHandler=function(){i.segmentTimelineController.reset()},this.onSeeked=function(){i.segmentTimelineController.reset()},this.registerVariantPlaylist=function(e){var t=i.parsePlaylist(e.body);if(i.isValidVariantPlaylist(t)){var n=i.parsedManifest.playlists.find(function(t){return e.url.includes(t.uri)});if(n){i.segmentTimelineController.switchTimeline(n.id);var r=t.segments,a=r.some(function(e){return"undefined"!=typeof e.dateTime});r.forEach(function(e){return e.variantPlaylistId=n.id}),!a&&i.config.tweaks&&i.config.tweaks.akamai_datetime_parsing&&r.forEach(function(e){var t=c.getProgramDateTimeFromSegmentUrl(e.uri,e.duration);t&&(e.dateTime=t)}),i.metadataParsedService.expirationTimeInSeconds=i.segmentTimelineController.updateTimeline(n.id,r),i.triggerMetadataParsedEvents(i.segmentTimelineController.getCurrentTimeline());var o=c.createDiscontinuitySequences(t,[]);return o.forEach(function(e){return c.extrapolateProgramDateTime(e.segments)}),t}}},c=a.ModuleManager.get(o.ModuleName.HLS).PlaylistUtils,this.context=e,this.settings=e.settings,this.config=e.config,this.eventHandler=e.eventHandler,this.originalManifest=null,this.metadataParsedService=e.serviceManager.get(l.ServiceName.MetadataParsedService),this.eventHandler.on(s.PlayerEvent.TimeChanged,this.onTimeChangedHandler),this.eventHandler.on(s.PlayerEvent.TimeShifted,this.onTimeShiftedHandler),this.eventHandler.on(s.PlayerEvent.Seeked,this.onSeeked),this.metadataService=new d.MetadataService(this.context,(t={},t[u.TimedMetadataType.Manifest]=this.onManifestMetadata,t[u.TimedMetadataType.DateRange]=this.onManifestMetadata,t))}return e.prototype.triggerSegmentPlayback=function(e){var t={url:e.uri,uid:null,mimeType:"video/mp4",playbackTime:e.playbackTime,duration:e.duration,mediaInfo:{},dateTime:null};e.dateTime&&(t.dateTime=e.dateTime.toISOString()),e.customTags&&e.customTags.length>0&&(t.EXPERIMENTAL=t.EXPERIMENTAL||{},t.EXPERIMENTAL.hlsAttributes=e.customTags.map(function(e){return e.attributes})),this.context.eventHandler.dispatchEvent(s.PlayerEvent.SegmentPlayback,t)},e.prototype.triggerMetadata=function(e){var t=this;e.metadata&&e.metadata.forEach(function(e){t.context.eventHandler.dispatchEvent(s.PlayerEvent.Metadata,{metadataType:e.type,metadata:e})})},e.prototype.resolveMasterManifest=function(e){return this.parsedManifest?Promise.resolve(this.manifestUrl):(this.manifestUrl=e,this.downloadMasterManifest(e))},e.prototype.registerMasterManifest=function(e,t){if(this.parsedManifest=this.parsePlaylist(e.body),this.originalManifest=e.body,!this.isValidMasterPlaylist(this.parsedManifest)&&this.isValidVariantPlaylist(this.parsedManifest)){var i=p.replace("$VARIANT$",t);this.originalManifest=i,this.parsedManifest=this.parsePlaylist(i)}return this.originalManifest},e.prototype.concatManifestUrl=function(e){return h.URLHelper.concatBaseUrlWithPartial(this.manifestUrl,e)},e.prototype.isValidMasterPlaylist=function(e){return e.hasOwnProperty("playlists")&&e.playlists.length>0},e.prototype.isValidVariantPlaylist=function(e){return e.hasOwnProperty("segments")&&e.segments.length>0},e.prototype.parsePlaylist=function(e){var t=a.ModuleManager.get(o.ModuleName.HLS).HlsUtils;return t.parsePlaylist(e,this.context.logger)},e.prototype.metadataToMetadataParsedEvent=function(e){return{metadataType:e.metadataType,metadata:e.metadata,data:e.metadata,start:e.start,end:e.end}},e.prototype.addMetadata=function(e){var t="DATERANGE"===e.metadataType?u.TimedMetadataType.DateRange:u.TimedMetadataType.Manifest,i=this.metadataService.addToMetadataParsedService(t,e.start,this.metadataToMetadataParsedEvent(e),"1");i&&this.metadataService.addToTimeline(t,e.start,e)},e.prototype.triggerMetadataParsedEvents=function(e){var t=this;e.forEach(function(e){Object.values(r).forEach(function(i){e.hasOwnProperty(i)&&t.addMetadata(n(i,e))})})},e.prototype.parseTimelineEntries=function(e){var t=this.parsePlaylist(e);return t.segments.map(function(e){return{uri:e.uri,duration:e.duration,discontinuity:e.discontinuity||!1,dateTime:null,metadata:[],consumed:!1,playbackTime:-1,keys:[]}})},e.prototype.getPlaybackTimeOfFirstSegmentInTimeline=function(e){for(var t=0;t<e.length;t++)for(var i=e[t],n=0,r=0;r<i.timeline.length;r++){for(var a=i.timeline[r],o=this.segmentTimelineController.getCurrentTimeline(),s=0;s<o.length;s++){var l=o[s];if(l.uri===a.uri)return l.playbackTime-n}n+=a.duration}return-1},e.prototype.getParsedManifest=function(){return this.parsedManifest},e.prototype.getManifest=function(){return this.originalManifest},e.prototype.detachEventHandlers=function(){this.eventHandler&&(this.eventHandler.off(s.PlayerEvent.TimeChanged,this.onTimeChangedHandler),this.eventHandler.off(s.PlayerEvent.TimeShifted,this.onTimeShiftedHandler),this.eventHandler.off(s.PlayerEvent.Seeked,this.onSeeked))},e.prototype.dispose=function(){this.detachEventHandlers(),this.segmentTimelineController&&(this.segmentTimelineController.dispose(),this.segmentTimelineController=null),this.metadataService&&(this.metadataService.dispose(),this.metadataService=null),this.context=null,this.parsedManifest=null,this.originalManifest=null,this.manifestUrl=null,this.settings=null,this.config=null,this.eventHandler=null},e}();t.AbstractHlsManifestController=g},170:function(e,t,i){"use strict";var n=this&&this.__assign||function(){return n=Object.assign||function(e){for(var t,i=1,n=arguments.length;i<n;i++){t=arguments[i];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},n.apply(this,arguments)};Object.defineProperty(t,"__esModule",{value:!0});var r=i(2),a=i(0),o=i(1),s=i(31),l=i(7),d=i(67),u=i(51),h=i(3),c=i(4),p=i(18),g=i(16),v=i(5),f=i(6),m=i(22),y=i(11),E=i(9),T=i(13),S=i(14),b=i(366),k=i(368),P=i(371),M=function(){function e(e){var t=this;this.numTimeChanged=0,this.loaded=!1,this.audio=null,this.ended=!1,this.ignoreNextVideoError=!1,this.controlPermitted=!0,this.seekingTimeoutId=-1,this.nativeSeekCalled=!1,this.isIllicitlySeeking=!1,this.ignoreNextDelta=!1,this.maxDelta=.75,this.numSeekingCalled=0,this.currentDuration=-1,this.timeShiftJumpStartPosition=-1,this.textTrackController=null,this.lastPlayIssuer="api",this.lastPauseIssuer="api",this.lastVerifiedPlaybackPosition=-1,this.lastLegalPlaybackPosition=0,this.restrictedInlinePlayback=!1,this.thumbPreviewer=null,this.lastTime=0,this.availableVideoStreams=[],this.allowedToThrowEvents=!0,this.airplayAvailable=!1,this.hasSourceBeenLoaded=!1,this.hasDataBeenLoaded=!1,this.sourceElementEventListeners=[],this.restoringPlaybackPosAfterQualitySwitch=!1,this.isInitialSeek=!1,this.isProgressiveQualityChange=!1,this.onInternalPlaybackSpeedChanged=function(e){t.eventCallback(o.PlayerEvent.PlaybackSpeedChanged,{from:e.from,to:e.to})},this.loadedDataHandler=function(){if(clearTimeout(t.loadedDataFallbackTimeoutID),!t.hasSourceBeenLoaded&&(clearTimeout(t.loadTimeoutID),!t.isProgressiveQualityChange))if(r.ModuleManager.has(a.ModuleName.SubtitlesNative)){var e=r.ModuleManager.get(a.ModuleName.SubtitlesNative).TextTrackController;t.textTrackController=new e(t.context,t.video,t.config,t.type)}else t.logger.log("Unable to create native SubtitleController because the "+a.ModuleName.SubtitlesNative+" module is missing");t.hasSourceBeenLoaded=!0,t.isProgressiveQualityChange=!1,t.allowedToThrowEvents=!0,t.hasDataBeenLoaded=!0,setTimeout(function(){return t.loadingDeferred.resolve()},0)},this.eventCallback=function(e,i,n,r){void 0===i&&(i={}),void 0===n&&(n=!1),void 0===r&&(r=!1),t.eventHandler&&(t.allowedToThrowEvents||n)&&t.eventHandler.dispatchEvent(e,i,r)},this.onPlaybackStarted=function(){t.timeShiftChangeStarted&&(clearInterval(t.timeShiftChangeTimerID),t.updateCurrentTimeShift(),t.timeShiftChangeStarted=null,t.eventCallback(o.PlayerEvent.TimeShifted)),t.isPlaying()||(t.ended=!1,t.startManifestTimeoutTimer(),t.stateManager.transitionToPlayingState(t.lastPlayIssuer))},this.getCurrentTime=function(){return t.getElement().currentTime},this.getAudioQuality=this.getPlaybackAudioData,this.getVideoQuality=this.getPlaybackVideoData,this.videoOnEnded=function(){var e=t.getElement(),i=Math.abs(e.currentTime-t.lastLegalPlaybackPosition),n=t.settings.GLOBAL_DISABLE_SEEKING;n&&(i>t.maxDelta||e.currentTime<t.currentDuration-t.maxDelta)?(Promise.resolve(t.video.play())["catch"](function(e){t.logger.insane("Play promise rejected:"+e)}),t.ignoreNextDelta=!0,t.video.currentTime=t.lastLegalPlaybackPosition):(t.lastLegalPlaybackPosition=0,t.stateManager.isPlaying()&&t.stateManager.transitionToPausedState(!0,t.lastPauseIssuer),t.stateManager.state=d.State.Stopped,t.ended||t.eventCallback(f.InternalEvent.ContentPlaybackFinished),t.ended=!0)},this.videoOnSeeked=function(){t.resetTimeShift(),t.numSeekingCalled=0;var e=t.settings.GLOBAL_DISABLE_SEEKING;!e||t.restoringPlaybackPosAfterQualitySwitch||t.isInitialSeekToStartTime?(t.lastVerifiedPlaybackPosition=t.getElement().currentTime,t.isInitialSeekToStartTime=!1,t.stateManager.isSeeking()&&(t.eventCallback(o.PlayerEvent.Seeked),t.textTrackController&&t.textTrackController.seek(),t.stateManager.seekState=d.SeekState.Seeked),t.stateManager.isTimeShifting()&&(t.eventCallback(o.PlayerEvent.TimeShifted),t.stateManager.timeShiftState=d.TimeShiftState.Shifted)):t.isIllicitlySeeking=!1},this.videoOnSeeking=function(){if(t.settings.GLOBAL_DISABLE_SEEKING&&!t.isInitialSeekToStartTime)t.isIllicitlySeeking=!t.restoringPlaybackPosAfterQualitySwitch,t.numSeekingCalled++,t.numSeekingCalled>1&&(t.ignoreNextDelta=!1);else if(!t.stateManager.isSeeking()&&!t.stateManager.isTimeShifting()){var e=t.getElement().currentTime;t.stateManager.seekState=d.SeekState.SeekingIOS,t.eventCallback(o.PlayerEvent.Seek,{position:t.lastVerifiedPlaybackPosition,seekTarget:e}),t.lastVerifiedPlaybackPosition=e}},this.onTimeChanged=function(){void 0===t.maxTimeShift&&(t.maxTimeShift=t.getElement().currentTime)},this.delayedSeek=function(){t.numTimeChanged++,t.numTimeChanged<t.settings.IOS_MIN_TIMEUPDATES_AFTER_AD||(t.eventHandler.off(o.PlayerEvent.TimeChanged,t.delayedSeek),t.restoringPlaybackPosAfterQualitySwitch=!0,t.triggerSeek({time:t.currentTimeWas,issuer:"api",force:!0}))},this.onWebkitPlaybackTargetAvailabilityChanged=function(e){switch(e.availability){case"available":t.airplayAvailable=!0,t.eventCallback(o.PlayerEvent.AirplayAvailable);break;default:t.airplayAvailable=!1}},this.onWebkitPlaybackTargetIsWirelessChanged=function(e){t.eventCallback(o.PlayerEvent.AirplayChanged,{airplayEnabled:t.isAirplayActive(),time:t.video.currentTime})},this.context=e,this.isAtLiveEdge=!0,this.logger=e.logger,this.video=e.videoElement,this.config=e.config,this.eventHandler=e.eventHandler,this.settings=e.settings,this.hlsSeekingGlitchEventHandlers=[],this.downloadErrorHandler=null,this.currentVol=this.video.volume,this.originalCrossOriginAttributeValue=this.video.getAttribute("crossOrigin"),this.currentTimeShift=-(1/0),this.eventHandler.on(f.InternalEvent.PlaybackSpeedChanged,this.onInternalPlaybackSpeedChanged,!0),this.elementEvents=[{event:S.MediaElementEvent.pause,handler:function(){t.isAtLiveEdge=!1,t.ended||t.stateManager.transitionToPausedState(!0,t.lastPauseIssuer)}},{event:S.MediaElementEvent.ended,handler:function(){t.videoOnEnded()}},{event:S.MediaElementEvent.play,handler:function(){t.stateManager.stallExit(),t.restrictedInlinePlayback&&t.audio&&t.setVideoTime(),t.ended=!1,t.stateManager.transitionToPlayState(!0,t.lastPlayIssuer)}},{event:S.MediaElementEvent.canplay,handler:function(){t.eventHandler.dispatchEvent(f.InternalEvent.CanPlay),t.stateManager.stallExit()}},{event:S.MediaElementEvent.seeking,handler:function(){t.nativeSeekCalled=!0,t.videoOnSeeking(),t.getCurrentTime()>=t.getDuration()&&(t.videoOnSeeked(),t.videoOnEnded())}},{event:S.MediaElementEvent.seeked,handler:function(){t.videoOnSeeked(),t.restrictedInlinePlayback&&t.audio&&t.setVideoTime()}},{event:S.MediaElementEvent.loadeddata,handler:this.loadedDataHandler},{event:S.MediaElementEvent.loadedmetadata,handler:function(){t.loadedDataFallbackTimeoutID=window.setTimeout(t.loadedDataHandler,200)}},{event:S.MediaElementEvent.playing,handler:function(){t.stateManager.isStalled?(t.stateManager.stallExit(),t.stateManager.transitionToPlayingState(t.lastPlayIssuer)):t.stateManager.state===d.State.Stopped?t.onPlaybackStarted():t.stateManager.isPlaying()||(t.stateManager.transitionToPlayState(!0,t.lastPlayIssuer),t.stateManager.transitionToPlayingState(t.lastPlayIssuer))}},{event:S.MediaElementEvent.waiting,handler:function(){t.isAtLiveEdge=!1,t.stateManager.stallEnter()}},{event:S.MediaElementEvent.timeupdate,handler:function(){var e=t.getElement(),i=e.currentTime,n=Math.abs(i-t.lastLegalPlaybackPosition),r=t.settings.GLOBAL_DISABLE_SEEKING,a=t.lastVerifiedPlaybackPosition!==-1,s=a&&i>t.lastVerifiedPlaybackPosition+t.maxDelta;a&&i===t.lastVerifiedPlaybackPosition||t.isIllicitlySeeking||(r&&(!t.ignoreNextDelta||s)&&n>t.maxDelta&&t.nativeSeekCalled?(Promise.resolve(t.video.play())["catch"](function(e){t.logger.insane("Play promise rejected:"+e)}),t.ignoreNextDelta=!0,e.currentTime=t.lastLegalPlaybackPosition):(t.ignoreNextDelta=!1,t.currentDuration=e.duration,t.lastLegalPlaybackPosition=i,t.stateManager.stallExit(),t.stateManager.isSeeking()||t.stateManager.isTimeShifting()||!t.isPlaying()||t.eventCallback(o.PlayerEvent.TimeChanged,{time:i})),t.nativeSeekCalled=!1),t.currentVideoStream&&(t.currentVideoStream.width=t.video.videoWidth,t.currentVideoStream.height=t.video.videoHeight)}},{event:S.MediaElementEvent.error,handler:function(e){if(t.loadingDeferred.reject(),t.ignoreNextVideoError)t.ignoreNextVideoError=!1;else{t.logger.insane("video element has thrown an error",e.errorObject),clearTimeout(t.loadTimeoutID);var i=e.errorMessage||JSON.stringify(e);t.eventHandler.fireError(new c.PlayerError(h.ErrorCode.UNKNOWN,{exception:i}))}}},{event:S.MediaElementEvent.webkitpresentationmodechanged,handler:function(){t.video.isPictureInPicture()?(t.eventCallback(f.InternalEvent.ViewModeChanged,{to:l.ViewMode.PictureInPicture},void 0,!0),t.textTrackController&&t.textTrackController.enableNative()):(t.eventCallback(f.InternalEvent.ViewModeChanged,{from:l.ViewMode.PictureInPicture},void 0,!0),t.textTrackController&&t.textTrackController.disableNative())}},{elementSelector:function(e){return e.audioTracks},event:"addtrack",handler:function(e){t.isReady()&&t.eventCallback(o.PlayerEvent.AudioAdded,{track:t.convertAudioTrackNativeToApi(e.track)})}},{elementSelector:function(e){return e.audioTracks},event:"removetrack",handler:function(e){t.isReady()&&t.eventCallback(o.PlayerEvent.AudioRemoved,{track:t.convertAudioTrackNativeToApi(e.track)})}}],this.init()}return e.prototype.getElement=function(){return this.restrictedInlinePlayback&&this.audio?this.audio:this.video},e.prototype.setVideoTime=function(){var e=Date.now(),t=(e-this.lastTime)/1e3;t>=1/30&&(this.video.currentTime=this.audio.currentTime,this.lastTime=e),this.isPlaying()&&window.requestAnimationFrame(this.setVideoTime)},e.prototype.play=function(e){return this.controlPermitted?(this.lastPlayIssuer=e,this.getElement().play()):Promise.reject("Play control not permitted")},e.prototype.preload=function(){this.getElement().preload="auto"},e.prototype.pause=function(e){this.lastPauseIssuer=e;var t=this.getElement();this.controlPermitted&&this.loaded&&(this.stateManager.transitionToPausedState(!1,this.lastPauseIssuer),t.pause(),this.timeShiftChangeStarted=Date.now(),clearInterval(this.timeShiftChangeTimerID),this.timeShiftChangeTimerID=setInterval(this.updateCurrentTimeShift,250))},e.prototype.mute=function(e){this.getElement().muted||(this.getElement().muted=!0,this.eventCallback(o.PlayerEvent.Muted,{issuer:e||"api"}))},e.prototype.unmute=function(e){this.getElement().muted&&(this.getElement().muted=!1,this.eventCallback(o.PlayerEvent.Unmuted,{issuer:e||"api"}))},e.prototype.seek=function(e,t){return!(!this.isSeekingAllowed(e)||this.getCurrentTime()===e)&&(this.triggerSeekEvent(e,t),this.triggerSeek({time:e,issuer:t}))},e.prototype.seekForLive=function(e,t){this.timeShiftJumpStartPosition=this.getElement().currentTime,this.triggerTimeShiftEvent(e,t),this.triggerSeekForLive({time:e,issuer:t})},e.prototype.isSeekingAllowed=function(e){this.isInitialSeekToStartTime=this.isInitialSeek&&this.hasStartTime(e);var t=!this.settings.GLOBAL_DISABLE_SEEKING&&this.isSeekingEnabled(),i=this.isInitialSeekToStartTime||t;return i&&this.controlPermitted},e.prototype.isTimeShiftingAllowed=function(){var e=this.config.playback&&this.config.playback.hasOwnProperty("timeShift"),t=!e||Boolean(this.config.playback.timeShift);return this.isLive()&&t},e.prototype.correctSeekTimeIfOutOfBounds=function(e,t){if(e<t.start||e>t.end){var i=e;e=Math.max(e,t.start),e=Math.min(e,t.end),this.logger.debug("seek time out of seekable range ("+t.start+" to "+t.end+") correcting from "+i+" to "+e)}return e},e.prototype.triggerSeek=function(e){return!this.maybeDelaySeek(e)&&(this.stateManager.seekState=d.SeekState.Seeking,this.finishSeek(e),!0)},e.prototype.triggerSeekForLive=function(e){this.maybeDelaySeek(e,!0)||(this.stateManager.timeShiftState=d.TimeShiftState.Shifting,e.time<0&&(e.time=this.getSeekableRangeInternal().end+e.time,this.isAtLiveEdge=!1),this.finishSeek(e))},e.prototype.maybeDelaySeek=function(e,t){return void 0===t&&(t=!1),this.hasDataBeenLoaded?0===this.getDuration()&&(this.logger.insane("Delaying the seek until stream duration is known"),this.scheduleDelayedSeek(e,t,S.MediaElementEvent.durationchange),!0):(this.logger.insane("Delaying the seek until data is loaded"),this.scheduleDelayedSeek(e,t,S.MediaElementEvent.loadeddata),!0)},e.prototype.finishSeek=function(t){var i=t.issuer===s.ADVERTISING_ISSUER_NAME,n=this.adjustSeekTimeForBoundaries(t.time,this.getSeekableRangeInternal(),i);this.isInitialSeek=!1,this.ignoreNextDelta=this.ignoreNextDelta||this.isInitialSeekToStartTime||t.force,this.getElement().currentTime=parseFloat(n.toFixed(e.SEEK_TIME_DECIMAL_PLACES))},e.prototype.adjustSeekTimeForBoundaries=function(t,i,n){void 0===n&&(n=!1);var r=this.correctSeekTimeIfOutOfBounds(t,i);return n?t>=i.end&&(r=i.end-e.ADVERTISING_SEEK_TO_END_OFFSET):r=Math.min(r,i.end-this.settings.SEEK_TO_END_OFFSET),r},e.prototype.isSeekingEnabled=function(){var e=this.config&&this.config.hasOwnProperty("playback"),t=e?this.config.playback:{},i=t.hasOwnProperty("seeking");return!i||t.seeking},e.prototype.hasStartTime=function(e){var t=Boolean(this.context.sourceContext.source)?this.context.sourceContext.source:{},i=t.hasOwnProperty("options")&&t.options.hasOwnProperty("startTime");return i&&e===t.options.startTime},e.prototype.triggerSeekEvent=function(e,t){this.eventCallback(o.PlayerEvent.Seek,{position:this.getElement().currentTime,seekTarget:e,issuer:t||"api"})},e.prototype.triggerTimeShiftEvent=function(e,t){this.eventCallback(o.PlayerEvent.TimeShift,{target:e<0?this.timeShiftJumpStartPosition+e:e,position:this.timeShiftJumpStartPosition,issuer:t||"api"})},e.prototype.waitForOnSeeked=function(e){var t=this;return new Promise(function(i){var n=function(){e.removeEventListener(S.MediaElementEvent.seeked,n),i()};t.hlsSeekingGlitchEventHandlers.push({el:e,ev:S.MediaElementEvent.seeked,fn:n}),e.addEventListener(S.MediaElementEvent.seeked,n)})},e.prototype.waitForOnProgress=function(e,t){var i=this;return new Promise(function(n,r){var a=0,o=function(){var s=e.buffered,l=s.length>0?s.end(s.length-1):-(1/0);a+=isFinite(l)?1:0,a>i.settings.SAFARI_NUM_PROGRESS_EVENTS_AFTER_SEEK_GLITCH&&l<t?(e.removeEventListener(S.MediaElementEvent.progress,o),r(null)):l>=t&&(e.removeEventListener(S.MediaElementEvent.progress,o),n())};i.hlsSeekingGlitchEventHandlers.push({el:e,ev:"progress",fn:o}),e.addEventListener(S.MediaElementEvent.progress,o)})},e.prototype.verifyHLSPlaybackBuffer=function(e,t){var i=this;return this.type!==l.StreamType.Hls?Promise.resolve():this.waitForOnSeeked(e).then(function(){return i.waitForOnProgress(e,t)})["catch"](function(){throw i.logger.debug("seek to target time ("+t+") failed - trying to recover by seeking to "+(t+1)),null})},e.prototype.scheduleDelayedSeek=function(e,t,i){var n=this;void 0===t&&(t=!1);var r=this.getElement();this.lastDelayedSeekHandler&&(r.removeEventListener(S.MediaElementEvent.loadeddata,this.lastDelayedSeekHandler,!1),r.removeEventListener(S.MediaElementEvent.durationchange,this.lastDelayedSeekHandler,!1));var a=function(o){var s="number"==typeof o?o:e.time,l={time:s,issuer:e.issuer,force:e.force};n.verifyHLSPlaybackBuffer(r,e.time)["catch"](function(){return a(e.time+1)}),t?n.triggerSeekForLive(l):n.triggerSeek(l),r.removeEventListener(i,a,!1)};r.addEventListener(i,a,!1),this.lastDelayedSeekHandler=a},e.prototype.setAudio=function(e){var t=this.getAudio(),i=[],n=!1;if("audioTracks"in this.video&&"string"==typeof e){for(var r=0;r<this.video.audioTracks.length;r++){var a=this.video.audioTracks[r];a.id===e?(n=!0,a.enabled===!1&&(a.enabled=!0,this.eventCallback(o.PlayerEvent.AudioChanged,{targetAudio:{id:a.id,label:a.label,lang:a.language},sourceAudio:t,time:this.video.currentTime}))):i.push(a)}n&&(i.forEach(function(e){return e.enabled=!1}),i=null)}},e.prototype.setVolume=function(e,t){var i=this.getElement(),n=this.currentVol,r=Math.min(e/100,1);n!==r&&(this.currentVol=r,i.volume=r,this.eventCallback(o.PlayerEvent.VolumeChanged,{targetVolume:100*r,sourceVolume:100*n,issuer:t||"api"}))},e.prototype.startManifestTimeoutTimer=function(){var e=this;clearTimeout(this.loadTimeoutID),this.hasSourceBeenLoaded||(this.loadTimeoutID=setTimeout(function(){e.loadTimeoutID=null,e.hasSourceBeenLoaded||(e.type===l.StreamType.Hls?e.eventHandler.fireError(new c.PlayerError(h.ErrorCode.NETWORK_MANIFEST_DOWNLOAD_TIMEOUT)):e.type===l.StreamType.Progressive&&e.eventHandler.fireError(new c.PlayerError(h.ErrorCode.NETWORK_PROGRESSIVE_STREAM_DOWNLOAD_TIMEOUT)))},this.settings.XHR_TIMEOUT/2*1e3))},e.getContentDomain=function(e){var t=document.createElement("a");return t.href=e,""===t.host&&(t.href=t.href),t.hostname},e.prototype.load=function(t,i,n,r){var a=this;this.stateManager=this.context.serviceManager.get(v.ServiceName.PlayerStateService),this.stateManager.setMediaElement(this.getElement()),this.stateManager.seekState=d.SeekState.Seeked,this.video.setAttribute("preload","metadata"),this.type=this.context.sourceContext.streamType,this.sourceConfig=t,t.type&&(this.type=t.type),this.loaded===!0&&this.unload()["catch"](function(){}),this.hasSourceBeenLoaded=!1,this.hasDataBeenLoaded=!1,this.getElement().nativeMediaEventListener.reset(),this.isInitialSeek=!0,this.stateManager.seekState=d.SeekState.Seeked,this.ignoreNextVideoError=!1,t.hasOwnProperty("vr")&&t.vr&&Boolean(t.vr.restrictedInlinePlayback)?(this.restrictedInlinePlayback=!0,this.audio=T.Util.getVRAudioElement(),this.addEventListeners(this.audio)):(this.audio=null,this.restrictedInlinePlayback=!1,this.addEventListeners(this.video)),this.eventHandler.on(o.PlayerEvent.TimeChanged,this.onTimeChanged),n?this.settings.GLOBAL_DISABLE_SEEKING=n:this.settings.GLOBAL_DISABLE_SEEKING=!1,this.seekingTimeoutId>-1&&(clearTimeout(this.seekingTimeoutId),this.seekingTimeoutId=-1);var s="";t&&t.url&&("string"==typeof t.url?s=t.url:t.url.length>0&&(s=t.url[0].url));var u=window.location.hostname===e.getContentDomain(s);t.hasOwnProperty("vr")&&Boolean(t.vr)&&!u&&(this.originalCrossOriginAttributeValue=this.video.getAttribute("crossOrigin"),this.video.setAttribute("crossOrigin","anonymous")),this.video.eventHandler.reset(),this.loadingDeferred=new y.Deferred;var h=Promise.resolve();return this.type===l.StreamType.Hls?h=this.loadHls(t):this.type===l.StreamType.Progressive&&(h=this.loadProgressive(t,r).then(function(){return a.loadVideoElement()})),this.loadingDeferred.promise.then(function(){a.context.sourceContext.source=t.config}).then(function(){return h}).then(function(){return a.initializeThumbnails()}).then(function(){return a.initializeLoadedState(t)})},e.prototype.initializeLoadedState=function(e){this.currentSource=e,this.loaded=!0,this.lastLegalPlaybackPosition=0,this.ignoreNextDelta=!1},e.prototype.initializeThumbnails=function(){var e=this.context.sourceContext.source&&this.context.sourceContext.source.thumbnailTrack;if(e&&r.ModuleManager.has(a.ModuleName.Thumbnail)){var t=r.ModuleManager.get(a.ModuleName.Thumbnail);this.thumbPreviewer=new t.ThumbnailPreviewManager(this.context),this.thumbPreviewer.update(this.context.sourceContext.source.thumbnailTrack.url)}else this.thumbPreviewer=null},e.prototype.loadVideoElement=function(){this.config.tweaks.prevent_video_element_preloading||this.video.load()},e.prototype.setSourceAndLoadVideoElement=function(e,t){var i=this.setupVideoElement(e,t);return this.loadVideoElement(),i},e.prototype.loadHls=function(e){var t=this;"string"!=typeof e.url&&this.eventHandler.fireError(new c.PlayerError(h.ErrorCode.SOURCE_INVALID));var i=this.adjustUrlForQueryParams(e.url);return this.settings.NATIVE_HLS_PARSING?k.createHlsManifestController(this.context).then(function(r){t.hlsManifestController=r,t.settings.NATIVE_HLS_DOWNLOAD_ERROR_HANDLING&&(t.downloadErrorHandler=new b.HlsDownloadErrorHandler(t.context,r)),k.shouldUseServiceWorker()&&(i=E.URLHelper.appendQueryParametersToUrl(i,n({},t.context.config.tweaks.query_parameters,{"bitmovin-player-id":t.context.internalPlayerID})));var a=t.setSourceAndLoadVideoElement(e,i);return t.hlsManifestController.resolveMasterManifest(e.url).then(function(e){0!==e.indexOf("data")&&0!==e.indexOf("blob")||(a.src=e,t.loadVideoElement())})["catch"](function(){})}):(this.setupVideoElement(e,i),this.loadVideoElement(),Promise.resolve())},e.prototype.setupVideoElement=function(t,i){var n=this;if(t.config.drm&&t.config.drm.fairplay){var o=r.ModuleManager.get(a.ModuleName.DRM).FairplayHandler;this.fpsHandler=new o(this.context,this.video,t.config.drm.fairplay)}var s=e.createSourceElement(i,null);this.appendAndSetVideoStream(s,"0",t);var l={element:s,handler:function(e){n.logger.debug("native hls source has thrown an error"+e),clearTimeout(n.loadTimeoutID),n.loaded=!0,n.loadingDeferred.reject(),n.eventHandler.fireError(new c.PlayerError(h.ErrorCode.SOURCE_HLS_STREAM_ERROR))}};return this.sourceElementEventListeners.push(l),l.element.addEventListener(S.MediaElementEvent.error,l.handler),s},e.prototype.loadProgressive=function(t,i){var n,r,a=this,o=!1;if(Array.isArray(t.url)?r=t.url:(r=[{url:t.url,bitrate:0}],o=!0),!i){for(var s=0;s<r.length;s++)if(r[s].preferred===!0){i=s+"";break}i||(i="0")}var l=[],d=-1,u=null,p=null;this.availableVideoStreams=[];for(var s=0;s<r.length;s++){var g=r[s];if(e.isValidProgressiveSourceObject(g)){if(n=e.createSourceElement(this.adjustUrlForQueryParams(g.url),g.type),!o){if(!this.isMimeTypeSupported(g.type))continue;if(p){if(p!==g.type)continue}else p=g.type}if(this.addStreamToAvailableOnes(s+"",g),o)u=n,this.appendAndSetVideoStream(n,s+"",g);else{if(l.indexOf(g.type)>-1){this.logger.debug("Stream of mime type "+g.type+" already added.. continuing");continue}i===""+s?(u=n,d=g.bitrate,this.appendAndSetVideoStream(n,s+"",g),l.push(g.type)):d===g.bitrate&&(u=n,this.appendVideoStream(n),l.push(g.type))}this.restrictedInlinePlayback&&this.audio&&(this.audio.innerHTML=this.video.innerHTML)}}if(u){var v={element:u,handler:function(e){a.logger.debug("last/only source has thrown an error"+e),clearTimeout(a.loadTimeoutID),a.loaded=!0,a.loadingDeferred.reject(),a.eventHandler.fireError(new c.PlayerError(h.ErrorCode.SOURCE_PROGRESSIVE_STREAM_ERROR))}};this.sourceElementEventListeners.push(v),v.element.addEventListener(S.MediaElementEvent.error,v.handler),this.restrictedInlinePlayback&&this.audio&&this.audio.load()}return Promise.resolve()},e.isValidProgressiveSourceObject=function(e){return"object"==typeof e&&(e&&e.url&&""!==e.url)},e.prototype.appendAndSetVideoStream=function(e,t,i){this.video.appendChild(e),this.setCurrentVideoStream(t,i)},e.prototype.appendVideoStream=function(e){this.video.appendChild(e)},e.prototype.addStreamToAvailableOnes=function(e,t){var i={id:e};t.bitrate&&(i.bitrate=t.bitrate),i.label=""+(t.label||t.bitrate||"unknown"),this.availableVideoStreams.push(i)},e.prototype.setCurrentVideoStream=function(e,t){this.currentVideoStream={id:e},t.bitrate&&(this.currentVideoStream.bitrate=t.bitrate),this.currentVideoStream.label=""+(t.label||t.bitrate||"unknown")},e.prototype.isMimeTypeSupported=function(e){return!(this.video.canPlayType(e).length<=0)||(this.logger.debug("Mime type"+e+" not supported.. continuing"),!1)},e.createSourceElement=function(e,t){var i=document.createElement("source");return i.src=e,t&&(t.indexOf("/")<0&&(t="video/"+t),i.type=t),i},e.prototype.unload=function(e){if(void 0===e&&(e=!1),this.clearVideoElement(),this.loadingDeferred&&!e&&this.loadingDeferred.reject(),clearTimeout(this.loadedDataFallbackTimeoutID),clearTimeout(this.loadTimeoutID),clearTimeout(this.playbackTimeoutID),this.ended=!1,this.fpsHandler&&(this.fpsHandler.destroy(),this.fpsHandler=null),this.downloadErrorHandler&&(this.downloadErrorHandler.dispose(),this.downloadErrorHandler=null),this.hlsManifestController&&(this.hlsManifestController.dispose(),this.hlsManifestController=null),this.hlsSeekingGlitchEventHandlers.forEach(function(e){return e.el.removeEventListener(e.ev,e.fn)}),this.hlsSeekingGlitchEventHandlers=[],this.textTrackController&&!this.isProgressiveQualityChange&&(this.textTrackController.signalSourceChange(),this.textTrackController.dispose(),this.textTrackController=null),this.video.load(),this.restrictedInlinePlayback&&this.audio){for(this.audio.removeAttribute("src");this.audio.firstChild;)this.audio.removeChild(this.audio.firstChild);this.audio.load()}this.pause(),this.stateManager&&(this.stateManager.state=d.State.Stopped),this.ignoreNextVideoError=!0,this.restrictedInlinePlayback?this.audio&&this.removeEventListeners(this.audio):this.removeEventListeners(this.video),this.getElement().removeEventListener(S.MediaElementEvent.loadeddata,this.lastDelayedSeekHandler),this.getElement().removeEventListener(S.MediaElementEvent.durationchange,this.lastDelayedSeekHandler),this.eventHandler.off(o.PlayerEvent.TimeChanged,this.onTimeChanged),this.eventHandler.off(o.PlayerEvent.TimeChanged,this.delayedSeek),this.allowedToThrowEvents&&(this.currentVideoStream=null),this.loaded&&(this.loaded=!1,e||this.eventCallback(o.PlayerEvent.SourceUnloaded,{oldSource:this.currentSource
}));for(var t=0;t<this.sourceElementEventListeners.length;t++)try{var i=this.sourceElementEventListeners[t];i.element.removeEventListener("error",i.handler)}catch(n){}return Promise.resolve()},e.prototype.clearVideoElement=function(){u.VideoElementUtil.removeSource(this.video),null!=this.originalCrossOriginAttributeValue?this.video.setAttribute("crossOrigin",this.originalCrossOriginAttributeValue):this.video.removeAttribute("crossOrigin"),this.video.load()},e.prototype.isReady=function(){return this.restrictedInlinePlayback&&this.audio&&"readyState"in this.audio?0!==this.audio.readyState:!("readyState"in this.video)||0!==this.video.readyState},e.prototype.isLive=function(){return this.getElement().duration===1/0},e.prototype.isPlaying=function(){return this.stateManager.isPlaying()},e.prototype.isPaused=function(){return this.stateManager.isPaused()},e.prototype.hasEnded=function(){return this.ended},e.prototype.isMuted=function(){return this.getElement().muted},e.prototype.isStalled=function(){return this.stateManager.isStalled},e.prototype.getVolume=function(){return 100*this.getElement().volume},e.prototype.getDuration=function(){return this.getElement().duration},e.prototype.convertAudioTrackNativeToApi=function(e){for(var t=-1,i=0;i<this.video.audioTracks.length;++i)if(this.video.audioTracks[i]===e){t=i;break}var n={id:e.id||String(t),label:e.label,lang:e.language,getQualities:null},r=this.getLabelForAudio(n);return r&&"string"==typeof r&&(n.label=r),n},e.prototype.getAudio=function(){if(this.video.audioTracks)for(var e=0;e<this.video.audioTracks.length;++e)if(this.video.audioTracks[e].enabled)return this.convertAudioTrackNativeToApi(this.video.audioTracks[e]);return null},e.prototype.getAvailableAudio=function(){var e=[];try{if(this.video.audioTracks)for(var t=0;t<this.video.audioTracks.length;++t)e.push(this.convertAudioTrackNativeToApi(this.video.audioTracks[t]))}catch(i){}return e},e.prototype.getLabelForAudio=function(e){var t={id:e.id,lang:e.lang},i=this.getLabelingFunctionForAudio();return i(t)},e.prototype.getLabelingFunctionForAudio=function(){var t=this.context.sourceContext,i=t&&t.source&&t.source.labeling;return i&&i[this.type]&&i[this.type].tracks?"function"!=typeof i[this.type].tracks?e.getDefaultLabelForAudio:i[this.type].tracks:e.getDefaultLabelForAudio},e.getDefaultLabelForAudio=function(){return null},e.prototype.getDownloadedVideoData=function(){return this.type===l.StreamType.Progressive?this.currentVideoStream:this.hlsManifestController?this.hlsManifestController.getDownloadedVideoData():{id:"not available",bitrate:0,height:0,width:0,isAuto:!0}},e.prototype.getDownloadedAudioData=function(){return{id:"not available",bitrate:0,isAuto:this.type===l.StreamType.Progressive}},e.prototype.createVideoQualityObject=function(e){var t={};return t.id=e.id,t.label=e.label,e.width>1?t.width=e.width:this.currentVideoStream&&this.currentVideoStream.id===e.id&&(this.currentVideoStream.width>1?t.width=this.currentVideoStream.width:!isNaN(this.video.videoWidth)&&this.video.videoWidth>1&&(t.width=this.video.videoWidth)),e.height>1?t.height=e.height:this.currentVideoStream&&this.currentVideoStream.id===e.id&&(this.currentVideoStream.height>1?t.height=this.currentVideoStream.height:!isNaN(this.video.videoHeight)&&this.video.videoHeight>1&&(t.height=this.video.videoHeight)),void 0!==e.bitrate&&"unknown"!==e.bitrate&&(t.bitrate=e.bitrate),t},e.prototype.getPlaybackVideoData=function(){if(this.hlsManifestController){var e=this.hlsManifestController.getPlayingVideoData();if(e)return e}if(this.currentVideoStream){var t=this.createVideoQualityObject(this.currentVideoStream);return"progressive"!==this.type&&(t.id="not available"),t}return{id:"not available",bitrate:0,height:this.video.videoHeight,width:this.video.videoWidth}},e.prototype.getPlaybackAudioData=function(){return{id:"not available",bitrate:0}},e.prototype.updateCurrentTimeShift=function(){this.timeShiftChangeStarted=Date.now()},e.prototype.getMaxTimeShift=function(){var e=this.getSeekableRangeInternal();return this.isLive()&&e.start>=0?e.start-e.end:0},e.prototype.timeShift=function(e,t){if(this.isTimeShiftingAllowed()&&this.isTimeShiftNecessary(e))if(0===e){var i=this.getSeekableRangeInternal();i.end>=0&&(this.isAtLiveEdge=!0,this.seekForLive(i.end))}else this.seekForLive(e,t)},e.prototype.isTimeShiftNecessary=function(t){var i=Math.abs(Math.abs(t)-Math.abs(this.currentTimeShift)),n=Math.abs(t)<2*this.settings.SEEK_TO_END_OFFSET;return i>e.TIMESHIFT_THRESHOLD&&!(this.isAtLiveEdge&&n)},e.prototype.getTimeShift=function(){var e=this.getSeekableRangeInternal();return this.isLive()&&e.start>=0&&!this.isAtLiveEdge&&this.hasDataBeenLoaded?((!isFinite(this.currentTimeShift)||this.isPaused()||this.isStalled())&&(this.currentTimeShift=this.getElement().currentTime-e.end),this.currentTimeShift):0},e.prototype.getManifest=function(){return this.hlsManifestController?this.hlsManifestController.getManifest():null},e.prototype.getSnapshot=function(e,t){if(this.isPlaying()||this.isPaused()){var i=this.video.videoWidth,n=this.video.videoHeight;if(this.snapshotCanvas||(this.snapshotCanvas=document.createElement("canvas"),this.snapshotCanvas.id="snapshotHiddenCanvas"),!this.snapshotCanvas||!this.snapshotCanvas.getContext||!this.snapshotCanvas.getContext("2d"))return null;this.snapshotCanvas.height=n,this.snapshotCanvas.width=i,this.snapshotCanvasContext=this.snapshotCanvas.getContext("2d"),this.snapshotCanvasContext.drawImage(this.video.getWrappedElement(),0,0,i,n);var r=void 0;try{"image/jpeg"===e||"image/webp"===e?(Number(t)===t?(t<0||t>1)&&(t=1):t=1,r=this.snapshotCanvas.toDataURL(e,t)):r=this.snapshotCanvas.toDataURL(e,t)}catch(a){return a&&a.message?this.logger.debug("Snapshot acquisition failed: "+a.message):this.logger.debug("Snapshot acquisition failed"),null}return{height:n,width:i,data:r}}return null},e.prototype.setPlaybackSpeed=function(e){this.getElement().playbackRate=e},e.prototype.getPlaybackSpeed=function(){return this.getElement().playbackRate},e.prototype.permitControl=function(e){this.controlPermitted=e},e.prototype.resetTimeShift=function(){var e=this.getElement();if(this.currentTimeShift=-(1/0),this.isLive()&&this.isTimeShiftingAllowed()){var t=this.getSeekableRangeInternal();this.isAtLiveEdge=t.end-e.currentTime<2*this.settings.SEEK_TO_END_OFFSET}},e.prototype.addEventListeners=function(e){for(var t=0;t<this.elementEvents.length;t++){var i=this.elementEvents[t].elementSelector?this.elementEvents[t].elementSelector(e):e;i&&i.addEventListener(this.elementEvents[t].event,this.elementEvents[t].handler)}},e.prototype.removeEventListeners=function(e){for(var t=0;t<this.elementEvents.length;t++){var i=this.elementEvents[t].elementSelector?this.elementEvents[t].elementSelector(e):e;i&&i.removeEventListener(this.elementEvents[t].event,this.elementEvents[t].handler)}},e.prototype.getBufferLevel=function(e){var t={level:null,targetLevel:null,type:e,media:l.MediaType.Video},i=this.getElement(),n=i.currentTime;if(i.buffered&&i.buffered.length>0)for(var r=0;r<i.buffered.length;r++){var a=i.buffered.start(r),o=i.buffered.end(r);a>n||o<=n||(t.level=o-n,e===l.BufferType.BackwardDuration&&(t.level=n-a))}return t},e.prototype.removeSubtitle=function(e){e&&this.textTrackController&&this.textTrackController.removeSubtitle(e)},e.prototype.addSubtitle=function(e){return this.textTrackController?(this.removeSubtitle(e.id),e.kind="subtitles",this.textTrackController.addSubtitle(e)):Promise.reject(void 0)},e.prototype.listSubtitles=function(){return this.textTrackController?this.textTrackController.getAvailableSubtitles():[]},e.prototype.enableSubtitle=function(e){var t=this;return this.textTrackController?Promise.resolve().then(function(){return t.textTrackController.enableSubtitle(e)}):Promise.resolve(!1)},e.prototype.disableSubtitle=function(e){var t=this;return this.textTrackController?Promise.resolve().then(function(){return t.textTrackController.disableSubtitle(e)}):Promise.resolve(!1)},e.prototype.getThumbnail=function(e){return this.thumbPreviewer?this.thumbPreviewer.getThumbnail(e):null},e.prototype.init=function(){this.initAirplay()},e.prototype.adjustUrlForQueryParams=function(e){return E.URLHelper.appendQueryParametersToUrl(e,this.settings.QUERY_PARAMETERS)},e.prototype.onFullscreenEnter=function(e){this.textTrackController&&m.getCapabilities().isIOS&&!e.legacy&&this.textTrackController.enableNative()},e.prototype.onFullscreenExit=function(){this.textTrackController&&m.getCapabilities().isIOS&&this.textTrackController.disableNative()},e.prototype.getAvailableVideoQualities=function(){var e=this;return"progressive"!==this.type?[]:this.availableVideoStreams.map(function(t){return e.createVideoQualityObject(t)})},e.prototype.getBufferedRanges=function(){var e=[],t=this.getElement();if(t&&t.buffered)for(var i=0;i<t.buffered.length;i++)e.push({start:t.buffered.start(i),end:t.buffered.end(i)});return e},e.prototype.setVideoQuality=function(e){var t=this,i=this.getPlaybackSpeed(),r=this.availableVideoStreams.find(function(t){return t.id===e});if("progressive"===this.type&&r&&(!this.currentVideoStream||this.currentVideoStream.id!==e)){this.isProgressiveQualityChange=!0,this.currentTimeWas=this.getCurrentTime(),this.availableVideoStreams=[],this.allowedToThrowEvents=!1;var a=this.stateManager.state===d.State.Playing||this.stateManager.state===d.State.Play;this.stateManager.stallEnter(),this.unload(!0)["catch"](function(){});var s=this.createVideoQualityObject(r),l={sourceQuality:this.currentVideoStream,sourceQualityId:this.currentVideoStream?this.currentVideoStream.id:null,targetQuality:s,targetQualityId:s.id};this.eventHandler.one(o.PlayerEvent.StallEnded,function(){t.allowedToThrowEvents=!0,m.getCapabilities().isIOS||m.getCapabilities().isSafari?(t.numTimeChanged=0,t.eventHandler.on(o.PlayerEvent.TimeChanged,t.delayedSeek)):(t.numTimeChanged=1/0,t.delayedSeek()),a&&(t.play("internal")["catch"](function(){t.eventCallback(o.PlayerEvent.Warning,new p.PlayerWarning(g.WarningCode.PLAYBACK_COULD_NOT_BE_STARTED))}),t.stateManager.state=d.State.Playing)}),this.eventCallback(o.PlayerEvent.VideoQualityChanged,n({},l),!0),this.init(),this.load(this.sourceConfig,"",this.settings.GLOBAL_DISABLE_SEEKING,e).then(function(){t.setPlaybackSpeed(i),t.eventCallback(o.PlayerEvent.VideoDownloadQualityChange,n({},l),!0),t.eventCallback(o.PlayerEvent.VideoDownloadQualityChanged,n({},l),!0),t.eventCallback(o.PlayerEvent.VideoPlaybackQualityChanged,{sourceQuality:l.sourceQuality,targetQuality:l.targetQuality},!0)})}},e.prototype.setLogLevel=function(e){this.logger.setLogLevel(e)},e.prototype.initAirplay=function(){this.video.setAttribute("x-webkit-airplay","allow"),window.WebKitPlaybackTargetAvailabilityEvent&&(this.video.addEventListener(S.MediaElementEvent.webkitplaybacktargetavailabilitychanged,this.onWebkitPlaybackTargetAvailabilityChanged),this.video.addEventListener(S.MediaElementEvent.webkitcurrentplaybacktargetiswirelesschanged,this.onWebkitPlaybackTargetIsWirelessChanged))},e.prototype.isAirplayAvailable=function(){return this.airplayAvailable},e.prototype.isAirplayActive=function(){return this.video.isAirplayActive()},e.prototype.showAirplayTargetPicker=function(){this.isAirplayAvailable()&&(this.video.webkitShowPlaybackTargetPicker(),this.eventCallback(o.PlayerEvent.ShowAirplayTargetPicker))},e.prototype.getSeekableRangeInternal=function(){var e=this.video.seekable;if(e.length>0){var t={start:e.start(0),end:e.end(0)};return t.start=Math.max(0,t.start),t}return{start:-1,end:-1}},e.prototype.getSeekableRange=function(){return!this.isLive()||this.settings.ENABLE_SEEK_FOR_LIVE?this.getSeekableRangeInternal():{start:-1,end:-1}},e.prototype.createManifestApi=function(){return this.hlsManifestController?P.NativePlayerManifestApiFactory.create(this.hlsManifestController):null},e.prototype.release=function(){var e=this,t=this.unload()["catch"](function(){});return clearInterval(this.timeShiftChangeTimerID),clearTimeout(this.loadTimeoutID),this.video.removeEventListener(S.MediaElementEvent.webkitplaybacktargetavailabilitychanged,this.onWebkitPlaybackTargetAvailabilityChanged),this.video.removeEventListener(S.MediaElementEvent.webkitcurrentplaybacktargetiswirelesschanged,this.onWebkitPlaybackTargetIsWirelessChanged),this.eventHandler.off(f.InternalEvent.PlaybackSpeedChanged,this.onInternalPlaybackSpeedChanged),t=t.then(function(){e.type=null,e.config=null,e.eventHandler=null,e.settings=null,e.currentTimeWas=null,e.snapshotCanvas=null,e.snapshotCanvasContext=null,e.audio=null,e.video=null,e.lastPlayIssuer=null,e.lastPauseIssuer=null,e.currentSource=null,e.sourceConfig=null,e.currentVideoStream=null,e.availableVideoStreams=null,e.sourceElementEventListeners=null}),this.textTrackController&&this.textTrackController.dispose(),this.textTrackController=null,this.fpsHandler&&this.fpsHandler.dispose(),this.fpsHandler=null,this.downloadErrorHandler&&this.downloadErrorHandler.dispose(),this.downloadErrorHandler=null,this.hlsManifestController&&this.hlsManifestController.dispose(),this.hlsManifestController=null,this.thumbPreviewer&&this.thumbPreviewer.dispose(),this.thumbPreviewer=null,t},e.prototype.setQueryParameters=function(e){this.settings.QUERY_PARAMETERS=e},e.prototype.clearQueryParameters=function(){this.settings.QUERY_PARAMETERS=void 0},e.prototype.setAudioQuality=function(e){},e.prototype.setTargetBufferLevel=function(){},e.prototype.getAvailableAudioQualities=function(){return[]},e.prototype.getDroppedVideoFrames=function(){return 0},e.prototype.getTotalStalledTime=function(){return 0},e.prototype.updateCallback=function(e){},e.prototype.getAvailableSegments=function(){return{}},e.prototype.getLatency=function(){return null},e.prototype.setTargetLatency=function(e){},e.prototype.getTargetLatency=function(){return null},e.prototype.setCatchupConfig=function(e){},e.prototype.getCatchupConfig=function(){return null},e.prototype.setFallbackConfig=function(e){},e.prototype.getFallbackConfig=function(){return null},e.SEEK_TIME_DECIMAL_PLACES=2,e.ADVERTISING_SEEK_TO_END_OFFSET=.1,e.TIMESHIFT_THRESHOLD=.25,e}();t.NativePlayer=M},171:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(7),r=function(){function e(){}return e.prototype.getSupportedTechnologies=function(){return[{player:n.PlayerType.Native,streaming:n.StreamType.Progressive},{player:n.PlayerType.Native,streaming:n.StreamType.Hls},{player:n.PlayerType.Native,streaming:n.StreamType.Dash}]},e}();t.TechnologyChecker=r},364:function(e,t,i){"use strict";function n(e,t,i){for(var n=[],r=0,a=0;a<e.length;a++){var o=e[a];r=0;for(var s=0;s<o.timeline.length;s++){var l=o.timeline[s];if(l.playbackTime+l.duration>=i&&(n.push(l.uri),r++),r>t)break}}return n}var r=this&&this.__extends||function(){var e=function(t,i){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(t,i)};return function(t,i){function n(){this.constructor=t}e(t,i),t.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}();Object.defineProperty(t,"__esModule",{value:!0});var a,o=i(2),s=i(0),l=i(1),d=i(8),u=i(18),h=i(16),c=i(129),p=i(365),g=i(367),v=i(369),f=function(e){function t(t){var i=e.call(this,t)||this;return i.onLoadPlaylistError=function(e){return i.context.logger.debug("Error while loading the playlist ",e),null},a=o.ModuleManager.get(s.ModuleName.HLS).PlaylistUtils,i.hlsDownloadService=new g.HlsDownloadService(i.context),i.segmentTimelineController=new p.FallbackSegmentTimelineController,i}return r(t,e),t.prototype.init=function(){return Promise.resolve()},t.prototype.getDownloadedVideoData=function(){return{id:"not available",bitrate:0,height:0,width:0,isAuto:!0}},t.prototype.getPlayingVideoData=function(){return null},t.prototype.downloadMasterManifest=function(e){var t=this;return this.hlsDownloadService.downloadPlaylist(e,d.HttpRequestType.MANIFEST_HLS_MASTER).then(function(i){var n=t.registerMasterManifest(i,e),r=t.parsedManifest.playlists[0].uri;return t.registerFirstVariantPlaylist(r).then(function(i){return t.overrideManifestUrl(n,e,i)})})},t.prototype.registerFirstVariantPlaylist=function(e){var t=this.concatManifestUrl(e);return this.parsedManifest.playlists.forEach(function(i){i.uri===e&&(i.uri=t)}),this.hlsDownloadService.downloadPlaylist(t,d.HttpRequestType.MANIFEST_HLS_VARIANT).then(this.registerVariantPlaylist)},t.prototype.overrideManifestUrl=function(e,t,i){return"createObjectURL"in window.URL?this.getManifestUrl(e,t,i):(this.context.eventHandler.dispatchEvent(l.PlayerEvent.Warning,new u.PlayerWarning(h.WarningCode.SETUP_CREATE_OBJECT_URL_MISSING)),Promise.resolve(this.manifestUrl))},t.prototype.getManifestUrl=function(e,t,i){var n=this;if(a.isLive(i)){var r=v.replaceManifestUrls(t,e,this.settings.QUERY_PARAMETERS);return Promise.resolve(this.createDataUrlForManifest(r))}var o=v.replaceManifestUrls(t,e);return Promise.all(this.getMediaPlaylistPromises(o)).then(function(e){return e.filter(function(e){return Boolean(e)}).forEach(function(e){o=o.replace(e.mediaUrl,e.blobUrl)}),n.createDataUrlForManifest(o)})},t.prototype.getMediaPlaylistPromises=function(e){var t=this;return e.split("\n").map(function(e){return v.parseUrlFromLine(e)}).filter(function(e){return null!==e}).map(function(e){return t.getMediaPlaylistBlobUrlMapping(e)})},t.prototype.getMediaPlaylistBlobUrlMapping=function(e){var t=this;return this.hlsDownloadService.downloadPlaylist(e,d.HttpRequestType.MANIFEST_HLS_VARIANT).then(function(i){var n=v.replaceManifestUrls(e,i.body,t.se